diff --git a/sickbeard/name_parser/parser.py b/sickbeard/name_parser/parser.py index 4e4f0b6..1217105 100644 --- a/sickbeard/name_parser/parser.py +++ b/sickbeard/name_parser/parser.py @@ -37,19 +37,8 @@ class NameParser(object): def __init__(self, file_name=True, showObj=None, epObj=None, useIndexers=False, convert=False): - regexMode = self.ALL_REGEX - if showObj and showObj.is_anime: - regexMode = self.ANIME_REGEX - elif showObj and showObj.is_sports: - regexMode = self.SPORTS_REGEX - elif showObj and not showObj.is_anime and not showObj.is_sports: - regexMode = self.NORMAL_REGEX - self.file_name = file_name - self.regexMode = regexMode - self.compiled_regexes = {} - self._compile_regexes(self.regexMode) - self.showList = sickbeard.showList + self.showList = sickbeard.showList or [] self.useIndexers = useIndexers self.showObj = showObj self.epObj = epObj @@ -205,26 +194,21 @@ class NameParser(object): result.release_group = match.group('release_group') result.score += 1 - cur_show = helpers.get_show_by_name(result.series_name, useIndexer=self.useIndexers) - if not cur_show: - if self.showObj: - if self.showObj.air_by_date and result.air_date: - result.score += 1 - elif self.showObj.sports and result.sports_event_date: - result.score += 1 - elif self.showObj.anime and len(result.ab_episode_numbers): - result.score += 1 + if not self.showObj: + self.showObj = helpers.get_show_by_name(result.series_name, useIndexer=self.useIndexers) + if self.showObj: + if self.showObj.air_by_date and result.air_date: + result.score += 1 + elif self.showObj.sports and result.sports_event_date: + result.score += 1 + elif self.showObj.anime and len(result.ab_episode_numbers): + result.score += 1 + else: matches.append(result) continue - if self.showObj and self.showObj.indexerid != cur_show.indexerid: - logger.log( - u"I expected an episode of the show " + self.showObj.name + " but the parser thinks its the show " + cur_show.name + ". I will continue thinking its " + self.showObj.name, - logger.WARNING) - continue - - result.show = cur_show + result.show = self.showObj if self.convert: result = result.convert() @@ -309,6 +293,25 @@ class NameParser(object): if cached: return cached + if not self.showObj: + for show in self.showList: + if not show.name.lower() in name.lower(): + continue + + self.showObj = show + break + + regexMode = self.ALL_REGEX + if self.showObj and self.showObj.is_anime: + regexMode = self.ANIME_REGEX + elif self.showObj and self.showObj.is_sports: + regexMode = self.SPORTS_REGEX + elif self.showObj and not self.showObj.is_anime and not self.showObj.is_sports: + regexMode = self.NORMAL_REGEX + + self.compiled_regexes = {} + self._compile_regexes(regexMode) + # break it into parts if there are any (dirname, file name, extension) dir_name, file_name = os.path.split(name) ext_match = re.match('(.*)\.\w{3,4}$', file_name)