From 0573a8add643c6dcaac02858e2628ce54c64e4d1 Mon Sep 17 00:00:00 2001 From: echel0n Date: Sun, 22 Jun 2014 12:25:54 -0700 Subject: [PATCH] Fix for NoneType name parsing issues from new test code. Fix for h264/x264 matching as absolute number. --- sickbeard/name_parser/parser.py | 10 ++++--- sickbeard/name_parser/regexes.py | 46 ++++++++++++++++---------------- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/sickbeard/name_parser/parser.py b/sickbeard/name_parser/parser.py index 2dcee219..b4dffeab 100644 --- a/sickbeard/name_parser/parser.py +++ b/sickbeard/name_parser/parser.py @@ -107,7 +107,7 @@ class NameParser(object): if not name: return - if not self.naming_pattern: + if not self.showObj and not self.naming_pattern: # Regex pattern to return the Show / Series Name regardless of the file pattern tossed at it, matched 53 show name examples from regexes.py show_pattern = '''^(?:(UEFA|MLB|ESPN|WWE|MMA|UFC|TNA|EPL|NASCAR|NBA|NFL|NHL|NRL|PGA|SUPER LEAGUE|FORMULA|FIFA|NETBALL|MOTOG(P)))?(?:[0-9]+)?(?:\[(?:.+?)\][ ._-])?(?P.*?)(?:[ ._-])+?(?:Season|Part)?(?:.[eE][0-9][0-9]?)?(?:.?[sS]?[0-9][0-9]?)''' try: @@ -116,9 +116,11 @@ class NameParser(object): logger.log(u"WARNING: Invalid show series name pattern, %s: [%s]" % (errormsg, show_pattern)) else: seriesname_match = show_regex.match(name) - seriesname_groups = seriesname_match.groupdict().keys() + if not seriesname_match: + return - if not self.showObj and 'series_name' in seriesname_groups: + seriesname_groups = seriesname_match.groupdict().keys() + if 'series_name' in seriesname_groups: # Do we have recognize this show? series_name = self.clean_series_name(seriesname_match.group('series_name')) self.showObj = helpers.get_show_by_name(series_name, useIndexer=self.useIndexers) @@ -247,7 +249,7 @@ class NameParser(object): result = result.convert() # get quality - result.quality = common.Quality.nameQuality(name, bool(result.show and result.show.is_anime)) + result.quality = common.Quality.nameQuality(name, result.show.is_anime) return result diff --git a/sickbeard/name_parser/regexes.py b/sickbeard/name_parser/regexes.py index fc56bbda..e4d74a5a 100644 --- a/sickbeard/name_parser/regexes.py +++ b/sickbeard/name_parser/regexes.py @@ -222,8 +222,8 @@ anime_regexes = {'anime':[ """ ^(?:\[(?P.+?)\][ ._-]*) (?P.+?)[ ._-]+ - (?P(?!(1080|720|480)[pi])\d{1,3}) - (-(?P(?!(1080|720|480)[pi])\d{1,3}))?[ ._-]+? + (?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}) + (-(?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))?[ ._-]+? (?:v(?P[0-9]))? (?:[\w\.]*) (?:(?:(?:[\[\(])(?P\d{3,4}[xp]?\d{0,4}[\.\w\s-]*)(?:[\]\)]))|(?:\d{3,4}[xp])) @@ -241,8 +241,8 @@ anime_regexes = {'anime':[ ''' ^(\[(?P.+?)\][ ._-]*)? # Release Group and separator (?P.+?)[ ._-]+ # Show_Name and separator - (?P(?!(1080|720|480)[pi])\d{1,3}) # E01 - (-(?P(?!(1080|720|480)[pi])\d{1,3}))? # E02 + (?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}) # E01 + (-(?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # E02 (v(?P[0-9]))? # version [ ._-]+\[(?P\d{3,4}[xp]?\d{0,4}[\.\w\s-]*)\] # Source_Quality_Etc- (\[(?P\w{8})\])? # CRC @@ -256,8 +256,8 @@ anime_regexes = {'anime':[ ''' ^(\[(?P.+?)\][ ._-]*)? # Release Group and separator (?P.+?)[ ._-]+ # Show_Name and separator - (?P(?!(1080|720|480)[pi])\d{1,3}) # E01 - (-(?P(?!(1080|720|480)[pi])\d{1,3}))? # E02 + (?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}) # E01 + (-(?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # E02 (v(?P[0-9]))? # version [ ._-]+\((?P(CX[ ._-]?)?\d{3,4}[xp]?\d{0,4}[\.\w\s-]*)\) # Source_Quality_Etc- (\[(?P\w{8})\])? # CRC @@ -269,8 +269,8 @@ anime_regexes = {'anime':[ ''' ^(\[(?P.+?)\][ ._-]*)? # Release Group and separator (?P.+?)[ ._-]+ # Show_Name and separator - (?P(?!(1080|720|480)[pi])\d{1,3}) # E01 - (-(?P(?!(1080|720|480)[pi])\d{1,3}))? # E02 + (?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}) # E01 + (-(?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # E02 (v(?P[0-9]))? # version [ ._-]+\[(?P\d{3,4}p) # Source_Quality_Etc- (\[(?P\w{8})\])? # CRC @@ -285,8 +285,8 @@ anime_regexes = {'anime':[ ^(\[(?P.+?)\][ ._-]*)? # Release Group and separator (?P.+?)[ ._]* # Show_Name and separator ([ ._-]+-[ ._-]+[A-Z]+[ ._-]+)?[ ._-]+ # funny stuff, this is sooo nuts ! this will kick me in the butt one day - (?P(?!(1080|720|480)[pi])\d{1,3}) # E01 - (-(?P(?!(1080|720|480)[pi])\d{1,3}))? # E02 + (?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}) # E01 + (-(?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # E02 (v(?P[0-9]))? # version ([ ._-](\[\w{1,2}\])?\[[a-z][.]?\w{2,4}\])? #codec [ ._-]*\[(?P(\d{3,4}[xp]?\d{0,4})?[\.\w\s-]*)\] # Source_Quality_Etc- @@ -298,7 +298,7 @@ anime_regexes = {'anime':[ ''' ^(?:\[(?P.*?)\][ ._-]*)? (?:(?P.*?)[ ._-]*)? - (?:(?P((?!(1080|720|480)[pi])\d{1,3}))[ ._-]*).+? + (?:(?P(((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))[ ._-]*).+? (?:\[(?P.*?)\][ ._-]*) (?:\[(?P\w{8})\])? .*? @@ -315,8 +315,8 @@ anime_regexes = {'anime':[ (([. _-]*e|-) # linking e/- char (?P\d+))* # additional E03/etc ([ ._-]{2,}|[ ._]+) # if "-" is used to separate at least something else has to be there(->{2,}) "s16e03-04-313-314" would make sens any way - ((?P(?!(1080|720|480)[pi])\d{1,3}))? # absolute number - (-(?P(?!(1080|720|480)[pi])\d{1,3}))? # "-" as separator and anditional absolute number, all optinal + ((?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # absolute number + (-(?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # "-" as separator and anditional absolute number, all optinal (v(?P[0-9]))? # the version e.g. "v2" .*? ''' @@ -334,8 +334,8 @@ anime_regexes = {'anime':[ (([. _-]*e|-) # linking e/- char (?P\d+))* # additional E03/etc ([ ._-]{2,}|[ ._]+) # if "-" is used to separate at least something else has to be there(->{2,}) "s16e03-04-313-314" would make sens any way - ((?P(?!(1080|720|480)[pi])\d{1,3}))? # absolute number - (-(?P(?!(1080|720|480)[pi])\d{1,3}))? # "-" as separator and anditional absolute number, all optinal + ((?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # absolute number + (-(?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # "-" as separator and anditional absolute number, all optinal (v(?P[0-9]))? # the version e.g. "v2" .*? ''' @@ -346,8 +346,8 @@ anime_regexes = {'anime':[ # Bleach - 313-314 - s16e03-04 ''' ^(?P.+?)[ ._-]+ # start of string and series name and non optinal separator - (?P(?!(1080|720|480)[pi])\d{1,3}) # absolute number - (-(?P(?!(1080|720|480)[pi])\d{1,3}))? # "-" as separator and anditional absolute number, all optinal + (?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}) # absolute number + (-(?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # "-" as separator and anditional absolute number, all optinal (v(?P[0-9]))? # the version e.g. "v2" ([ ._-]{2,}|[ ._]+) # if "-" is used to separate at least something else has to be there(->{2,}) "s16e03-04-313-314" would make sens any way [sS](?P\d+)[. _-]* # S01 and optional separator @@ -361,8 +361,8 @@ anime_regexes = {'anime':[ ('anime_and_normal_front', # 165.Naruto Shippuuden.s08e014 ''' - ^(?P(?!(1080|720|480)[pi])\d{1,3}) # start of string and absolute number - (-(?P(?!(1080|720|480)[pi])\d{1,3}))? # "-" as separator and anditional absolute number, all optinal + ^(?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}) # start of string and absolute number + (-(?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # "-" as separator and anditional absolute number, all optinal (v(?P[0-9]))?[ ._-]+ # the version e.g. "v2" (?P.+?)[ ._-]+ [sS](?P\d+)[. _-]* # S01 and optional separator @@ -377,8 +377,8 @@ anime_regexes = {'anime':[ ''' ^(?:\[(?P.+?)\][ ._-]*) (?P.+?)[ ._-]+ - (?P(?!(1080|720|480)[pi])\d{1,3}) - (-(?P(?!(1080|720|480)[pi])\d{1,3}))?[ ._-]*? + (?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}) + (-(?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))?[ ._-]*? (?:v(?P[0-9])[ ._-]+?)? (?:.+?[ ._-]+?)? \[(?P\w+)\][ ._-]? @@ -393,8 +393,8 @@ anime_regexes = {'anime':[ ''' ^(\[(?P.+?)\][ ._-]*)? (?P.+?)[ ._-]+ # Show_Name and separator - (?P(?!(1080|720|480)[pi])\d{1,3}) # E01 - (-(?P(?!(1080|720|480)[pi])\d{1,3}))? # E02 + (?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}) # E01 + (-(?P((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # E02 (v(?P[0-9]))? # v2 .*? # Separator and EOL ''')