diff --git a/sickbeard/providers/nzbx.py b/sickbeard/providers/nzbx.py index d4d0e97ecaab3aaab03939fdf8caec5cee256930..e9097593bfb409442e0745f2970680fae94114ad 100644 --- a/sickbeard/providers/nzbx.py +++ b/sickbeard/providers/nzbx.py @@ -18,7 +18,6 @@ import urllib import generic -from datetime import datetime import json import sickbeard @@ -26,9 +25,9 @@ from sickbeard import tvcache from sickbeard import logger from sickbeard import classes from sickbeard import show_name_helpers +from datetime import datetime from lib.unidecode import unidecode - class NzbXProvider(generic.NZBProvider): def __init__(self): @@ -51,15 +50,15 @@ class NzbXProvider(generic.NZBProvider): url = self.url + 'nzb?' + str(item['guid']) + '*|*' + urllib.quote_plus(title) return (title, url) - def _doSearch(self, search, show=None): + def _doSearch(self, search, show=None, age=0): params = {'age': sickbeard.USENET_RETENTION, 'completion': sickbeard.NZBX_COMPLETION, 'cat': 'tv-hd|tv-sd', 'limit': 250, 'q': search} - if not params['age']: - params['age'] = 500 + if age or not params['age']: + params['age'] = age if not params['completion']: params['completion'] = 100 @@ -71,7 +70,7 @@ class NzbXProvider(generic.NZBProvider): try: items = json.loads(data) except ValueError: - logger.log(u"Error trying to decode " + self.provider.name + " RSS feed", logger.ERROR) + logger.log(u"Error trying to decode nzbX json data", logger.ERROR) return[] results = [] @@ -79,32 +78,15 @@ class NzbXProvider(generic.NZBProvider): if item['name'] and item['guid']: results.append(item) else: - logger.log(u"Partial result from " + self.provider.name, logger.DEBUG) + logger.log(u"Partial result from nzbx", logger.DEBUG) return results def findPropers(self, date=None): - params = {'completion': 100, - 'cat': 'tv-hd|tv-sd', - 'age': 4, - 'q': '.proper.|.repack.'} - - url = self.url + 'api/sickbeard?' + urllib.urlencode(params) - logger.log(u"nzbX proper search url: " + url, logger.DEBUG) - - data = self.getURL(url) - try: - items = json.loads(data) - except ValueError: - logger.log(u"Error trying to decode " + self.provider.name + " RSS feed", logger.ERROR) - return[] - results = [] - for item in items: - if item['name'] and item['guid'] and item['postdate']: + for item in self._doSearch('.proper.|.repack.', age=4): + if item['postdate']: name, url = self._get_title_and_url(item) results.append(classes.Proper(name, url, datetime.fromtimestamp(item['postdate']))) - else: - logger.log(u"Partial result from " + self.provider.name, logger.DEBUG) return results @@ -114,19 +96,6 @@ class NzbXCache(tvcache.TVCache): tvcache.TVCache.__init__(self, provider) self.minTime = 20 - def _getRSSData(self): - params = {'q': '', - 'completion': sickbeard.NZBX_COMPLETION, - 'cat': 'tv-hd|tv-sd', - 'limit': 250} - - if not params['completion']: - params['completion'] = 100 - - url = self.provider.url + 'api/sickbeard?' + urllib.urlencode(params) - logger.log(u"nzbX cache update URL: " + url, logger.DEBUG) - return self.provider.getURL(url) - def _parseItem(self, item): title, url = self.provider._get_title_and_url(item) logger.log(u"Adding item from RSS to cache: " + title, logger.DEBUG) @@ -136,27 +105,16 @@ class NzbXCache(tvcache.TVCache): if not self.shouldUpdate(): return - data = self._getRSSData() - # as long as the http request worked we count this as an update - if data: - self.setLastUpdate() - else: + items = self.provider._doSearch('') + if not items: return + self.setLastUpdate() - # now that we've loaded the current RSS feed lets delete the old cache - logger.log(u"Clearing " + self.provider.name + " cache and updating with new information") + # now that we've got the latest releases lets delete the old cache + logger.log(u"Clearing nzbX cache and updating with new information") self._clearCache() - try: - items = json.loads(data) - except ValueError: - logger.log(u"Error trying to decode " + self.provider.name + " RSS feed", logger.ERROR) - return - for item in items: - if item['name'] and item['guid']: - self._parseItem(item) - else: - logger.log(u"Partial result from " + self.provider.name, logger.DEBUG) + self._parseItem(item) provider = NzbXProvider()