diff --git a/sickbeard/failedProcessor.py b/sickbeard/failedProcessor.py index ed7e5402..e022aa46 100644 --- a/sickbeard/failedProcessor.py +++ b/sickbeard/failedProcessor.py @@ -54,7 +54,7 @@ class FailedProcessor(object): parser = NameParser(False) try: - parsed = parser.parse(releaseName, True) + parsed = parser.parse(releaseName) except InvalidNameException: self._log(u"Error: release name is invalid: " + releaseName, logger.WARNING) raise exceptions.FailedProcessingFailed() diff --git a/sickbeard/helpers.py b/sickbeard/helpers.py index 28068738..51fd67a1 100644 --- a/sickbeard/helpers.py +++ b/sickbeard/helpers.py @@ -255,8 +255,12 @@ def download_file(url, filename): return True -def findCertainShow(showList, indexerid): - results = filter(lambda x: x.indexerid == indexerid, showList) +def findCertainShow(showList, indexerid=None): + if indexerid: + results = filter(lambda x: x.indexerid == indexerid, showList) + else: + results = filter(lambda x: x.indexerid == indexerid, showList) + if len(results) == 0: return None elif len(results) > 1: @@ -276,7 +280,7 @@ def makeDir(path): return True -def searchDBForShow(regShowName, indexer_id=None): +def searchDBForShow(regShowName): showNames = list(set([re.sub('[. -]', ' ', regShowName), regShowName])) myDB = db.DBConnection() @@ -319,38 +323,36 @@ def searchDBForShow(regShowName, indexer_id=None): return None -def searchIndexerForShowID(regShowName, indexer=None, indexer_id=None, ui=True): +def searchIndexerForShowID(regShowName, indexer=None, indexer_id=None, ui=None): showNames = list(set([re.sub('[. -]', ' ', regShowName), regShowName])) # Query Indexers for each search term and build the list of results for indexer in sickbeard.indexerApi().indexers if not indexer else [int(indexer)]: # Query Indexers for each search term and build the list of results lINDEXER_API_PARMS = sickbeard.indexerApi(indexer).api_params.copy() - if ui:lINDEXER_API_PARMS['custom_ui'] = classes.ShowListUI + if ui:lINDEXER_API_PARMS['custom_ui'] = ui t = sickbeard.indexerApi(indexer).indexer(**lINDEXER_API_PARMS) for name in showNames: logger.log(u"Trying to find " + name + " on " + sickbeard.indexerApi(indexer).name, logger.DEBUG) try: - if indexer_id: - search = t[indexer_id] - else: - search = t[name] - - if isinstance(search, dict): - search = [search] + search = t[indexer_id] if indexer_id else t[name] # add search results for i in range(len(search)): part = search[i] - seriesname = part['seriesname'].encode('UTF-8').lower() - name = name.encode('UTF-8').lower() + seriesname = part['seriesname'].lower() - if (name in seriesname) or (indexer_id is not None and part['id'] == indexer_id): + if str(name).lower() == seriesname or (indexer_id and part['id'] == indexer_id): return [sickbeard.indexerApi(indexer).config['id'], part['id']] - except KeyError:break - except Exception:continue + except KeyError: + if indexer: + break + else: + continue + except Exception: + continue def sizeof_fmt(num): ''' @@ -950,8 +952,6 @@ def _check_against_names(name, show): def get_show_by_name(name, showList, useIndexer=False): - logger.log(u"Trying to get the indexerid for " + name, logger.DEBUG) - if showList: for show in showList: if _check_against_names(name, show): diff --git a/sickbeard/name_parser/regexes.py b/sickbeard/name_parser/regexes.py index 45ae66cd..2e41d8bc 100644 --- a/sickbeard/name_parser/regexes.py +++ b/sickbeard/name_parser/regexes.py @@ -190,48 +190,49 @@ sports_regexs = [ ('sports_event', # Show.Name.123.Event.Nov.23rd.2010.Source.Quality.Etc-Group ''' - ^(?P.*?)[. _-]+ - (?P\d{1,3}\d{1,3}.*?)[. _-]+ - (?P.*?)[. _-]+ - (?P\d{1,2}).+ - (?P[a-zA-Z]{3,})[. _-]+ - (?P\d{4})[. _-]+ - (?P.*?(?.*?)\W + (?P\d{1,3})\W + (?P.*?)\W + (?P\d{1,2})(\w{2})\W + (?P\w{3,})\W + (?P\d{4})\W + (?P.*?)\W (?P.*?)$ '''), ('sports_event_without_parts', # Show.Name.Event.Nov.23rd.2010.Source.Quality.Etc-Group ''' - ^(?P.*?)[. _-]+ - (?P.*?)[. _-]+ - (?P\d{1,2}).+ - (?P[a-zA-Z]{3,})[. _-]+ - (?P\d{4})[. _-]+ - (?P.*?(?.*?)\W + (?P.*?)\W + (?P\d{1,2})(\w{2})\W + (?P\w{3,})\W + (?P\d{4})\W + (?P.*?)\W (?P.*?)$ + '''), ('sports_parts_without_event', # Show.Name.Event.Nov.23rd.2010.Source.Quality.Etc-Group ''' - ^(?P.*?)[. _-]+ - (?P\d{1,3}\d{1,3}.*?)[. _-]+ - (?P\d{1,2}).+ - (?P[a-zA-Z]{3,})[. _-]+ - (?P\d{4})[. _-]+ - (?P.*?(?.*?)\W + (?P\d{1,3})\W + (?P\d{1,2})(\w{2})\W + (?P\w{3,})\W + (?P\d{4})\W + (?P.*?)\W (?P.*?)$ '''), ('sports_date_only', # Show.Name.Event.Nov.23rd.2010.Source.Quality.Etc-Group ''' - ^(?P.*?)[. _-]+ - (?P\d{1,2})[. _-]+ - (?P[a-zA-Z]{3,})[. _-]+ - (?P\d{4})[. _-]+ - (?P.*?(?.*?)$ + ^(?P.*?)\W + (?P\d{1,2})(\w{2})\W + (?P\w{3,})\W + (?P\d{4})\W + (?P.*?)\W + (?P.*?)$ '''), ] \ No newline at end of file diff --git a/sickbeard/postProcessor.py b/sickbeard/postProcessor.py index 9464a90f..d6c17e94 100644 --- a/sickbeard/postProcessor.py +++ b/sickbeard/postProcessor.py @@ -538,7 +538,7 @@ class PostProcessor(object): # see if we can find the name on the Indexer for cur_name in name_list: - foundInfo = helpers.searchIndexerForShowID(cur_name) + foundInfo = helpers.searchIndexerForShowID(cur_name, ui=classes.ShowListUI) if foundInfo: indexer_id = foundInfo[1] self._log( diff --git a/sickbeard/providers/btn.py b/sickbeard/providers/btn.py index 715b7800..04078aec 100644 --- a/sickbeard/providers/btn.py +++ b/sickbeard/providers/btn.py @@ -37,7 +37,6 @@ import math class BTNProvider(generic.TorrentProvider): def __init__(self): - generic.TorrentProvider.__init__(self, "BTN") self.supportsBacklog = True @@ -191,58 +190,55 @@ class BTNProvider(generic.TorrentProvider): return (title, url) - def _get_season_search_strings(self, show, season, episode): - if not show: - return [] - + def _get_season_search_strings(self, season, episode): search_params = [] - name_exceptions = scene_exceptions.get_scene_exceptions(show.indexerid) + [show.name] + name_exceptions = scene_exceptions.get_scene_exceptions(self.show.indexerid) + [self.show.name] for name in name_exceptions: current_params = {} - if show.indexer == 1: - current_params['tvdb'] = show.indexerid - elif show.indexer == 2: - current_params['tvrage'] = show.indexerid + if self.show.indexer == 1: + current_params['tvdb'] = self.show.indexerid + elif self.show.indexer == 2: + current_params['tvrage'] = self.show.indexerid else: # Search by name if we don't have tvdb or tvrage id current_params['series'] = sanitizeSceneName(name) whole_season_params = current_params.copy() - partial_season_params = current_params.copy() + # 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) search_params.append(whole_season_params) # Search for episodes in the season - search_params.append(self._get_episode_search_strings(show, season, episode)[0]) + search_params.append(self._get_episode_search_strings(season, episode)[0]) return search_params - def _get_episode_search_strings(self, show, season, episode, add_string=''): + def _get_episode_search_strings(self, season, episode, add_string=''): if not episode: return [{}] search_params = {'category': 'Episode'} - if show.indexer == 1: - search_params['tvdb'] = show.indexerid - elif show.indexer == 2: - search_params['tvrage'] = show.indexerid + if self.show.indexer == 1: + search_params['tvdb'] = self.show.indexerid + elif self.show.indexer == 2: + search_params['tvrage'] = self.show.indexerid else: - search_params['series'] = sanitizeSceneName(show.name) + search_params['series'] = sanitizeSceneName(self.show.name) - if show.air_by_date: + if self.show.air_by_date: date_str = str(episode) # 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 show.sports: + if self.show.sports: date_str = str(episode) # BTN uses dots in dates, we just search for the date since that @@ -258,11 +254,11 @@ class BTNProvider(generic.TorrentProvider): if 'series' in search_params: # add new query string for every exception - name_exceptions = scene_exceptions.get_scene_exceptions(show.indexerid) + name_exceptions = scene_exceptions.get_scene_exceptions(self.show.indexerid) for cur_exception in name_exceptions: # don't add duplicates - if cur_exception == show.name: + if cur_exception == self.show.name: continue # copy all other parameters before setting the show name for this exception diff --git a/sickbeard/providers/dtt.py b/sickbeard/providers/dtt.py index 4c8ea86c..dba8849c 100644 --- a/sickbeard/providers/dtt.py +++ b/sickbeard/providers/dtt.py @@ -52,21 +52,21 @@ class DTTProvider(generic.TorrentProvider): def _dtt_show_id(self, show_name): return sanitizeSceneName(show_name).replace('.', '-').lower() - def _get_season_search_strings(self, show, season, episode): + def _get_season_search_strings(self, season, episode): search_string = [] - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): show_string = sanitizeSceneName(show_name).replace('.', '-').lower() search_string.append(show_string) return search_string - def _get_episode_search_strings(self, show, season, episode, add_string=''): - return self._get_season_search_strings(show, season, episode) + def _get_episode_search_strings(self, season, episode, add_string=''): + return self._get_season_search_strings(season, episode) def _doSearch(self, search_params, show=None, age=None): - # show_id = self._dtt_show_id(show.name) + # show_id = self._dtt_show_id(self.show.name) params = {"items": "all"} diff --git a/sickbeard/providers/ezrss.py b/sickbeard/providers/ezrss.py index e8a6833b..2b0dd608 100644 --- a/sickbeard/providers/ezrss.py +++ b/sickbeard/providers/ezrss.py @@ -61,7 +61,7 @@ class EZRSSProvider(generic.TorrentProvider): results = {} - if show.air_by_date or show.sports: + if self.show.air_by_date or show.sports: logger.log(self.name + u" doesn't support air-by-date or sports backloging because of limitations on their RSS search.", logger.WARNING) return results @@ -70,33 +70,30 @@ class EZRSSProvider(generic.TorrentProvider): return results - def _get_season_search_strings(self, show, season, episode): + def _get_season_search_strings(self, season, episode): params = {} - if not show: - return params - - params['show_name'] = helpers.sanitizeSceneName(show.name, ezrss=True).replace('.', ' ').encode('utf-8') + params['show_name'] = helpers.sanitizeSceneName(self.show.name, ezrss=True).replace('.', ' ').encode('utf-8') params['season'] = season - params['episode'] = self._get_episode_search_strings(show, season, episode)[0]['episode'] + params['episode'] = self._get_episode_search_strings(season, episode)[0]['episode'] return [params] - def _get_episode_search_strings(self, show, season, episode, add_string=''): + def _get_episode_search_strings(self, season, episode, add_string=''): params = {} if not episode: return params - params['show_name'] = helpers.sanitizeSceneName(show.name, ezrss=True).replace('.', ' ').encode('utf-8') + params['show_name'] = helpers.sanitizeSceneName(self.show.name, ezrss=True).replace('.', ' ').encode('utf-8') - if show.air_by_date: + if self.show.air_by_date: params['date'] = str(episode) - if show.sports: + if self.show.sports: params['date'] = str(episode) else: params['season'] = season diff --git a/sickbeard/providers/generic.py b/sickbeard/providers/generic.py index 2c7db25a..dbade510 100644 --- a/sickbeard/providers/generic.py +++ b/sickbeard/providers/generic.py @@ -21,14 +21,8 @@ from __future__ import with_statement import datetime import os -import sys import re import urllib -import urllib2 - -import itertools -import operator -import collections import urlparse import sickbeard @@ -36,13 +30,13 @@ import sickbeard from lib import requests from lib.feedparser import feedparser from sickbeard import helpers, classes, logger, db -from sickbeard.common import Quality, MULTI_EP_RESULT, SEASON_RESULT #, SEED_POLICY_TIME, SEED_POLICY_RATIO +from sickbeard.common import MULTI_EP_RESULT, SEASON_RESULT #, SEED_POLICY_TIME, SEED_POLICY_RATIO from sickbeard import tvcache from sickbeard import encodingKludge as ek from sickbeard.exceptions import ex from lib.hachoir_parser import createParser from sickbeard.name_parser.parser import NameParser, InvalidNameException -from sickbeard.common import Quality, Overview +from sickbeard.common import Quality class GenericProvider: NZB = "nzb" @@ -54,8 +48,8 @@ class GenericProvider: self.providerType = None self.name = name self.url = '' - self.session = None + self.show = None self.supportsBacklog = False self.cache = tvcache.TVCache(self) @@ -64,6 +58,7 @@ class GenericProvider: self.session.verify = False self.session.headers.update({'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36'}) + def getID(self): return GenericProvider.makeID(self.name) @@ -225,10 +220,10 @@ class GenericProvider: def _doSearch(self, search_params, show=None, age=None): return [] - def _get_season_search_strings(self, show, season, episode): + def _get_season_search_strings(self, season, episode): return [] - def _get_episode_search_strings(self, show, season, episode, add_string=''): + def _get_episode_search_strings(self, season, episode, add_string=''): return [] def _get_title_and_url(self, item): @@ -255,40 +250,24 @@ class GenericProvider: results = {} self._checkAuth() + self.show = show regexMode = 0 if show.sports: - regexMode = 1 - - # update cache - self.cache.updateCache() + regexMode = 2 for ep_obj in ep_objs: - # get scene season/episode info - scene_season = ep_obj.scene_season - scene_episode = ep_obj.scene_episode - if show.air_by_date or show.sports: - scene_episode = ep_obj.airdate - - if not seasonSearch: - logger.log(u'Searching "%s" for "%s" as "%s"' - % (self.name, ep_obj.prettyName(), ep_obj.scene_prettyName())) - - results = self.cache.searchCache(ep_obj, manualSearch) - logger.log(u"Cache results: " + str(results), logger.DEBUG) - logger.log(u"manualSearch: " + str(manualSearch), logger.DEBUG) - - # if we got some results then use them no matter what. - # OR - # return anyway unless we're doing a manual search - if results: - return results + if show.sports: + logger.log( + u'Searching "%s" for "%s" as "%s"' % (self.name, ep_obj.prettyName(), ep_obj.sports_prettyName())) + else: + 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(show, scene_season, scene_episode): + for curString in self._get_season_search_strings(ep_obj.scene_season, ep_obj.scene_episode): itemList += self._doSearch(curString, show=show) else: - for curString in self._get_episode_search_strings(show, scene_season, scene_episode): + for curString in self._get_episode_search_strings(ep_obj.scene_season, ep_obj.scene_episode): itemList += self._doSearch(curString, show=show) for item in itemList: diff --git a/sickbeard/providers/hdbits.py b/sickbeard/providers/hdbits.py index 0d9b4bbc..e33f3165 100644 --- a/sickbeard/providers/hdbits.py +++ b/sickbeard/providers/hdbits.py @@ -74,8 +74,8 @@ class HDBitsProvider(generic.TorrentProvider): # gather all episodes for season and then pick out the wanted episodes and compare to determin if we want whole season or just a few episodes if episode is None: - seasonEps = show.getAllEpisodes(season) - wantedEps = [x for x in seasonEps if show.getOverview(x.status) in (Overview.WANTED, Overview.QUAL)] + seasonEps = self.show.getAllEpisodes(season) + wantedEps = [x for x in seasonEps if self.show.getOverview(x.status) in (Overview.WANTED, Overview.QUAL)] else: wantedEps = [show.getEpisode(season, episode)] diff --git a/sickbeard/providers/hdtorrents.py b/sickbeard/providers/hdtorrents.py index 3c319034..827d474c 100644 --- a/sickbeard/providers/hdtorrents.py +++ b/sickbeard/providers/hdtorrents.py @@ -110,39 +110,37 @@ class HDTorrentsProvider(generic.TorrentProvider): return True - def _get_season_search_strings(self, show, season, episode): - if not show: - return [] + def _get_season_search_strings(self, season, episode): search_string = {'Season': [], 'Episode': []} - for show_name in set(show_name_helpers.allPossibleShowNames(show)): - ep_string = show_name + ' S%02d' % int(season) #1) ShowName SXX + for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): + ep_string = show_name + ' S%02d' % int(season) #1) showName SXX search_string['Season'].append(ep_string) - search_string['Episode'] = self._get_episode_search_strings(show, season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] return [search_string] - def _get_episode_search_strings(self, show, season, episode, add_string=''): + def _get_episode_search_strings(self, season, episode, add_string=''): search_string = {'Episode': []} if not episode: return [] - if show.air_by_date: - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + 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') search_string['Episode'].append(ep_string) - elif show.sports: - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + 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') search_string['Episode'].append(ep_string) else: - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + 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} @@ -177,7 +175,7 @@ class HDTorrentsProvider(generic.TorrentProvider): continue # Remove HDTorrents NEW list - split_data = data.partition('\n\n\n\n') + split_data = data.partition('\n\n\n\n') data = split_data[2] try: @@ -307,18 +305,13 @@ class HDTorrentsProvider(generic.TorrentProvider): if not sqlResults: return [] - for sqlShow in sqlResults: - curShow = helpers.findCertainShow(sickbeard.showList, int(sqlShow["showid"])) - curEp = curShow.getEpisode(int(sqlShow["season"]), int(sqlShow["episode"])) + for sqlshow in sqlResults: + curshow = helpers.findCertainshow(sickbeard.showList, int(sqlshow["showid"])) + curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) - season = curEp.scene_season - episode = curEp.scene_episode - if curShow.air_by_date or curShow.sports: - episode = curEp.airdate + searchString = self._get_episode_search_strings(curshow, curEp.scene_season, curEp.scene_episode, add_string='PROPER|REPACK') - searchString = self._get_episode_search_strings(curShow, season, episode, add_string='PROPER|REPACK') - - for item in self._doSearch(searchString[0], show=curShow): + for item in self._doSearch(searchString[0], show=curshow): 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 82f5e1d6..20836bb7 100644 --- a/sickbeard/providers/iptorrents.py +++ b/sickbeard/providers/iptorrents.py @@ -92,40 +92,38 @@ class IPTorrentsProvider(generic.TorrentProvider): return True - def _get_season_search_strings(self, show, season, episode): - if not show: - return [] + def _get_season_search_strings(self, season, episode): search_string = {'Season': [], 'Episode': []} - for show_name in set(show_name_helpers.allPossibleShowNames(show)): - ep_string = show_name + ' S%02d' % int(season) #1) ShowName SXX + for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): + ep_string = show_name + ' S%02d' % int(season) #1) showName SXX search_string['Season'].append(ep_string) - search_string['Episode'] = self._get_episode_search_strings(show, season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] return [search_string] - def _get_episode_search_strings(self, show, season, episode, add_string=''): + def _get_episode_search_strings(self, season, episode, add_string=''): search_string = {'Episode': []} if not episode: return [] - if show.air_by_date: - for show_name in set(allPossibleShowNames(show)): + 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') search_string['Episode'].append(ep_string) - if show.sports: - for show_name in set(allPossibleShowNames(show)): + if self.show.sports: + for show_name in set(allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ str(episode).replace('-', '|') + '|' + \ episode.strftime('%b') search_string['Episode'].append(ep_string) else: - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + 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 @@ -256,12 +254,12 @@ class IPTorrentsProvider(generic.TorrentProvider): if not sqlResults: return [] - for sqlShow in sqlResults: - curShow = helpers.findCertainShow(sickbeard.showList, int(sqlShow["showid"])) - curEp = curShow.getEpisode(int(sqlShow["season"]), int(sqlShow["episode"])) - searchString = self._get_episode_search_strings(curShow, curEp.scene_season, curEp.scene_episode, curShow.air_by_date or curShow.sports, add_string='PROPER|REPACK') + for sqlshow in sqlResults: + curshow = helpers.findCertainshow(sickbeard.showList, int(sqlshow["showid"])) + curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) + searchString = self._get_episode_search_strings(curshow, curEp.scene_season, curEp.scene_episode, curshow.air_by_date or curshow.sports, add_string='PROPER|REPACK') - for item in self._doSearch(searchString[0], show=curShow): + for item in self._doSearch(searchString[0], show=curshow): 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 0ef34a6a..73a53220 100644 --- a/sickbeard/providers/kat.py +++ b/sickbeard/providers/kat.py @@ -164,46 +164,36 @@ class KATProvider(generic.TorrentProvider): logger.log(u"Failed parsing " + self.name + " Traceback: " + traceback.format_exc(), logger.ERROR) - def _get_season_search_strings(self, show, season, episode): + def _get_season_search_strings(self, season, episode): search_string = {'Season': [], 'Episode': []} - if not show: - return [] - - self.show = show - - for show_name in set(allPossibleShowNames(show)): - ep_string = show_name + ' S%02d' % int(season) + ' -S%02d' % int(season) + 'E' + ' category:tv' #1) ShowName SXX -SXXE + 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 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(season) + ' -Ep*' + ' category:tv' #2) showName Season X search_string['Season'].append(ep_string) - search_string['Episode'] = self._get_episode_search_strings(show, season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] - def _get_episode_search_strings(self, show, season, episode, add_string=''): + def _get_episode_search_strings(self, season, episode, add_string=''): search_string = {'Episode': []} - if not show: - return [] - - self.show = show - - if show.air_by_date: - for show_name in set(allPossibleShowNames(show)): + 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') search_string['Episode'].append(ep_string) - if show.sports: - for show_name in set(allPossibleShowNames(show)): + elif self.show.sports: + for show_name in set(allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ str(episode).replace('-', '|') + '|' + \ episode.strftime('%b') search_string['Episode'].append(ep_string) else: - for show_name in set(allPossibleShowNames(show)): + for show_name in set(allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': season, 'episodenumber': episode} + '|' + \ @@ -389,18 +379,13 @@ class KATProvider(generic.TorrentProvider): if not sqlResults: return [] - for sqlShow in sqlResults: - curShow = helpers.findCertainShow(sickbeard.showList, int(sqlShow["showid"])) - curEp = curShow.getEpisode(int(sqlShow["season"]), int(sqlShow["episode"])) + for sqlshow in sqlResults: + curshow = helpers.findCertainshow(sickbeard.showList, int(sqlshow["showid"])) + curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) - season = curEp.scene_season - episode = curEp.scene_episode - if curShow.air_by_date or curShow.sports: - episode = curEp.airdate + searchString = self._get_episode_search_strings(curshow, curEp.scene_season, curEp.scene_episode, add_string='PROPER|REPACK') - searchString = self._get_episode_search_strings(curShow, season, episode, add_string='PROPER|REPACK') - - for item in self._doSearch(searchString[0], show=curShow): + for item in self._doSearch(searchString[0], show=curshow): 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 0c69f9e6..b3bb418e 100644 --- a/sickbeard/providers/newzbin.py +++ b/sickbeard/providers/newzbin.py @@ -251,11 +251,11 @@ class NewzbinProvider(generic.NZBProvider): return data - def _get_season_search_strings(self, show, season, episode): - return ['^' + x for x in show_name_helpers.makeSceneSeasonSearchString(show, season, episode)] + def _get_season_search_strings(self, season, episode): + return ['^' + x for x in show_name_helpers.makeSceneSeasonSearchString(self.show, season, episode)] - def _get_episode_search_strings(self, show, season, episode, add_string=''): - return ['^' + x for x in show_name_helpers.makeSceneSearchString(show, season, episode)] + def _get_episode_search_strings(self, season, episode, add_string=''): + return ['^' + x for x in show_name_helpers.makeSceneSearchString(self.show, season, episode)] def _doSearch(self, searchStr, show=None, age=None): diff --git a/sickbeard/providers/newznab.py b/sickbeard/providers/newznab.py index 8aafd6d3..e35f5689 100644 --- a/sickbeard/providers/newznab.py +++ b/sickbeard/providers/newznab.py @@ -80,15 +80,12 @@ class NewznabProvider(generic.NZBProvider): def isEnabled(self): return self.enabled - def _get_season_search_strings(self, show, season, episode): - - if not show: - return [{}] + def _get_season_search_strings(self, season, episode): to_return = [] # add new query strings for exceptions - name_exceptions = scene_exceptions.get_scene_exceptions(show.indexerid) + [show.name] + name_exceptions = scene_exceptions.get_scene_exceptions(self.show.indexerid) + [self.show.name] for cur_exception in name_exceptions: cur_params = {} @@ -100,13 +97,13 @@ class NewznabProvider(generic.NZBProvider): cur_params['season'] = str(season) # episode - cur_params['episode'] = self._get_episode_search_strings(show, season, episode)[0]['ep'] + cur_params['episode'] = self._get_episode_search_strings(season, episode)[0]['ep'] to_return.append(cur_params) return to_return - def _get_episode_search_strings(self, show, season, episode, add_string=''): + def _get_episode_search_strings(self, season, episode, add_string=''): params = {} @@ -114,14 +111,14 @@ class NewznabProvider(generic.NZBProvider): return [params] # search - params['q'] = helpers.sanitizeSceneName(show.name) + params['q'] = helpers.sanitizeSceneName(self.show.name) - if show.air_by_date: + if self.show.air_by_date: date_str = str(episode) params['season'] = date_str.partition('-')[0] params['ep'] = date_str.partition('-')[2].replace('-', '/') - elif show.sports: + elif self.show.sports: date_str = str(episode) params['season'] = date_str.partition('-')[0] @@ -136,11 +133,11 @@ class NewznabProvider(generic.NZBProvider): if 'q' in params: # add new query strings for exceptions - name_exceptions = scene_exceptions.get_scene_exceptions(show.indexerid) + name_exceptions = scene_exceptions.get_scene_exceptions(self.show.indexerid) for cur_exception in name_exceptions: # don't add duplicates - if cur_exception == show.name: + if cur_exception == self.show.name: continue cur_return = params.copy() diff --git a/sickbeard/providers/nextgen.py b/sickbeard/providers/nextgen.py index b3a90185..956eedcd 100644 --- a/sickbeard/providers/nextgen.py +++ b/sickbeard/providers/nextgen.py @@ -131,41 +131,38 @@ class NextGenProvider(generic.TorrentProvider): logger.log(u'Failed to login:' + str(error), logger.ERROR) return False - def _get_season_search_strings(self, show, season, episode): - - if not show: - return [] + def _get_season_search_strings(self, season, episode): search_string = {'Season': [], 'Episode': []} - for show_name in set(show_name_helpers.allPossibleShowNames(show)): - ep_string = show_name + ' S%02d' % int(season) #1) ShowName SXX + for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): + ep_string = show_name + ' S%02d' % int(season) #1) showName SXX search_string['Season'].append(ep_string) - search_string['Episode'] = self._get_episode_search_strings(show, season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] return [search_string] - def _get_episode_search_strings(self, show, season, episode, add_string=''): + def _get_episode_search_strings(self, season, episode, add_string=''): search_string = {'Episode': []} if not episode: return [] - if show.air_by_date: - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + 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') search_string['Episode'].append(ep_string) - elif show.sports: - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + 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') search_string['Episode'].append(ep_string) else: - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + 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} @@ -305,12 +302,12 @@ class NextGenProvider(generic.TorrentProvider): if not sqlResults: return [] - for sqlShow in sqlResults: - curShow = helpers.findCertainShow(sickbeard.showList, int(sqlShow["showid"])) - curEp = curShow.getEpisode(int(sqlShow["season"]), int(sqlShow["episode"])) - searchString = self._get_episode_search_strings(curShow, curEp.scene_season, curEp.scene_episode, add_string='PROPER|REPACK') + for sqlshow in sqlResults: + curshow = helpers.findCertainshow(sickbeard.showList, int(sqlshow["showid"])) + curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) + searchString = self._get_episode_search_strings(curshow, curEp.scene_season, curEp.scene_episode, add_string='PROPER|REPACK') - for item in self._doSearch(searchString[0], show=curShow): + for item in self._doSearch(searchString[0], show=curshow): 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 f835f81d..853dac4e 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, show, season, episode): + def _get_season_search_strings(self, season, episode): names = [] - names.extend(show_name_helpers.makeSceneShowSearchStrings(show)) + names.extend(show_name_helpers.makeSceneshowSearchStrings(self.show)) return names - def _get_episode_search_strings(self, show, season, episode, add_string=''): - return self._get_season_search_strings(show, season, episode) + def _get_episode_search_strings(self, season, episode, add_string=''): + return self._get_season_search_strings(season, episode) 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 fb99c1ac..0f9835cd 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, show, season, episode): - return ['^' + x for x in show_name_helpers.makeSceneSeasonSearchString(show, season, episode)] + def _get_season_search_strings(self, season, episode): + return ['^' + x for x in show_name_helpers.makeSceneSeasonSearchString(self.show, season, episode)] - def _get_episode_search_strings(self, show, season, episode, add_string=''): - return ['^' + x for x in show_name_helpers.makeSceneSearchString(show, season, episode)] + def _get_episode_search_strings(self, season, episode, add_string=''): + return ['^' + x for x in show_name_helpers.makeSceneSearchString(self.show, season, episode)] def _doSearch(self, curString, show=None, age=None): diff --git a/sickbeard/providers/nzbsrus.py b/sickbeard/providers/nzbsrus.py index 7dc9e8ff..a9004486 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, show, season, episode): - return ['^' + x for x in show_name_helpers.makeSceneSeasonSearchString(show, season, episode)] + def _get_season_search_strings(self, season, episode): + return ['^' + x for x in show_name_helpers.makeSceneSeasonSearchString(self.show, season, episode)] - def _get_episode_search_strings(self, show, season, episode, add_string=''): - return ['^' + x for x in show_name_helpers.makeSceneSearchString(show, season, episode)] + def _get_episode_search_strings(self, season, episode, add_string=''): + return ['^' + x for x in show_name_helpers.makeSceneSearchString(self.show, season, episode)] 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 2e789362..1eba778e 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, show, season, episode): - return [x for x in show_name_helpers.makeSceneSeasonSearchString(show, season, episode)] + def _get_season_search_strings(self, season, episode): + return [x for x in show_name_helpers.makeSceneSeasonSearchString(self.show, season, episode)] - def _get_episode_search_strings(self, show, season, episode, add_string=''): - return [x for x in show_name_helpers.makeSceneSearchString(show, season, episode)] + 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_title_and_url(self, item): return (item['release'], item['getnzb']) diff --git a/sickbeard/providers/publichd.py b/sickbeard/providers/publichd.py index db7d9cfd..66a30d0a 100644 --- a/sickbeard/providers/publichd.py +++ b/sickbeard/providers/publichd.py @@ -72,44 +72,41 @@ class PublicHDProvider(generic.TorrentProvider): quality = Quality.sceneQuality(item[0]) return quality - def _get_season_search_strings(self, show, season, episode): - - if not show: - return [] + def _get_season_search_strings(self, season, episode): search_string = {'Season': [], 'Episode': []} - for show_name in set(allPossibleShowNames(show)): - ep_string = show_name + ' S%02d' % int(season) #1) ShowName SXX -SXXE + for show_name in set(allPossibleShowNames(self.show)): + ep_string = show_name + ' S%02d' % int(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(season) #2) showName Season X search_string['Season'].append(ep_string) - search_string['Episode'] = self._get_episode_search_strings(show, season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] return [search_string] - def _get_episode_search_strings(self, show, season, episode, add_string=''): + def _get_episode_search_strings(self, season, episode, add_string=''): search_string = {'Episode': []} if not episode: return [] - if show.air_by_date: - for show_name in set(allPossibleShowNames(show)): + 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') search_string['Episode'].append(ep_string) - elif show.sports: - for show_name in set(allPossibleShowNames(show)): + elif self.show.sports: + for show_name in set(allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ str(episode).replace('-', '|') + '|' + \ episode.strftime('%b') search_string['Episode'].append(ep_string) else: - for show_name in set(allPossibleShowNames(show)): + for show_name in set(allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': season, 'episodenumber': episode} @@ -277,18 +274,18 @@ class PublicHDProvider(generic.TorrentProvider): if not sqlResults: return [] - for sqlShow in sqlResults: - curShow = helpers.findCertainShow(sickbeard.showList, int(sqlShow["showid"])) - curEp = curShow.getEpisode(int(sqlShow["season"]), int(sqlShow["episode"])) + for sqlshow in sqlResults: + curshow = helpers.findCertainshow(sickbeard.showList, int(sqlshow["showid"])) + curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) season = curEp.scene_season episode = curEp.scene_episode - if curShow.air_by_date or curShow.sports: + if curshow.air_by_date or curshow.sports: episode = curEp.airdate - searchString = self._get_episode_search_strings(curShow, season, episode, add_string='PROPER|REPACK') + searchString = self._get_episode_search_strings(curshow, curEp.scene_season, curEp.scene_episode, add_string='PROPER|REPACK') - for item in self._doSearch(searchString[0], show=curShow): + for item in self._doSearch(searchString[0], show=curshow): title, url = self._get_title_and_url(item) results.append(classes.Proper(title, url, datetime.datetime.today())) diff --git a/sickbeard/providers/scc.py b/sickbeard/providers/scc.py index d57a982e..04c7421f 100644 --- a/sickbeard/providers/scc.py +++ b/sickbeard/providers/scc.py @@ -99,41 +99,38 @@ class SCCProvider(generic.TorrentProvider): return True - def _get_season_search_strings(self, show, season, episode): - - if not show: - return [] + def _get_season_search_strings(self, season, episode): search_string = {'Season': [], 'Episode': []} - for show_name in set(show_name_helpers.allPossibleShowNames(show)): - ep_string = show_name + ' S%02d' % int(season) #1) ShowName SXX + for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): + ep_string = show_name + ' S%02d' % int(season) #1) showName SXX search_string['Season'].append(ep_string) - search_string['Episode'] = self._get_episode_search_strings(show, season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] return [search_string] - def _get_episode_search_strings(self, show, season, episode, add_string=''): + def _get_episode_search_strings(self, season, episode, add_string=''): search_string = {'Episode': []} if not episode: return [] - if show.air_by_date: - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + 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') search_string['Episode'].append(ep_string) - elif show.sports: - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + 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') search_string['Episode'].append(ep_string) else: - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + 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} @@ -279,18 +276,18 @@ class SCCProvider(generic.TorrentProvider): if not sqlResults: return [] - for sqlShow in sqlResults: - curShow = helpers.findCertainShow(sickbeard.showList, int(sqlShow["showid"])) - curEp = curShow.getEpisode(int(sqlShow["season"]), int(sqlShow["episode"])) + for sqlshow in sqlResults: + curshow = helpers.findCertainshow(sickbeard.showList, int(sqlshow["showid"])) + curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) season = curEp.scene_season episode = curEp.scene_episode - if curShow.air_by_date or curShow.sports: + if curshow.air_by_date or curshow.sports: episode = curEp.airdate - searchString = self._get_episode_search_strings(curShow, season, episode, add_string='PROPER|REPACK') + searchString = self._get_episode_search_strings(curshow, curEp.scene_season, curEp.scene_episode, add_string='PROPER|REPACK') - for item in self._doSearch(searchString[0], show=curShow): + for item in self._doSearch(searchString[0], show=curshow): 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 f585f750..e941f51a 100644 --- a/sickbeard/providers/speedcd.py +++ b/sickbeard/providers/speedcd.py @@ -90,43 +90,40 @@ class SpeedCDProvider(generic.TorrentProvider): return True - def _get_season_search_strings(self, show, season, episode): - - if not show: - return [] + def _get_season_search_strings(self, season, episode): #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(show)): - ep_string = show_name +' S%02d' % int(season) #1) ShowName SXX + for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): + ep_string = show_name +' S%02d' % int(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(show, season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] return [search_string] - def _get_episode_search_strings(self, show, season, episode, add_string=''): + def _get_episode_search_strings(self, season, episode, add_string=''): search_string = {'Episode': []} if not episode: return [] - if show.air_by_date: - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + 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') search_string['Episode'].append(ep_string) - elif show.sports: - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + 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') search_string['Episode'].append(ep_string) else: - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + 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} @@ -235,18 +232,18 @@ class SpeedCDProvider(generic.TorrentProvider): if not sqlResults: return [] - for sqlShow in sqlResults: - curShow = helpers.findCertainShow(sickbeard.showList, int(sqlShow["showid"])) - curEp = curShow.getEpisode(int(sqlShow["season"]), int(sqlShow["episode"])) + for sqlshow in sqlResults: + curshow = helpers.findCertainshow(sickbeard.showList, int(sqlshow["showid"])) + curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) season = curEp.scene_season episode = curEp.scene_episode - if curShow.air_by_date or curShow.sports: + if curshow.air_by_date or curshow.sports: episode = curEp.airdate - searchString = self._get_episode_search_strings(curShow, season, episode,add_string='PROPER|REPACK') + searchString = self._get_episode_search_strings(curshow, season, episode,add_string='PROPER|REPACK') - for item in self._doSearch(searchString[0], show=curShow): + for item in self._doSearch(searchString[0], show=curshow): 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 9aeb05e0..351a3cad 100644 --- a/sickbeard/providers/thepiratebay.py +++ b/sickbeard/providers/thepiratebay.py @@ -169,48 +169,38 @@ class ThePirateBayProvider(generic.TorrentProvider): return title - def _get_season_search_strings(self, show, season, episode): - - if not show: - return [] - - self.show = show + def _get_season_search_strings(self, season, episode): search_string = {'Season': [], 'Episode': []} - for show_name in set(allPossibleShowNames(show)): - ep_string = show_name + ' S%02d' % int(season) #1) ShowName SXX + for show_name in set(allPossibleShowNames(self.show)): + ep_string = show_name + ' S%02d' % int(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(season) + ' -Ep*' #2) showName Season X search_string['Season'].append(ep_string) - search_string['Episode'] = self._get_episode_search_strings(show, season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] return [search_string] - def _get_episode_search_strings(self, show, season, episode, add_string=''): + def _get_episode_search_strings(self, season, episode, add_string=''): search_string = {'Episode': []} - if not show: - return [] - - self.show = show - - if show.air_by_date: - for show_name in set(allPossibleShowNames(show)): + 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') search_string['Episode'].append(ep_string) - elif show.sports: - for show_name in set(allPossibleShowNames(show)): + elif self.show.sports: + for show_name in set(allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ str(episode).replace('-', '|') + '|' + \ episode.strftime('%b') search_string['Episode'].append(ep_string) else: - for show_name in set(allPossibleShowNames(show)): + for show_name in set(allPossibleShowNames(self.show)): ep_string = sanitizeSceneName(show_name) + ' ' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': season, 'episodenumber': episode} + '|' + \ @@ -382,18 +372,13 @@ class ThePirateBayProvider(generic.TorrentProvider): if not sqlResults: return [] - for sqlShow in sqlResults: - curShow = helpers.findCertainShow(sickbeard.showList, int(sqlShow["showid"])) - curEp = curShow.getEpisode(int(sqlShow["season"]), int(sqlShow["episode"])) + for sqlshow in sqlResults: + curshow = helpers.findCertainshow(sickbeard.showList, int(sqlshow["showid"])) + curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) - season = curEp.scene_season - episode = curEp.scene_episode - if curShow.air_by_date or curShow.sports: - episode = curEp.airdate + searchString = self._get_episode_search_strings(curshow, curEp.scene_season, curEp.scene_episode, add_string='PROPER|REPACK') - searchString = self._get_episode_search_strings(curShow, season, episode, add_string='PROPER|REPACK') - - for item in self._doSearch(searchString[0], show=curShow): + for item in self._doSearch(searchString[0], show=curshow): 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 bb9e4b53..f07f59b2 100644 --- a/sickbeard/providers/torrentday.py +++ b/sickbeard/providers/torrentday.py @@ -112,41 +112,38 @@ class TorrentDayProvider(generic.TorrentProvider): return True - def _get_season_search_strings(self, show, season, episode): - - if not show: - return [] + def _get_season_search_strings(self, season, episode): search_string = {'Season': [], 'Episode': []} - for show_name in set(show_name_helpers.allPossibleShowNames(show)): - ep_string = show_name + ' S%02d' % int(season) #1) ShowName SXX + for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): + ep_string = show_name + ' S%02d' % int(season) #1) showName SXX search_string['Season'].append(ep_string) - search_string['Episode'] = self._get_episode_search_strings(show, season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] return [search_string] - def _get_episode_search_strings(self, show, season, episode, add_string=''): + def _get_episode_search_strings(self, season, episode, add_string=''): search_string = {'Episode': []} if not episode: return [] - if show.air_by_date: - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + 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') search_string['Episode'].append(ep_string) - if show.sports: - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + 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') search_string['Episode'].append(ep_string) else: - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + 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} @@ -162,6 +159,9 @@ class TorrentDayProvider(generic.TorrentProvider): freeleech = '&free=on' if sickbeard.TORRENTDAY_FREELEECH else '' + if not self.session: + self._doLogin() + if not self._doLogin(): return [] @@ -251,18 +251,18 @@ class TorrentDayProvider(generic.TorrentProvider): if not sqlResults: return [] - for sqlShow in sqlResults: - curShow = helpers.findCertainShow(sickbeard.showList, int(sqlShow["showid"])) - curEp = curShow.getEpisode(int(sqlShow["season"]), int(sqlShow["episode"])) + for sqlshow in sqlResults: + curshow = helpers.findCertainshow(sickbeard.showList, int(sqlshow["showid"])) + curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) season = curEp.scene_season episode = curEp.scene_episode - if curShow.air_by_date or curShow.sports: + if curshow.air_by_date or curshow.sports: episode = curEp.airdate - searchString = self._get_episode_search_strings(curShow, season, episode, add_string='PROPER|REPACK') + searchString = self._get_episode_search_strings(curshow, curEp.scene_season, curEp.scene_episode, add_string='PROPER|REPACK') - for item in self._doSearch(searchString[0], show=curShow): + for item in self._doSearch(searchString[0], show=curshow): 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 9ba1d4f5..6ad957de 100644 --- a/sickbeard/providers/torrentleech.py +++ b/sickbeard/providers/torrentleech.py @@ -94,41 +94,38 @@ class TorrentLeechProvider(generic.TorrentProvider): return True - def _get_season_search_strings(self, show, season, episode): - - if not show: - return [] + def _get_season_search_strings(self, season, episode): search_string = {'Season': [], 'Episode': []} - for show_name in set(show_name_helpers.allPossibleShowNames(show)): - ep_string = show_name + ' S%02d' % int(season) #1) ShowName SXX + for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): + ep_string = show_name + ' S%02d' % int(season) #1) showName SXX search_string['Season'].append(ep_string) - search_string['Episode'] = self._get_episode_search_strings(show, season, episode)[0]['Episode'] + search_string['Episode'] = self._get_episode_search_strings(season, episode)[0]['Episode'] return [search_string] - def _get_episode_search_strings(self, show, season, episode, add_string=''): + def _get_episode_search_strings(self, season, episode, add_string=''): search_string = {'Episode': []} if not episode: return [] - if show.air_by_date: - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + 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') search_string['Episode'].append(ep_string) - if show.sports: - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + 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') search_string['Episode'].append(ep_string) else: - for show_name in set(show_name_helpers.allPossibleShowNames(show)): + 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} @@ -255,18 +252,13 @@ class TorrentLeechProvider(generic.TorrentProvider): if not sqlResults: return [] - for sqlShow in sqlResults: - curShow = helpers.findCertainShow(sickbeard.showList, int(sqlShow["showid"])) - curEp = curShow.getEpisode(int(sqlShow["season"]), int(sqlShow["episode"])) + for sqlshow in sqlResults: + curshow = helpers.findCertainshow(sickbeard.showList, int(sqlshow["showid"])) + curEp = curshow.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"])) - season = curEp.scene_season - episode = curEp.scene_episode - if curShow.air_by_date or curShow.sports: - episode = curEp.airdate + searchString = self._get_episode_search_strings(curshow, curEp.scene_season, curEp.scene_episode, add_string='PROPER|REPACK') - searchString = self._get_episode_search_strings(curShow, season, episode, add_string='PROPER|REPACK') - - for item in self._doSearch(searchString[0], show=curShow): + for item in self._doSearch(searchString[0], show=curshow): title, url = self._get_title_and_url(item) results.append(classes.Proper(title, url, datetime.datetime.today())) diff --git a/sickbeard/search.py b/sickbeard/search.py index 307fd0ec..8df01dd6 100644 --- a/sickbeard/search.py +++ b/sickbeard/search.py @@ -39,8 +39,7 @@ from sickbeard import encodingKludge as ek from sickbeard import providers from sickbeard import failed_history from sickbeard.exceptions import ex -from sickbeard.providers.generic import GenericProvider - +from sickbeard.providers.generic import GenericProvider, tvcache def _downloadResult(result): """ @@ -351,7 +350,7 @@ def isFirstBestMatch(result): def searchProviders(show, season, episode=None, manualSearch=False): logger.log(u"Searching for stuff we need from " + show.name + " season " + str(season)) - + curResults = {} foundResults = {} didSearch = False @@ -367,35 +366,56 @@ def searchProviders(show, season, episode=None, manualSearch=False): ep_obj = show.getEpisode(season, episode) wantedEps = [ep_obj] - for curProvider in providers.sortedProviderList(): + + for curProvider in providers.sortedProviderList(): if not curProvider.isActive(): continue - try: - curResults = curProvider.getSearchResults(show, season, wantedEps, seasonSearch, manualSearch) + # update cache + if manualSearch: + curProvider.cache.updateCache() - # make a list of all the results for this provider - for curEp in curResults: + # search cache first for wanted episodes + for ep_obj in wantedEps: + curResults.update(curProvider.cache.searchCache(ep_obj, manualSearch)) - # skip non-tv crap - curResults[curEp] = filter( - lambda x: show_name_helpers.filterBadReleases(x.name) and show_name_helpers.isGoodResult(x.name,show),curResults[curEp]) + # did we find our results ? + if curResults: + logger.log(u"Cache results: " + str(curResults), logger.DEBUG) + didSearch = True + break - if curEp in foundResults: - foundResults[curEp] += curResults[curEp] - else: - foundResults[curEp] = curResults[curEp] + if not curResults: + for curProvider in providers.sortedProviderList(): + if not curProvider.isActive(): + continue - except exceptions.AuthException, e: - logger.log(u"Authentication error: " + ex(e), logger.ERROR) - continue - except Exception, e: - logger.log(u"Error while searching " + curProvider.name + ", skipping: " + ex(e), logger.ERROR) - logger.log(traceback.format_exc(), logger.DEBUG) - continue + try: + if not curResults: + curResults = curProvider.getSearchResults(show, season, wantedEps, seasonSearch, manualSearch) - didSearch = True + # make a list of all the results for this provider + for curEp in curResults: + + # skip non-tv crap + curResults[curEp] = filter( + lambda x: show_name_helpers.filterBadReleases(x.name) and show_name_helpers.isGoodResult(x.name,show),curResults[curEp]) + + if curEp in foundResults: + foundResults[curEp] += curResults[curEp] + else: + foundResults[curEp] = curResults[curEp] + + except exceptions.AuthException, e: + logger.log(u"Authentication error: " + ex(e), logger.ERROR) + continue + except Exception, e: + logger.log(u"Error while searching " + curProvider.name + ", skipping: " + ex(e), logger.ERROR) + logger.log(traceback.format_exc(), logger.DEBUG) + continue + + didSearch = True if not didSearch: logger.log(u"No NZB/Torrent providers found or enabled in the sickbeard config. Please check your settings.", diff --git a/sickbeard/tv.py b/sickbeard/tv.py index 246aa1d4..58b0fa93 100644 --- a/sickbeard/tv.py +++ b/sickbeard/tv.py @@ -1815,6 +1815,16 @@ class TVEpisode(object): return self._format_pattern('%SN - %XMSx%0XME - %EN') + def sports_prettyName(self): + """ + Returns the name of this episode in a "pretty" human-readable format. Used for logging + and notifications and such. + + Returns: A string representing the episode's name and season/ep numbers + """ + + return self._format_pattern('%SN - %A-D - %EN') + def _ep_name(self): """ Returns the name of the episode to use during renaming. Combines the names of related episodes. diff --git a/sickbeard/tvcache.py b/sickbeard/tvcache.py index c5d6f948..5115a27c 100644 --- a/sickbeard/tvcache.py +++ b/sickbeard/tvcache.py @@ -183,175 +183,109 @@ class TVCache(): return True - def _addCacheEntry(self, name, url, season=None, episodes=None, indexer_id=0, quality=None, extraNames=[]): - - myDB = self._getDB() + def _addCacheEntry(self, name, url): + cacheDB = self._getDB() parse_result = None + from_cache = False + indexer_id = None # if we don't have complete info then parse the filename to get it - for curName in [name] + extraNames: + while(True): try: myParser = NameParser() - parse_result = myParser.parse(curName) + parse_result = myParser.parse(name) except InvalidNameException: - logger.log(u"Unable to parse the filename " + curName + " into a valid episode", logger.DEBUG) - continue + logger.log(u"Unable to parse the filename " + name + " into a valid episode", logger.DEBUG) + return None - if not parse_result: - logger.log(u"Giving up because I'm unable to parse this name: " + name, logger.DEBUG) - return None + if not parse_result: + logger.log(u"Giving up because I'm unable to parse this name: " + name, logger.DEBUG) + return None - if not parse_result.series_name: - logger.log(u"No series name retrieved from " + name + ", unable to cache it", logger.DEBUG) - return None + if not parse_result.series_name: + logger.log(u"No series name retrieved from " + name + ", unable to cache it", logger.DEBUG) + return None - indexer_lang = None - - if indexer_id: - # if we have only the indexer_id, use the database - showObj = helpers.findCertainShow(sickbeard.showList, indexer_id) - if showObj: - self.indexer = int(showObj.indexer) - indexer_lang = showObj.lang - else: - logger.log(u"We were given a Indexer ID " + str(indexer_id) + " but it doesn't match a show we have in our list, so leaving indexer_id empty",logger.DEBUG) - indexer_id = 0 - - # if no indexerID then fill out as much info as possible by searching the show name - if not indexer_id: - from_cache = False - - # check the name cache and see if we already know what show this is logger.log( - u"Checking the cache for Indexer ID of " + parse_result.series_name, + u"Checking the cahe for show:" + str(parse_result.series_name), logger.DEBUG) # remember if the cache lookup worked or not so we know whether we should bother updating it later - indexer_id = name_cache.retrieveNameFromCache(parse_result.series_name) - if indexer_id: - logger.log(u"Cache lookup found " + repr(indexer_id) + ", using that", logger.DEBUG) + cache_id = name_cache.retrieveNameFromCache(parse_result.series_name) + if cache_id: + logger.log(u"Cache lookup found Indexer ID:" + repr(indexer_id) + ", using that for " + parse_result.series_name, logger.DEBUG) from_cache = True + indexer_id = cache_id + break # if the cache failed, try looking up the show name in the database - if not indexer_id: + logger.log( + u"Checking the database for show:" + str(parse_result.series_name), + logger.DEBUG) + + showResult = helpers.searchDBForShow(parse_result.series_name) + if showResult: logger.log( - u"Checking the database for Indexer ID of " + str(parse_result.series_name), - logger.DEBUG) + u"Database lookup found Indexer ID:" + str(showResult[1]) + ", using that for " + parse_result.series_name, logger.DEBUG) + indexer_id = showResult[1] + break - showResult = helpers.searchDBForShow(parse_result.series_name) - if showResult: - logger.log( - u"" + parse_result.series_name + " was found to be show " + showResult[2] + " (" + str( - showResult[1]) + ") in our DB.", logger.DEBUG) - indexer_id = showResult[1] + # if we didn't find a Indexer ID return None + if not indexer_id: + return None - # if the database failed, try looking up the show name from scene exceptions list - if not indexer_id: - logger.log( - u"Checking the scene exceptions list for Indexer ID of " + parse_result.series_name, - logger.DEBUG) - sceneResult = sickbeard.scene_exceptions.get_scene_exception_by_name(parse_result.series_name) - if sceneResult: - logger.log( - u"" + str(parse_result.series_name) + " was found in scene exceptions list with Indexer ID: " + str(sceneResult), logger.DEBUG) - indexer_id = sceneResult - - # if the DB lookup fails then do a comprehensive regex search - if not indexer_id: - logger.log( - u"Checking the shows list for Indexer ID of " + str(parse_result.series_name), - logger.DEBUG) - for curShow in sickbeard.showList: - if show_name_helpers.isGoodResult(name, curShow, False): - logger.log(u"Successfully matched " + name + " to " + curShow.name + " from shows list", - logger.DEBUG) - indexer_id = curShow.indexerid - indexer_lang = curShow.lang - break - - # if the database failed, try looking up the show name from scene exceptions list - if not indexer_id: - logger.log( - u"Checking Indexers for Indexer ID of " + parse_result.series_name, - logger.DEBUG) - - # check indexers - try:indexerResult = helpers.searchIndexerForShowID(parse_result.series_name) - except:indexerResult = None - - if indexerResult: - logger.log( - u"" + str(parse_result.series_name) + " was found on " + str(sickbeard.indexerApi(indexerResult[0]).name) + " with Indexer ID: " + str(indexerResult[1]), logger.DEBUG) - indexer_id = indexerResult[1] - - # if indexer_id was anything but None (0 or a number) then - if not from_cache: - name_cache.addNameToCache(parse_result.series_name, indexer_id) - - # if we came out with indexer_id = None it means we couldn't figure it out at all, just use 0 for that - if indexer_id == None: - indexer_id = 0 - - # if we found the show then retrieve the show object - if indexer_id: - try: - showObj = helpers.findCertainShow(sickbeard.showList, indexer_id) - except (MultipleShowObjectsException): - showObj = None - if showObj: - self.indexer = int(showObj.indexer) - indexer_lang = showObj.lang + # if the show isn't in out database then return None + try:showObj = helpers.findCertainShow(sickbeard.showList, indexer_id) + except:return None # if we weren't provided with season/episode information then get it from the name that we parsed - if not season: - season = parse_result.season_number if parse_result.season_number != None else 1 - if not episodes: + season = None + episodes = None + myDB = db.DBConnection() + if parse_result.air_by_date: + sql_results = myDB.select("SELECT season, episode FROM tv_episodes WHERE showid = ? AND airdate = ?", + [showObj.indexerid, parse_result.air_date.toordinal()]) + if sql_results > 0: + season = int(sql_results[0]["season"]) + episodes = [int(sql_results[0]["episode"])] + elif parse_result.sports: + sql_results = myDB.select("SELECT season, episode FROM tv_episodes WHERE showid = ? AND airdate = ?", + [showObj.indexerid, parse_result.sports_date.toordinal()]) + if sql_results > 0: + season = int(sql_results[0]["season"]) + episodes = [int(sql_results[0]["episode"])] + else: + season = parse_result.season_number episodes = parse_result.episode_numbers - # if we have an air-by-date show then get the real season/episode numbers - if (parse_result.air_by_date or parse_result.sports) and indexer_id: - try: - lINDEXER_API_PARMS = sickbeard.indexerApi(self.indexer).api_params.copy() - if not (indexer_lang == "" or indexer_lang == "en" or indexer_lang == None): - lINDEXER_API_PARMS['language'] = indexer_lang + if not (season and episodes): + return None - t = sickbeard.indexerApi(self.indexer).indexer(**lINDEXER_API_PARMS) - - epObj = None - if parse_result.air_by_date: - epObj = t[indexer_id].airedOn(parse_result.air_date)[0] - elif parse_result.sports: - epObj = t[indexer_id].airedOn(parse_result.sports_date)[0] - - if epObj is None: - return None - - season = int(epObj["seasonnumber"]) - episodes = [int(epObj["episodenumber"])] - except sickbeard.indexer_episodenotfound: - logger.log(u"Unable to find episode with date " + str( - parse_result.air_date) + " for show " + parse_result.series_name + ", skipping", logger.WARNING) + # convert scene numbered releases before storing to cache + convertedEps = {} + for curEp in episodes: + epObj = showObj.getEpisode(season, curEp, sceneConvert=True) + if not epObj: return None - except sickbeard.indexer_error, e: - logger.log(u"Unable to contact " + sickbeard.indexerApi(self.indexer).name + ": " + ex(e), - logger.WARNING) - return None - - episodeText = "|" + "|".join(map(str, episodes)) + "|" + if not epObj.season in convertedEps: + convertedEps[epObj.season] = [] + convertedEps[epObj.season].append(epObj.episode) # get the current timestamp curTimestamp = int(time.mktime(datetime.datetime.today().timetuple())) - if not quality: - quality = Quality.sceneQuality(name) + # get quality of release + quality = Quality.sceneQuality(name) if not isinstance(name, unicode): name = unicode(name, 'utf-8') - myDB.action( - "INSERT INTO [" + self.providerID + "] (name, season, episodes, indexerid, url, time, quality) VALUES (?,?,?,?,?,?,?)", - [name, season, episodeText, indexer_id, url, curTimestamp, quality]) + for season, episodes in convertedEps.items(): + episodeText = "|" + "|".join(map(str, episodes)) + "|" + cacheDB.action( + "INSERT INTO [" + self.providerID + "] (name, season, episodes, indexerid, url, time, quality) VALUES (?,?,?,?,?,?,?)", + [name, season, episodeText, indexer_id, url, curTimestamp, quality]) def searchCache(self, episode, manualSearch=False): @@ -415,35 +349,34 @@ class TVCache(): curEp = int(curEp) curQuality = int(curResult["quality"]) - # items stored in cache are scene numbered, convert before lookups - epObj = showObj.getEpisode(curSeason, curEp, sceneConvert=True) - # if the show says we want that episode then add it to the list - if not showObj.wantEpisode(epObj.season, epObj.episode, curQuality, manualSearch): + if not showObj.wantEpisode(curSeason, curEp, curQuality, manualSearch): logger.log(u"Skipping " + curResult["name"] + " because we don't want an episode that's " + Quality.qualityStrings[curQuality], logger.DEBUG) else: + epObj = None if episode: epObj = episode - # build a result object - title = curResult["name"] - url = curResult["url"] + if epObj: + # build a result object + title = curResult["name"] + url = curResult["url"] - logger.log(u"Found result " + title + " at " + url) + logger.log(u"Found result " + title + " at " + url) - result = self.provider.getResult([epObj]) - result.url = url - result.name = title - result.quality = curQuality - result.content = self.provider.getURL(url) \ - if self.provider.providerType == sickbeard.providers.generic.GenericProvider.TORRENT \ - and not url.startswith('magnet') else None + result = self.provider.getResult([epObj]) + result.url = url + result.name = title + result.quality = curQuality + result.content = self.provider.getURL(url) \ + if self.provider.providerType == sickbeard.providers.generic.GenericProvider.TORRENT \ + and not url.startswith('magnet') else None - # add it to the list - if epObj not in neededEps: - neededEps[epObj] = [result] - else: - neededEps[epObj].append(result) + # add it to the list + if epObj not in neededEps: + neededEps[epObj] = [result] + else: + neededEps[epObj].append(result) return neededEps diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py index dab4fef7..7a81316c 100644 --- a/sickbeard/webserve.py +++ b/sickbeard/webserve.py @@ -2064,7 +2064,7 @@ class NewHomeAddShows: # default to TVDB if indexer was not detected if show_name and (indexer is None or indexer_id is None): for idx in sickbeard.indexerApi().indexers: - found_info = helpers.searchIndexerForShowID(show_name, idx, indexer_id) + found_info = helpers.searchIndexerForShowID(show_name, idx, indexer_id, ui=classes.ShowListUI) if found_info: # set indexer and indexer_id from found info if indexer is None: @@ -3414,12 +3414,6 @@ class Home: if isinstance(ep_obj, str): return json.dumps({'result': 'failure'}) - # figure out what segment the episode is in and remember it so we can backlog it - if ep_obj.show.air_by_date or ep_obj.show.sports: - segment = str(ep_obj.airdate)[:7] - else: - segment = ep_obj.season - # make a queue item for it and put it on the queue ep_queue_item = search_queue.FailedQueueItem(ep_obj.show, {ep_obj.season: ep_obj.episode}) sickbeard.searchQueueScheduler.action.add_item(ep_queue_item) # @UndefinedVariable @@ -3444,28 +3438,6 @@ class Home: return json.dumps({'result': 'failure'}) - -# try: -# -# -# ui.notifications.message('Info', pp.log) -# except exceptions.FailedHistoryNotFoundException: -# ui.notifications.error('Not Found Error', 'Couldn\'t find release in history. (Has it been over 30 days?)\n' -# 'Can\'t mark it as bad.') -# return json.dumps({'result': 'failure'}) -# except exceptions.FailedHistoryMultiSnatchException: -# ui.notifications.error('Multi-Snatch Error', 'The same episode was snatched again before the first one was done.\n' -# 'Please cancel any downloads of this episode and then set it back to wanted.\n Can\'t continue.') -# return json.dumps({'result': 'failure'}) -# except exceptions.FailedProcessingFailed: -# ui.notifications.error('Processing Failed', pp.log) -# return json.dumps({'result': 'failure'}) -# except Exception as e: -# ui.notifications.error('Unknown Error', 'Unknown exception: ' + str(e)) -# return json.dumps({'result': 'failure'}) -# -# return json.dumps({'result': 'success'}) - class UI: @cherrypy.expose def add_message(self):