diff --git a/lib/jsonrpclib/__init__.py b/lib/jsonrpclib/__init__.py index 33f36604..92c29b39 100644 --- a/lib/jsonrpclib/__init__.py +++ b/lib/jsonrpclib/__init__.py @@ -2,5 +2,6 @@ from config import Config config = Config.instance() from history import History history = History.instance() +import jsonrpc from jsonrpc import Server, MultiCall, Fault from jsonrpc import ProtocolError, loads, dumps diff --git a/sickbeard/providers/btn.py b/sickbeard/providers/btn.py index 04078aec..a03dcb7f 100644 --- a/sickbeard/providers/btn.py +++ b/sickbeard/providers/btn.py @@ -190,7 +190,7 @@ class BTNProvider(generic.TorrentProvider): return (title, url) - def _get_season_search_strings(self, season, episode): + def _get_season_search_strings(self, ep_obj): search_params = [] name_exceptions = scene_exceptions.get_scene_exceptions(self.show.indexerid) + [self.show.name] @@ -210,17 +210,17 @@ class BTNProvider(generic.TorrentProvider): # Search for entire seasons: no need to do special things for air by date shows whole_season_params['category'] = 'Season' - whole_season_params['name'] = 'Season ' + str(season) + whole_season_params['name'] = 'Season ' + str(ep_obj.scene_season) search_params.append(whole_season_params) # Search for episodes in the season - search_params.append(self._get_episode_search_strings(season, episode)[0]) + search_params.append(self._get_episode_search_strings(ep_obj)[0]) return search_params - def _get_episode_search_strings(self, season, episode, add_string=''): + def _get_episode_search_strings(self, ep_obj, add_string=''): - if not episode: + if not ep_obj: return [{}] search_params = {'category': 'Episode'} @@ -233,20 +233,20 @@ class BTNProvider(generic.TorrentProvider): search_params['series'] = sanitizeSceneName(self.show.name) if self.show.air_by_date: - date_str = str(episode) + date_str = str(ep_obj.airdate) # BTN uses dots in dates, we just search for the date since that # combined with the series identifier should result in just one episode search_params['name'] = date_str.replace('-', '.') if self.show.sports: - date_str = str(episode) + date_str = str(ep_obj.airdate) # BTN uses dots in dates, we just search for the date since that # combined with the series identifier should result in just one episode search_params['name'] = date_str.replace('-', '.') else: # Do a general name search for the episode, formatted like SXXEYY - search_params['name'] = "S%02dE%02d" % (season, episode) + search_params['name'] = "S%02dE%02d" % (ep_obj.scene_season, ep_obj.scene_episode) to_return = [search_params] @@ -268,10 +268,10 @@ class BTNProvider(generic.TorrentProvider): return to_return - def _doGeneralSearch(self, search_string, show=None): + def _doGeneralSearch(self, search_string): # 'search' looks as broad is it can find. Can contain episode overview and title for example, # use with caution! - return self._doSearch({'search': search_string}, show=show) + return self._doSearch({'search': search_string}) def findPropers(self, search_date=None): results = [] diff --git a/sickbeard/providers/dtt.py b/sickbeard/providers/dtt.py index dba8849c..9d6bbf79 100644 --- a/sickbeard/providers/dtt.py +++ b/sickbeard/providers/dtt.py @@ -52,7 +52,7 @@ class DTTProvider(generic.TorrentProvider): def _dtt_show_id(self, show_name): return sanitizeSceneName(show_name).replace('.', '-').lower() - def _get_season_search_strings(self, season, episode): + def _get_season_search_strings(self, ep_obj): search_string = [] for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): @@ -61,8 +61,8 @@ class DTTProvider(generic.TorrentProvider): return search_string - def _get_episode_search_strings(self, season, episode, add_string=''): - return self._get_season_search_strings(season, episode) + def _get_episode_search_strings(self, ep_obj, add_string=''): + return self._get_season_search_strings(ep_obj) def _doSearch(self, search_params, show=None, age=None): diff --git a/sickbeard/providers/ezrss.py b/sickbeard/providers/ezrss.py index 719e523b..37043208 100644 --- a/sickbeard/providers/ezrss.py +++ b/sickbeard/providers/ezrss.py @@ -70,34 +70,34 @@ class EZRSSProvider(generic.TorrentProvider): return results - def _get_season_search_strings(self, season, episode): + def _get_season_search_strings(self, ep_obj): params = {} params['show_name'] = helpers.sanitizeSceneName(self.show.name, ezrss=True).replace('.', ' ').encode('utf-8') - params['season'] = season + params['season'] = ep_obj.scene_season - params['episode'] = self._get_episode_search_strings(season, episode)[0]['episode'] + params['episode'] = self._get_episode_search_strings(ep_obj)[0]['episode'] return [params] - def _get_episode_search_strings(self, season, episode, add_string=''): + def _get_episode_search_strings(self, ep_obj, add_string=''): params = {} - if not episode: + if not ep_obj: return params params['show_name'] = helpers.sanitizeSceneName(self.show.name, ezrss=True).replace('.', ' ').encode('utf-8') if self.show.air_by_date: - params['date'] = str(episode) + params['date'] = str(ep_obj.airdate) if self.show.sports: - params['date'] = str(episode) + params['date'] = str(ep_obj.airdate) else: - params['season'] = season - params['episode'] = episode + params['season'] = ep_obj.scene_season + params['episode'] = ep_obj.scene_episode return [params] diff --git a/sickbeard/providers/generic.py b/sickbeard/providers/generic.py index 01001b83..4f56bee1 100644 --- a/sickbeard/providers/generic.py +++ b/sickbeard/providers/generic.py @@ -149,7 +149,7 @@ class GenericProvider: data = self.getURL(result.url) - if data == None: + if data is None: return False # use the appropriate watch folder @@ -220,10 +220,10 @@ class GenericProvider: def _doSearch(self, search_params, show=None, age=None): return [] - def _get_season_search_strings(self, season, episode): + def _get_season_search_strings(self, episode): return [] - def _get_episode_search_strings(self, season, episode, add_string=''): + def _get_episode_search_strings(self, eb_obj, add_string=''): return [] def _get_title_and_url(self, item): @@ -260,10 +260,10 @@ class GenericProvider: logger.log(u'Searching "%s" for "%s" as "%s"' % (self.name, ep_obj.prettyName(), ep_obj.scene_prettyName())) if seasonSearch: - for curString in self._get_season_search_strings(ep_obj.scene_season, ep_obj.airdate if show.air_by_date else ep_obj.scene_episode): + for curString in self._get_season_search_strings(ep_obj): itemList += self._doSearch(curString) else: - for curString in self._get_episode_search_strings(ep_obj.scene_season, ep_obj.airdate if show.air_by_date else ep_obj.scene_episode): + for curString in self._get_episode_search_strings(ep_obj): itemList += self._doSearch(curString) for item in itemList: @@ -282,8 +282,8 @@ class GenericProvider: if not show.air_by_date: # this check is meaningless for non-season searches - if (parse_result.season_number != None and parse_result.season_number != season) or ( - parse_result.season_number == None and season != 1): + if (parse_result.season_number is not None and parse_result.season_number != season) or ( + parse_result.season_number is None and season != 1): logger.log(u"The result " + title + " doesn't seem to be a valid episode for season " + str( season) + ", ignoring", logger.DEBUG) continue @@ -334,8 +334,7 @@ class GenericProvider: logger.log(u"Found result " + title + " at " + url, logger.DEBUG) # make a result object - epObjs = [] - epObjs.append(epObj) + epObjs = [epObj] result = self.getResult(epObjs) result.url = url diff --git a/sickbeard/providers/hdtorrents.py b/sickbeard/providers/hdtorrents.py index 6b6d937b..cc65c171 100644 --- a/sickbeard/providers/hdtorrents.py +++ b/sickbeard/providers/hdtorrents.py @@ -110,40 +110,40 @@ class HDTorrentsProvider(generic.TorrentProvider): return True - def _get_season_search_strings(self, season, episode): + def _get_season_search_strings(self, ep_obj): search_string = {'Season': [], 'Episode': []} for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name + ' S%02d' % int(season) #1) showName SXX + ep_string = show_name + ' S%02d' % int(ep_obj.scene_season) #1) showName SXX search_string['Season'].append(ep_string) - search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(ep_obj)[0]['Episode'] return [search_string] - def _get_episode_search_strings(self, season, episode, add_string=''): + def _get_episode_search_strings(self, ep_obj, add_string=''): search_string = {'Episode': []} - if not episode: + if not ep_obj: return [] if self.show.air_by_date: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-', '|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-', '|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) elif self.show.sports: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-', '|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-', '|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ - sickbeard.config.naming_ep_type[2] % {'seasonnumber': season, - 'episodenumber': episode} + sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, + 'episodenumber': ep_obj.scene_episode} search_string['Episode'].append(re.sub('\s+', ' ', ep_string)) @@ -268,7 +268,7 @@ class HDTorrentsProvider(generic.TorrentProvider): return (title, url) - def getURL(self, url, post_data=None, headers=None): + def getURL(self, url, post_data=None, headers=None, json=False): if not self.session: self._doLogin() @@ -306,12 +306,12 @@ class HDTorrentsProvider(generic.TorrentProvider): return [] for sqlshow in sqlResults: - self.show = self.show = curshow = helpers.findCertainShow(sickbeard.showList, int(sqlshow["showid"])) + self.show = curshow = helpers.findCertainShow(sickbeard.showList, int(sqlshow["showid"])) curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) - searchString = self._get_episode_search_strings(curEp.scene_season, curEp.airdate if curshow.air_by_date else curEp.scene_episode, add_string='PROPER|REPACK') + searchString = self._get_episode_search_strings(curEp, add_string='PROPER|REPACK') - for item in self._doSearch(searchString[0], show=curshow): + for item in self._doSearch(searchString[0]): title, url = self._get_title_and_url(item) results.append(classes.Proper(title, url, datetime.datetime.today())) diff --git a/sickbeard/providers/iptorrents.py b/sickbeard/providers/iptorrents.py index c75b7c77..35b682d5 100644 --- a/sickbeard/providers/iptorrents.py +++ b/sickbeard/providers/iptorrents.py @@ -92,41 +92,41 @@ class IPTorrentsProvider(generic.TorrentProvider): return True - def _get_season_search_strings(self, season, episode): + def _get_season_search_strings(self, ep_obj): search_string = {'Season': [], 'Episode': []} for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name + ' S%02d' % int(season) #1) showName SXX + ep_string = show_name + ' S%02d' % int(ep_obj.scene_season) #1) showName SXX search_string['Season'].append(ep_string) - search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(ep_obj)[0]['Episode'] return [search_string] - def _get_episode_search_strings(self, season, episode, add_string=''): + def _get_episode_search_strings(self, ep_obj, add_string=''): search_string = {'Episode': []} - if not episode: + if not ep_obj: return [] if self.show.air_by_date: for show_name in set(allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-', '|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-', '|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) - if self.show.sports: + elif self.show.sports: for show_name in set(allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-', '|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-', '|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ - sickbeard.config.naming_ep_type[2] % {'seasonnumber': season, - 'episodenumber': episode} + ' %s' % add_string + sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, + 'episodenumber': ep_obj.scene_episode} + ' %s' % add_string search_string['Episode'].append(re.sub('\s+', ' ', ep_string)) @@ -216,7 +216,7 @@ class IPTorrentsProvider(generic.TorrentProvider): return (title, url) - def getURL(self, url, post_data=None, headers=None): + def getURL(self, url, post_data=None, headers=None, json=False): if not self.session: self._doLogin() @@ -257,11 +257,9 @@ class IPTorrentsProvider(generic.TorrentProvider): for sqlshow in sqlResults: self.show = curshow = helpers.findCertainShow(sickbeard.showList, int(sqlshow["showid"])) curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) - searchString = self._get_episode_search_strings(curEp.scene_season, - curEp.airdate if curshow.air_by_date else curEp.scene_episode, - add_string='PROPER|REPACK') + searchString = self._get_episode_search_strings(curEp, add_string='PROPER|REPACK') - for item in self._doSearch(searchString[0], show=curshow): + for item in self._doSearch(searchString[0]): title, url = self._get_title_and_url(item) results.append(classes.Proper(title, url, datetime.datetime.today())) diff --git a/sickbeard/providers/kat.py b/sickbeard/providers/kat.py index 2b6fc2f9..1d8aa422 100644 --- a/sickbeard/providers/kat.py +++ b/sickbeard/providers/kat.py @@ -139,7 +139,7 @@ class KATProvider(generic.TorrentProvider): quality = Quality.sceneQuality(os.path.basename(fileName)) if quality != Quality.UNKNOWN: break - if fileName != None and quality == Quality.UNKNOWN: + if fileName is not None and quality == Quality.UNKNOWN: quality = Quality.assumeQuality(os.path.basename(fileName)) if quality == Quality.UNKNOWN: @@ -164,43 +164,42 @@ class KATProvider(generic.TorrentProvider): logger.log(u"Failed parsing " + self.name + " Traceback: " + traceback.format_exc(), logger.ERROR) - def _get_season_search_strings(self, season, episode): + def _get_season_search_strings(self, ep_obj): search_string = {'Season': [], 'Episode': []} for show_name in set(allPossibleShowNames(self.show)): - ep_string = show_name + ' S%02d' % int(season) + ' -S%02d' % int(season) + 'E' + ' category:tv' #1) showName SXX -SXXE + ep_string = show_name + ' S%02d' % int(ep_obj.scene_season) + ' -S%02d' % int(ep_obj.scene_season) + 'E' + ' category:tv' #1) showName SXX -SXXE search_string['Season'].append(ep_string) - ep_string = show_name + ' Season ' + str(season) + ' -Ep*' + ' category:tv' #2) showName Season X + ep_string = show_name + ' Season ' + str(ep_obj.scene_season) + ' -Ep*' + ' category:tv' #2) showName Season X search_string['Season'].append(ep_string) - search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(ep_obj)[0]['Episode'] - def _get_episode_search_strings(self, season, episode, add_string=''): + def _get_episode_search_strings(self, ep_obj, add_string=''): search_string = {'Episode': []} if self.show.air_by_date: for show_name in set(allPossibleShowNames(self.show)): - ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-','|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-','|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) elif self.show.sports: for show_name in set(allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-', '|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-', '|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) else: for show_name in set(allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - sickbeard.config.naming_ep_type[2] % {'seasonnumber': season, - 'episodenumber': episode} + '|' + \ - sickbeard.config.naming_ep_type[0] % {'seasonnumber': season, - 'episodenumber': episode} + '|' + \ - sickbeard.config.naming_ep_type[3] % {'seasonnumber': season, - 'episodenumber': episode} + ' %s category:tv' % add_string + sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, + 'episodenumber': ep_obj.scene_episode} + '|' + \ + sickbeard.config.naming_ep_type[0] % {'seasonnumber': ep_obj.scene_season, + 'episodenumber': ep_obj.scene_episode} + '|' + \ + sickbeard.config.naming_ep_type[3] % {'seasonnumber': ep_obj.scene_season, + 'episodenumber': ep_obj.scene_episode} + ' %s category:tv' % add_string search_string['Episode'].append(re.sub('\s+', ' ', ep_string)) return [search_string] @@ -293,7 +292,7 @@ class KATProvider(generic.TorrentProvider): return (title, url) - def getURL(self, url, post_data=None, headers=None): + def getURL(self, url, post_data=None, headers=None, json=False): if not self.session: self.session = requests.Session() @@ -383,9 +382,9 @@ class KATProvider(generic.TorrentProvider): self.show = curshow = helpers.findCertainShow(sickbeard.showList, int(sqlshow["showid"])) curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) - searchString = self._get_episode_search_strings(curEp.scene_season, curEp.airdate if curshow.air_by_date else curEp.scene_episode, add_string='PROPER|REPACK') + searchString = self._get_episode_search_strings(curEp, add_string='PROPER|REPACK') - for item in self._doSearch(searchString[0], show=curshow): + for item in self._doSearch(searchString[0]): title, url = self._get_title_and_url(item) results.append(classes.Proper(title, url, datetime.datetime.today())) diff --git a/sickbeard/providers/newzbin.py b/sickbeard/providers/newzbin.py index b3bb418e..56653437 100644 --- a/sickbeard/providers/newzbin.py +++ b/sickbeard/providers/newzbin.py @@ -50,6 +50,9 @@ class NewzbinDownloader(urllib.FancyURLopener): if newzbinErrCode == 450: rtext = str(headers.getheader('X-DNZB-RText')) result = re.search("wait (\d+) seconds", rtext) + logger.log("Newzbin throttled our NZB downloading, pausing for " + result.group(1) + "seconds") + time.sleep(int(result.group(1))) + raise exceptions.NewzbinAPIThrottled() elif newzbinErrCode == 401: raise exceptions.AuthException("Newzbin username or password incorrect") @@ -57,13 +60,6 @@ class NewzbinDownloader(urllib.FancyURLopener): elif newzbinErrCode == 402: raise exceptions.AuthException("Newzbin account not premium status, can't download NZBs") - logger.log("Newzbin throttled our NZB downloading, pausing for " + result.group(1) + "seconds") - - time.sleep(int(result.group(1))) - - raise exceptions.NewzbinAPIThrottled() - - class NewzbinProvider(generic.NZBProvider): def __init__(self): @@ -232,7 +228,7 @@ class NewzbinProvider(generic.NZBProvider): return True - def getURL(self, url): + def getURL(self, url, post_data=None, headers=None, json=False): myOpener = classes.AuthURLOpener(sickbeard.NEWZBIN_USERNAME, sickbeard.NEWZBIN_PASSWORD) try: @@ -251,11 +247,11 @@ class NewzbinProvider(generic.NZBProvider): return data - def _get_season_search_strings(self, season, episode): - return ['^' + x for x in show_name_helpers.makeSceneSeasonSearchString(self.show, season, episode)] + def _get_season_search_strings(self, ep_obj): + return ['^' + x for x in show_name_helpers.makeSceneSeasonSearchString(self.show, ep_obj)] - def _get_episode_search_strings(self, season, episode, add_string=''): - return ['^' + x for x in show_name_helpers.makeSceneSearchString(self.show, season, episode)] + def _get_episode_search_strings(self, ep_obj, add_string=''): + return ['^' + x for x in show_name_helpers.makeSceneSearchString(self.show, ep_obj)] def _doSearch(self, searchStr, show=None, age=None): diff --git a/sickbeard/providers/newznab.py b/sickbeard/providers/newznab.py index f65bd767..68ae0be9 100644 --- a/sickbeard/providers/newznab.py +++ b/sickbeard/providers/newznab.py @@ -80,7 +80,7 @@ class NewznabProvider(generic.NZBProvider): def isEnabled(self): return self.enabled - def _get_season_search_strings(self, season, episode): + def _get_season_search_strings(self, ep_obj): to_return = [] @@ -94,36 +94,35 @@ class NewznabProvider(generic.NZBProvider): cur_params['q'] = helpers.sanitizeSceneName(cur_exception) # season - cur_params['season'] = str(season) + cur_params['season'] = str(ep_obj.scene_season) # episode - cur_params['episode'] = self._get_episode_search_strings(season, episode)[0]['ep'] + cur_params['episode'] = self._get_episode_search_strings(ep_obj)[0]['ep'] to_return.append(cur_params) return to_return - def _get_episode_search_strings(self, season, episode, add_string=''): + def _get_episode_search_strings(self, ep_obj, add_string=''): params = {} - if not episode: + if not ep_obj: return [params] # search params['q'] = helpers.sanitizeSceneName(self.show.name) + date_str = str(ep_obj.airdate) if self.show.air_by_date: - date_str = str(episode) - params['season'] = date_str.partition('-')[0] params['ep'] = date_str.partition('-')[2].replace('-', '/') -# elif self.show.sports: -# params['season'] -# params['ep'] + elif self.show.sports: + params['season'] = date_str.partition('-')[0] + params['ep'] = date_str.partition('-')[0] else: - params['season'] = season - params['ep'] = episode + params['season'] = ep_obj.scene_season + params['ep'] = ep_obj.scene_episode to_return = [params] @@ -144,8 +143,8 @@ class NewznabProvider(generic.NZBProvider): return to_return - def _doGeneralSearch(self, search_string, show=None): - return self._doSearch({'q': search_string}, show=show) + def _doGeneralSearch(self, search_string): + return self._doSearch({'q': search_string}) def _checkAuth(self): diff --git a/sickbeard/providers/nextgen.py b/sickbeard/providers/nextgen.py index 604d68f1..805830f8 100644 --- a/sickbeard/providers/nextgen.py +++ b/sickbeard/providers/nextgen.py @@ -96,7 +96,7 @@ class NextGenProvider(generic.TorrentProvider): if self.login_opener and self.last_login_check < (now - 3600): try: output = self.login_opener.open(self.urls['test']) - if self.loginCheckSuccess(output): + if self.loginSuccess(output): self.last_login_check = now return True else: @@ -131,41 +131,41 @@ class NextGenProvider(generic.TorrentProvider): logger.log(u'Failed to login:' + str(error), logger.ERROR) return False - def _get_season_search_strings(self, season, episode): + def _get_season_search_strings(self, ep_obj): search_string = {'Season': [], 'Episode': []} for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name + ' S%02d' % int(season) #1) showName SXX + ep_string = show_name + ' S%02d' % int(ep_obj.scene_season) #1) showName SXX search_string['Season'].append(ep_string) - search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(ep_obj)[0]['Episode'] return [search_string] - def _get_episode_search_strings(self, season, episode, add_string=''): + def _get_episode_search_strings(self, ep_obj, add_string=''): search_string = {'Episode': []} - if not episode: + if not ep_obj: return [] if self.show.air_by_date: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-', '|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-', '|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) elif self.show.sports: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-', '|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-', '|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ - sickbeard.config.naming_ep_type[2] % {'seasonnumber': season, - 'episodenumber': episode} + sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, + 'episodenumber': ep_obj.scene_episode} search_string['Episode'].append(re.sub('\s+', ' ', ep_string)) @@ -262,7 +262,7 @@ class NextGenProvider(generic.TorrentProvider): return title, url - def getURL(self, url, post_data=None, headers=None): + def getURL(self, url, post_data=None, headers=None, json=False): if not self.session: self._doLogin() @@ -305,9 +305,9 @@ class NextGenProvider(generic.TorrentProvider): for sqlshow in sqlResults: self.show = curshow = helpers.findCertainShow(sickbeard.showList, int(sqlshow["showid"])) curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) - searchString = self._get_episode_search_strings(curEp.scene_season, curEp.airdate if curshow.air_by_date else curEp.scene_episode, add_string='PROPER|REPACK') + searchString = self._get_episode_search_strings(curEp, add_string='PROPER|REPACK') - for item in self._doSearch(searchString[0], show=curshow): + for item in self._doSearch(searchString[0]): title, url = self._get_title_and_url(item) results.append(classes.Proper(title, url, datetime.datetime.today())) diff --git a/sickbeard/providers/nyaatorrents.py b/sickbeard/providers/nyaatorrents.py index 853dac4e..b7032bcd 100644 --- a/sickbeard/providers/nyaatorrents.py +++ b/sickbeard/providers/nyaatorrents.py @@ -58,13 +58,13 @@ class NyaaProvider(generic.TorrentProvider): results = generic.TorrentProvider.getSearchResults(self, show, season, ep_objs, seasonSearch, manualSearch) return results - def _get_season_search_strings(self, season, episode): + def _get_season_search_strings(self, ep_obj): names = [] names.extend(show_name_helpers.makeSceneshowSearchStrings(self.show)) return names - def _get_episode_search_strings(self, season, episode, add_string=''): - return self._get_season_search_strings(season, episode) + def _get_episode_search_strings(self, ep_obj, add_string=''): + return self._get_season_search_strings(ep_obj) def _doSearch(self, search_string, show=None, age=None): diff --git a/sickbeard/providers/nzbs_org_old.py b/sickbeard/providers/nzbs_org_old.py index 0f9835cd..c6afc979 100644 --- a/sickbeard/providers/nzbs_org_old.py +++ b/sickbeard/providers/nzbs_org_old.py @@ -53,11 +53,11 @@ class NZBsProvider(generic.NZBProvider): if sickbeard.NZBS_UID in (None, "") or sickbeard.NZBS_HASH in (None, ""): raise exceptions.AuthException("NZBs.org authentication details are empty, check your config") - def _get_season_search_strings(self, season, episode): - return ['^' + x for x in show_name_helpers.makeSceneSeasonSearchString(self.show, season, episode)] + def _get_season_search_strings(self, ep_obj): + return ['^' + x for x in show_name_helpers.makeSceneSeasonSearchString(self.show, ep_obj)] - def _get_episode_search_strings(self, season, episode, add_string=''): - return ['^' + x for x in show_name_helpers.makeSceneSearchString(self.show, season, episode)] + def _get_episode_search_strings(self, ep_obj, add_string=''): + return ['^' + x for x in show_name_helpers.makeSceneSearchString(self.show, ep_obj)] def _doSearch(self, curString, show=None, age=None): @@ -81,7 +81,7 @@ class NZBsProvider(generic.NZBProvider): # Pause to avoid 503's time.sleep(5) - if data == None: + if data is None: logger.log(u"Error trying to load NZBs.org RSS feed: " + searchURL, logger.ERROR) return [] @@ -125,7 +125,7 @@ class NZBsProvider(generic.NZBProvider): resultDate = datetime.datetime.strptime(match.group(1), "%a, %d %b %Y %H:%M:%S") - if date == None or resultDate > date: + if date is None or resultDate > date: results.append(classes.Proper(title, url, resultDate)) return results diff --git a/sickbeard/providers/nzbsrus.py b/sickbeard/providers/nzbsrus.py index a9004486..b3146ebc 100644 --- a/sickbeard/providers/nzbsrus.py +++ b/sickbeard/providers/nzbsrus.py @@ -42,11 +42,11 @@ class NZBsRUSProvider(generic.NZBProvider): if sickbeard.NZBSRUS_UID in (None, "") or sickbeard.NZBSRUS_HASH in (None, ""): raise exceptions.AuthException("NZBs'R'US authentication details are empty, check your config") - def _get_season_search_strings(self, season, episode): - return ['^' + x for x in show_name_helpers.makeSceneSeasonSearchString(self.show, season, episode)] + def _get_season_search_strings(self, ep_obj): + return ['^' + x for x in show_name_helpers.makeSceneSeasonSearchString(self.show, ep_obj)] - def _get_episode_search_strings(self, season, episode, add_string=''): - return ['^' + x for x in show_name_helpers.makeSceneSearchString(self.show, season, episode)] + def _get_episode_search_strings(self, ep_obj, add_string=''): + return ['^' + x for x in show_name_helpers.makeSceneSearchString(self.show, ep_obj)] def _doSearch(self, search, show=None, age=None): params = {'uid': sickbeard.NZBSRUS_UID, diff --git a/sickbeard/providers/omgwtfnzbs.py b/sickbeard/providers/omgwtfnzbs.py index 1eba778e..6e358631 100644 --- a/sickbeard/providers/omgwtfnzbs.py +++ b/sickbeard/providers/omgwtfnzbs.py @@ -85,11 +85,11 @@ class OmgwtfnzbsProvider(generic.NZBProvider): return True - def _get_season_search_strings(self, season, episode): - return [x for x in show_name_helpers.makeSceneSeasonSearchString(self.show, season, episode)] + def _get_season_search_strings(self, ep_obj): + return [x for x in show_name_helpers.makeSceneSeasonSearchString(self.show, ep_obj)] - def _get_episode_search_strings(self, season, episode, add_string=''): - return [x for x in show_name_helpers.makeSceneSearchString(self.show, season, episode)] + def _get_episode_search_strings(self, ep_obj, add_string=''): + return [x for x in show_name_helpers.makeSceneSearchString(self.show, ep_obj)] def _get_title_and_url(self, item): return (item['release'], item['getnzb']) diff --git a/sickbeard/providers/publichd.py b/sickbeard/providers/publichd.py index 50cedea2..6e8e21fc 100644 --- a/sickbeard/providers/publichd.py +++ b/sickbeard/providers/publichd.py @@ -72,44 +72,44 @@ class PublicHDProvider(generic.TorrentProvider): quality = Quality.sceneQuality(item[0]) return quality - def _get_season_search_strings(self, season, episode): + def _get_season_search_strings(self, ep_obj): search_string = {'Season': [], 'Episode': []} for show_name in set(allPossibleShowNames(self.show)): - ep_string = show_name + ' S%02d' % int(season) #1) showName SXX -SXXE + ep_string = show_name + ' S%02d' % int(ep_obj.scene_season) #1) showName SXX -SXXE search_string['Season'].append(ep_string) - ep_string = show_name + ' Season ' + str(season) #2) showName Season X + ep_string = show_name + ' Season ' + str(ep_obj.scene_season) #2) showName Season X search_string['Season'].append(ep_string) - search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(ep_obj)[0]['Episode'] return [search_string] - def _get_episode_search_strings(self, season, episode, add_string=''): + def _get_episode_search_strings(self, ep_obj, add_string=''): search_string = {'Episode': []} - if not episode: + if not ep_obj: return [] if self.show.air_by_date: for show_name in set(allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-', '|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-', '|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) elif self.show.sports: for show_name in set(allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-', '|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-', '|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) else: for show_name in set(allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - sickbeard.config.naming_ep_type[2] % {'seasonnumber': season, - 'episodenumber': episode} + sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, + 'episodenumber': ep_obj.scene_episode} for x in add_string.split('|'): to_search = re.sub('\s+', ' ', ep_string + ' %s' % x) @@ -197,7 +197,7 @@ class PublicHDProvider(generic.TorrentProvider): return (title, url) - def getURL(self, url, post_data=None, headers=None): + def getURL(self, url, post_data=None, headers=None, json=False): if not self.session: self.session = requests.Session() @@ -278,9 +278,9 @@ class PublicHDProvider(generic.TorrentProvider): self.show = curshow = helpers.findCertainShow(sickbeard.showList, int(sqlshow["showid"])) curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) - searchString = self._get_episode_search_strings(curEp.scene_season, curEp.airdate if curshow.air_by_date else curEp.scene_episode, add_string='PROPER|REPACK') + searchString = self._get_episode_search_strings(curEp, add_string='PROPER|REPACK') - for item in self._doSearch(searchString[0], show=curshow): + for item in self._doSearch(searchString[0]): title, url = self._get_title_and_url(item) results.append(classes.Proper(title, url, datetime.datetime.today())) diff --git a/sickbeard/providers/rsstorrent.py b/sickbeard/providers/rsstorrent.py index d852c6f2..52e79575 100644 --- a/sickbeard/providers/rsstorrent.py +++ b/sickbeard/providers/rsstorrent.py @@ -112,7 +112,7 @@ class TorrentRssProvider(generic.TorrentProvider): except Exception, e: return (False, 'Error when trying to load RSS: ' + ex(e)) - def getURL(self, url, post_data=None, headers=None): + def getURL(self, url, post_data=None, headers=None, json=False): if not self.session: self.session = requests.Session() diff --git a/sickbeard/providers/scc.py b/sickbeard/providers/scc.py index 4ff9efa7..e429ee13 100644 --- a/sickbeard/providers/scc.py +++ b/sickbeard/providers/scc.py @@ -99,41 +99,41 @@ class SCCProvider(generic.TorrentProvider): return True - def _get_season_search_strings(self, season, episode): + def _get_season_search_strings(self, ep_obj): search_string = {'Season': [], 'Episode': []} for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name + ' S%02d' % int(season) #1) showName SXX + ep_string = show_name + ' S%02d' % int(ep_obj.scene_season) #1) showName SXX search_string['Season'].append(ep_string) - search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(ep_obj)[0]['Episode'] return [search_string] - def _get_episode_search_strings(self, season, episode, add_string=''): + def _get_episode_search_strings(self, ep_obj, add_string=''): search_string = {'Episode': []} - if not episode: + if not ep_obj: return [] if self.show.air_by_date: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-', '|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-', '|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) elif self.show.sports: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-', '|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-', '|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ - sickbeard.config.naming_ep_type[2] % {'seasonnumber': season, - 'episodenumber': episode} + sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, + 'episodenumber': ep_obj.scene_episode} search_string['Episode'].append(re.sub('\s+', ' ', ep_string)) @@ -239,7 +239,7 @@ class SCCProvider(generic.TorrentProvider): return (title, url) - def getURL(self, url, post_data=None, headers=None): + def getURL(self, url, post_data=None, headers=None, json=False): if not self.session: self._doLogin() @@ -283,9 +283,9 @@ class SCCProvider(generic.TorrentProvider): self.show = curshow = helpers.findCertainShow(sickbeard.showList, int(sqlshow["showid"])) curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) - searchString = self._get_episode_search_strings(curEp.scene_season, curEp.airdate if curshow.air_by_date else curEp.scene_episode, add_string='PROPER|REPACK') + searchString = self._get_episode_search_strings(curEp, add_string='PROPER|REPACK') - for item in self._doSearch(searchString[0], show=curshow): + for item in self._doSearch(searchString[0]): title, url = self._get_title_and_url(item) results.append(classes.Proper(title, url, datetime.datetime.today())) diff --git a/sickbeard/providers/speedcd.py b/sickbeard/providers/speedcd.py index ef4ccba5..c5c1abd3 100644 --- a/sickbeard/providers/speedcd.py +++ b/sickbeard/providers/speedcd.py @@ -90,42 +90,42 @@ class SpeedCDProvider(generic.TorrentProvider): return True - def _get_season_search_strings(self, season, episode): + def _get_season_search_strings(self, ep_obj): #If Every episode in Season is a wanted Episode then search for Season first search_string = {'Season': [], 'Episode': []} for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name +' S%02d' % int(season) #1) showName SXX + ep_string = show_name +' S%02d' % int(ep_obj.scene_season) #1) showName SXX search_string['Season'].append(ep_string) #Building the search string with the episodes we need - search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(ep_obj)[0]['Episode'] return [search_string] - def _get_episode_search_strings(self, season, episode, add_string=''): + def _get_episode_search_strings(self, ep_obj, add_string=''): search_string = {'Episode': []} - if not episode: + if not ep_obj: return [] if self.show.air_by_date: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-', '|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-', '|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) elif self.show.sports: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-', '|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-', '|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): ep_string = show_name_helpers.sanitizeSceneName(show_name) +' '+ \ - sickbeard.config.naming_ep_type[2] % {'seasonnumber': season, 'episodenumber': episode} + sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} search_string['Episode'].append(re.sub('\s+', ' ', ep_string)) @@ -190,7 +190,7 @@ class SpeedCDProvider(generic.TorrentProvider): return (title, url) - def getURL(self, url, post_data=None, headers=None): + def getURL(self, url, post_data=None, headers=None, json=False): if not self.session: self._doLogin() @@ -236,9 +236,9 @@ class SpeedCDProvider(generic.TorrentProvider): self.show = curshow = helpers.findCertainShow(sickbeard.showList, int(sqlshow["showid"])) curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) - searchString = self._get_episode_search_strings(curEp.scene_season, curEp.airdate if curshow.air_by_date else curEp.scene_episode, add_string='PROPER|REPACK') + searchString = self._get_episode_search_strings(curEp, add_string='PROPER|REPACK') - for item in self._doSearch(searchString[0], show=curshow): + for item in self._doSearch(searchString[0]): title, url = self._get_title_and_url(item) results.append(classes.Proper(title, url, datetime.datetime.today())) diff --git a/sickbeard/providers/thepiratebay.py b/sickbeard/providers/thepiratebay.py index a9bd92b5..fc8e145e 100644 --- a/sickbeard/providers/thepiratebay.py +++ b/sickbeard/providers/thepiratebay.py @@ -148,7 +148,7 @@ class ThePirateBayProvider(generic.TorrentProvider): quality = Quality.sceneQuality(os.path.basename(fileName)) if quality != Quality.UNKNOWN: break - if fileName != None and quality == Quality.UNKNOWN: + if fileName is not None and quality == Quality.UNKNOWN: quality = Quality.assumeQuality(os.path.basename(fileName)) if quality == Quality.UNKNOWN: @@ -169,45 +169,45 @@ class ThePirateBayProvider(generic.TorrentProvider): return title - def _get_season_search_strings(self, season, episode): + def _get_season_search_strings(self, ep_obj): search_string = {'Season': [], 'Episode': []} for show_name in set(allPossibleShowNames(self.show)): - ep_string = show_name + ' S%02d' % int(season) #1) showName SXX + ep_string = show_name + ' S%02d' % int(ep_obj.scene_season) #1) showName SXX search_string['Season'].append(ep_string) - ep_string = show_name + ' Season ' + str(season) + ' -Ep*' #2) showName Season X + ep_string = show_name + ' Season ' + str(ep_obj.scene_season) + ' -Ep*' #2) showName Season X search_string['Season'].append(ep_string) - search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(ep_obj)[0]['Episode'] return [search_string] - def _get_episode_search_strings(self, season, episode, add_string=''): + def _get_episode_search_strings(self, ep_obj, add_string=''): search_string = {'Episode': []} if self.show.air_by_date: for show_name in set(allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-', '|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-', '|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) elif self.show.sports: for show_name in set(allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-', '|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-', '|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) else: for show_name in set(allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - sickbeard.config.naming_ep_type[2] % {'seasonnumber': season, - 'episodenumber': episode} + '|' + \ - sickbeard.config.naming_ep_type[0] % {'seasonnumber': season, - 'episodenumber': episode} + '|' + \ - sickbeard.config.naming_ep_type[3] % {'seasonnumber': season, - 'episodenumber': episode} + sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, + 'episodenumber': ep_obj.scene_episode} + '|' + \ + sickbeard.config.naming_ep_type[0] % {'seasonnumber': ep_obj.scene_season, + 'episodenumber': ep_obj.scene_episode} + '|' + \ + sickbeard.config.naming_ep_type[3] % {'seasonnumber': ep_obj.scene_season, + 'episodenumber': ep_obj.scene_episode} ep_string += ' %s' % add_string @@ -252,7 +252,7 @@ class ThePirateBayProvider(generic.TorrentProvider): continue #Accept Torrent only from Good People for every Episode Search - if sickbeard.THEPIRATEBAY_TRUSTED and re.search('(VIP|Trusted|Helper)', torrent.group(0)) == None: + if sickbeard.THEPIRATEBAY_TRUSTED and re.search('(VIP|Trusted|Helper)', torrent.group(0)) is None: logger.log(u"ThePirateBay Provider found result " + torrent.group( 'title') + " but that doesn't seem like a trusted result so I'm ignoring it", logger.DEBUG) continue @@ -285,7 +285,7 @@ class ThePirateBayProvider(generic.TorrentProvider): return (title, url) - def getURL(self, url, post_data=None, headers=None): + def getURL(self, url, post_data=None, headers=None, json=False): if not headers: headers = {} @@ -376,9 +376,9 @@ class ThePirateBayProvider(generic.TorrentProvider): self.show = curshow = helpers.findCertainShow(sickbeard.showList, int(sqlshow["showid"])) curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) - searchString = self._get_episode_search_strings(curEp.scene_season, curEp.airdate if curshow.air_by_date else curEp.scene_episode, add_string='PROPER|REPACK') + searchString = self._get_episode_search_strings(curEp, add_string='PROPER|REPACK') - for item in self._doSearch(searchString[0], show=curshow): + for item in self._doSearch(searchString[0]): title, url = self._get_title_and_url(item) results.append(classes.Proper(title, url, datetime.datetime.today())) diff --git a/sickbeard/providers/torrentday.py b/sickbeard/providers/torrentday.py index 582490db..59c142a0 100644 --- a/sickbeard/providers/torrentday.py +++ b/sickbeard/providers/torrentday.py @@ -112,41 +112,41 @@ class TorrentDayProvider(generic.TorrentProvider): return True - def _get_season_search_strings(self, season, episode): + def _get_season_search_strings(self, ep_obj): search_string = {'Season': [], 'Episode': []} for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name + ' S%02d' % int(season) #1) showName SXX + ep_string = show_name + ' S%02d' % int(ep_obj.scene_season) #1) showName SXX search_string['Season'].append(ep_string) - search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(ep_obj)[0]['Episode'] return [search_string] - def _get_episode_search_strings(self, season, episode, add_string=''): + def _get_episode_search_strings(self, ep_obj, add_string=''): search_string = {'Episode': []} - if not episode: + if not ep_obj: return [] if self.show.air_by_date: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-', '|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-', '|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) elif self.show.sports: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-', '|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-', '|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ - sickbeard.config.naming_ep_type[2] % {'seasonnumber': season, - 'episodenumber': episode} + sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, + 'episodenumber': ep_obj.scene_episode} search_string['Episode'].append(re.sub('\s+', ' ', ep_string)) @@ -214,7 +214,7 @@ class TorrentDayProvider(generic.TorrentProvider): return (title, url) - def getURL(self, url, post_data=None, headers=None): + def getURL(self, url, post_data=None, headers=None, json=False): if not self.session: self._doLogin() @@ -255,9 +255,9 @@ class TorrentDayProvider(generic.TorrentProvider): self.show = curshow = helpers.findCertainShow(sickbeard.showList, int(sqlshow["showid"])) curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) - searchString = self._get_episode_search_strings(curEp.scene_season, curEp.airdate if curshow.air_by_date else curEp.scene_episode, add_string='PROPER|REPACK') + searchString = self._get_episode_search_strings(curEp, add_string='PROPER|REPACK') - for item in self._doSearch(searchString[0], show=curshow): + for item in self._doSearch(searchString[0]): title, url = self._get_title_and_url(item) results.append(classes.Proper(title, url, datetime.datetime.today())) diff --git a/sickbeard/providers/torrentleech.py b/sickbeard/providers/torrentleech.py index 6cdd9178..41277cab 100644 --- a/sickbeard/providers/torrentleech.py +++ b/sickbeard/providers/torrentleech.py @@ -94,41 +94,41 @@ class TorrentLeechProvider(generic.TorrentProvider): return True - def _get_season_search_strings(self, season, episode): + def _get_season_search_strings(self, ep_obj): search_string = {'Season': [], 'Episode': []} for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name + ' S%02d' % int(season) #1) showName SXX + ep_string = show_name + ' S%02d' % int(ep_obj.scene_season) #1) showName SXX search_string['Season'].append(ep_string) - search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(ep_obj)[0]['Episode'] return [search_string] - def _get_episode_search_strings(self, season, episode, add_string=''): + def _get_episode_search_strings(self, ep_obj, add_string=''): search_string = {'Episode': []} - if not episode: + if not ep_obj: return [] if self.show.air_by_date: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-', '|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-', '|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) elif self.show.sports: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ - str(episode).replace('-', '|') + '|' + \ - episode.strftime('%b') + str(ep_obj.airdate).replace('-', '|') + '|' + \ + ep_obj.airdate.strftime('%b') search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ - sickbeard.config.naming_ep_type[2] % {'seasonnumber': season, - 'episodenumber': episode} + sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, + 'episodenumber': ep_obj.scene_episode} search_string['Episode'].append(re.sub('\s+', ' ', ep_string)) @@ -212,7 +212,7 @@ class TorrentLeechProvider(generic.TorrentProvider): return (title, url) - def getURL(self, url, post_data=None, headers=None): + def getURL(self, url, post_data=None, headers=None, json=False): if not self.session: self._doLogin() @@ -256,9 +256,9 @@ class TorrentLeechProvider(generic.TorrentProvider): self.show = curshow = helpers.findCertainShow(sickbeard.showList, int(sqlshow["showid"])) curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) - searchString = self._get_episode_search_strings(curEp.scene_season, curEp.airdate if curshow.air_by_date else curEp.scene_episode, add_string='PROPER|REPACK') + searchString = self._get_episode_search_strings(curEp, add_string='PROPER|REPACK') - for item in self._doSearch(searchString[0], show=curshow): + for item in self._doSearch(searchString[0]): title, url = self._get_title_and_url(item) results.append(classes.Proper(title, url, datetime.datetime.today())) diff --git a/sickbeard/show_name_helpers.py b/sickbeard/show_name_helpers.py index 9cd657f2..f4f62165 100644 --- a/sickbeard/show_name_helpers.py +++ b/sickbeard/show_name_helpers.py @@ -105,26 +105,26 @@ def makeSceneShowSearchStrings(show): return map(sanitizeSceneName, showNames) -def makeSceneSeasonSearchString(show, season, episode, extraSearchType=None): +def makeSceneSeasonSearchString(show, ep_obj, extraSearchType=None): myDB = db.DBConnection() if show.air_by_date: numseasons = 0 # the search string for air by date shows is just - seasonStrings = [season] + seasonStrings = [ep_obj.scene_season] elif show.sports: numseasons = 0 # the search string for air by date shows is just - seasonStrings = [season] + seasonStrings = [ep_obj.scene_season] else: numseasonsSQlResult = myDB.select( "SELECT COUNT(DISTINCT season) as numseasons FROM tv_episodes WHERE showid = ? and season != 0", [show.indexerid]) numseasons = int(numseasonsSQlResult[0][0]) - seasonStrings = ["S%02d" % int(season)] + seasonStrings = ["S%02d" % int(ep_obj.scene_season)] showNames = set(makeSceneShowSearchStrings(show)) @@ -143,12 +143,12 @@ def makeSceneSeasonSearchString(show, season, episode, extraSearchType=None): toReturn.append(curShow + "." + cur_season) # episode - toReturn.extend(makeSceneSearchString(show, season, episode)) + toReturn.extend(makeSceneSearchString(show, ep_obj)) return toReturn -def makeSceneSearchString(show, season, episode): +def makeSceneSearchString(show, ep_obj): myDB = db.DBConnection() numseasonsSQlResult = myDB.select( "SELECT COUNT(DISTINCT season) as numseasons FROM tv_episodes WHERE showid = ? and season != 0", @@ -160,13 +160,13 @@ def makeSceneSearchString(show, season, episode): numepisodes = int(numepisodesSQlResult[0][0]) # see if we should use dates instead of episodes - if show.air_by_date and episode != datetime.date.fromordinal(1): - epStrings = [str(episode)] - if show.sports and episode != datetime.date.fromordinal(1): - epStrings = [str(episode)] + if show.air_by_date and ep_obj.airdate != datetime.date.fromordinal(1): + epStrings = [str(ep_obj.airdate)] + elif show.sports and ep_obj.airdate != datetime.date.fromordinal(1): + epStrings = [str(ep_obj.scene_episode)] else: - epStrings = ["S%02iE%02i" % (int(season), int(episode)), - "%ix%02i" % (int(season), int(episode))] + epStrings = ["S%02iE%02i" % (int(ep_obj.scene_season), int(ep_obj.scene_episode)), + "%ix%02i" % (int(ep_obj.scene_season), int(ep_obj.scene_episode))] # for single-season shows just search for the show name -- if total ep count (exclude s0) is less than 11 # due to the amount of qualities and releases, it is easy to go over the 50 result limit on rss feeds otherwise diff --git a/sickbeard/tvcache.py b/sickbeard/tvcache.py index 33148e57..98ff6026 100644 --- a/sickbeard/tvcache.py +++ b/sickbeard/tvcache.py @@ -190,7 +190,7 @@ class TVCache(): return True - def _addCacheEntry(self, name, url): + def _addCacheEntry(self, name, url, quality=None): cacheDB = self._getDB() parse_result = None @@ -264,7 +264,8 @@ class TVCache(): curTimestamp = int(time.mktime(datetime.datetime.today().timetuple())) # get quality of release - quality = Quality.sceneQuality(name) + if quality is None: + quality = Quality.sceneQuality(name) if not isinstance(name, unicode): name = unicode(name, 'utf-8')