From 6a4adceb26d06136a931dca0321fae102c270e5a Mon Sep 17 00:00:00 2001 From: echel0n Date: Mon, 10 Mar 2014 13:31:41 -0700 Subject: [PATCH] Updates to auto post-processing code, additional code added to ensure indexer is always set to the correct value --- sickbeard/name_parser/parser.py | 4 ++++ sickbeard/postProcessor.py | 38 +++++++++++++++------------------ sickbeard/processTV.py | 2 +- sickbeard/properFinder.py | 4 ++++ sickbeard/tvcache.py | 24 +++++++-------------- sickbeard/webserve.py | 4 ++++ 6 files changed, 38 insertions(+), 38 deletions(-) diff --git a/sickbeard/name_parser/parser.py b/sickbeard/name_parser/parser.py index eb3174e1..6eb43424 100644 --- a/sickbeard/name_parser/parser.py +++ b/sickbeard/name_parser/parser.py @@ -25,6 +25,10 @@ import regexes import sickbeard from sickbeard import logger +from sickbeard import classes +from sickbeard import show_name_helpers +from sickbeard import scene_numbering +from sickbeard import scene_exceptions from sickbeard.indexers import indexer_api, indexer_exceptions diff --git a/sickbeard/postProcessor.py b/sickbeard/postProcessor.py index 4d98d1f3..bf74a476 100644 --- a/sickbeard/postProcessor.py +++ b/sickbeard/postProcessor.py @@ -46,8 +46,8 @@ from sickbeard.exceptions import ex from sickbeard.name_parser.parser import NameParser, InvalidNameException - from sickbeard.indexers import indexer_api, indexer_exceptions +from common import indexerStrings class PostProcessor(object): """ @@ -510,7 +510,7 @@ class PostProcessor(object): self._log(u"Looking up " + cur_name +u" in the DB", logger.DEBUG) db_result = helpers.searchDBForShow(cur_name) if db_result: - self._log(u"Lookup successful, using " + db_result[0] + " id " + str(db_result[0]), logger.DEBUG) + self._log(u"Lookup successful, using " + db_result[0] + " id " + str(db_result[1]), logger.DEBUG) _finalize(parse_result) return (int(db_result[1]), season, episodes) @@ -808,11 +808,6 @@ class PostProcessor(object): Post-process a given file """ - if self.indexer is not None: - sickbeard.INDEXER_API_PARMS['indexer'] = self.indexer - else: - sickbeard.INDEXER_API_PARMS['indexer'] = 'Tvdb' - self._log(u"Processing " + self.file_path + " (" + str(self.nzb_name) + ")") if ek.ek(os.path.isdir, self.file_path): @@ -825,26 +820,27 @@ class PostProcessor(object): # reset per-file stuff self.in_history = False - # try to find the file info - (indexer_id, season, episodes) = self._find_info() + indexer_id = season = episodes = None + if 'auto' in self.indexer: + for indexer in indexerStrings: + self.indexer = indexer[0] + sickbeard.INDEXER_API_PARMS['indexer'] = self.indexer - # if we don't have it then give up - if not indexer_id or season == None or not episodes: - if 'Tvdb' in self.indexer: - self._log(u"Can't find show id from " + self.indexer + " or season or episode, trying other indexer", logger.WARNING) - self.indexer = 'TVRage' - else: - self._log(u"Can't find show id from " + self.indexer + " or season or episode, trying other indexer", logger.WARNING) - self.indexer = 'Tvdb' + # try to find the file info + (indexer_id, season, episodes) = self._find_info() + if indexer_id and season != None and episodes: + break + self._log(u"Can't find show on " + self.indexer + ", auto trying next indexer in list", logger.WARNING) + else: sickbeard.INDEXER_API_PARMS['indexer'] = self.indexer - # try to find the file info with a different indexer + # try to find the file info (indexer_id, season, episodes) = self._find_info() - if not indexer_id or season == None or not episodes: - self._log(u"Can't find show id from ANY of the indexers or season or episode, skipping", logger.WARNING) - return False + if not indexer_id or season == None or not episodes: + self._log(u"Can't find show id from ANY of the indexers or season or episode, skipping", logger.WARNING) + return False # retrieve/create the corresponding TVEpisode objects ep_obj = self._get_ep_obj(indexer_id, season, episodes) diff --git a/sickbeard/processTV.py b/sickbeard/processTV.py index 55ecd3d2..8354c66a 100644 --- a/sickbeard/processTV.py +++ b/sickbeard/processTV.py @@ -40,7 +40,7 @@ def logHelper (logMessage, logLevel=logger.MESSAGE): logger.log(logMessage, logLevel) return logMessage + u"\n" -def processDir(dirName, nzbName=None, process_method=None, force=False, is_priority=None, failed=False, type="auto", indexer="Tvdb"): +def processDir(dirName, nzbName=None, process_method=None, force=False, is_priority=None, failed=False, type="auto", indexer="auto"): """ Scans through the files in dirName and processes whatever media files it finds diff --git a/sickbeard/properFinder.py b/sickbeard/properFinder.py index be0f8438..464c7d89 100644 --- a/sickbeard/properFinder.py +++ b/sickbeard/properFinder.py @@ -167,6 +167,10 @@ class ProperFinder(): logger.log(u"This should never have happened, post a bug about this!", logger.ERROR) raise Exception("BAD STUFF HAPPENED") + # correct the indexer with the proper one linked to the show + self.indexer = showObj.indexer + sickbeard.INDEXER_API_PARMS['indexer'] = self.indexer + indexer_lang = showObj.lang # There's gotta be a better way of doing this but we don't wanna # change the language value elsewhere diff --git a/sickbeard/tvcache.py b/sickbeard/tvcache.py index c8976cb2..4c36771c 100644 --- a/sickbeard/tvcache.py +++ b/sickbeard/tvcache.py @@ -225,7 +225,7 @@ class TVCache(): indexer_lang = None # if we need indexer_id or tvrage_id then search the DB for them - if not indexer_id or not tvrage_id: + if not indexer_id: # if we have only the indexer_id, use the database if indexer_id: @@ -234,23 +234,11 @@ class TVCache(): except (MultipleShowObjectsException): showObj = None if showObj: - indexer_lang = showObj.lang - else: - logger.log(u"We were given a " + self.indexer + " id " + str(indexer_id) + " but it doesn't match a show we have in our list, so leaving tvrage_id empty", logger.DEBUG) - tvrage_id = 0 + # correct the indexer with the proper one linked to the show + self.indexer = showObj.indexer + sickbeard.INDEXER_API_PARMS['indexer'] = self.indexer - # if we have only a tvrage_id then use the database - elif tvrage_id: - try: - showObj = helpers.findCertainTVRageShow(sickbeard.showList, tvrage_id) - except (MultipleShowObjectsException): - showObj = None - if showObj: - indexer_id = showObj.indexerid indexer_lang = showObj.lang - else: - logger.log(u"We were given a TVRage id " + str(tvrage_id) + " but it doesn't match a show we have in our list, so leaving indexer_id empty", logger.DEBUG) - indexer_id = 0 # if they're both empty then fill out as much info as possible by searching the show name else: @@ -300,6 +288,10 @@ class TVCache(): except (MultipleShowObjectsException): showObj = None if showObj: + # correct the indexer with the proper one linked to the show + self.indexer = showObj.indexer + sickbeard.INDEXER_API_PARMS['indexer'] = self.indexer + indexer_lang = showObj.lang # if we weren't provided with season/episode information then get it from the name that we parsed diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py index 5ba88478..9d86f36a 100644 --- a/sickbeard/webserve.py +++ b/sickbeard/webserve.py @@ -2842,6 +2842,10 @@ class Home: air_by_date = config.checkbox_to_value(air_by_date) subtitles = config.checkbox_to_value(subtitles) + # correct the indexer with the proper one linked to the show + self.indexer = showObj.indexer + sickbeard.INDEXER_API_PARMS['indexer'] = self.indexer + indexer_lang = showObj.lang # if we changed the language then kick off an update