mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-03 18:03:37 +00:00
Merge remote-tracking branch 'origin/dev'
This commit is contained in:
commit
da20c5f81f
3 changed files with 74 additions and 64 deletions
|
@ -105,10 +105,10 @@ class DBConnection(object):
|
||||||
result = None
|
result = None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
if self.hasTable('db_version'):
|
||||||
result = self.select("SELECT db_version FROM db_version")
|
result = self.select("SELECT db_version FROM db_version")
|
||||||
except sqlite3.OperationalError, e:
|
except:
|
||||||
if "no such table: db_version" in e.args[0]:
|
pass
|
||||||
return 0
|
|
||||||
|
|
||||||
if result:
|
if result:
|
||||||
return int(result[0]["db_version"])
|
return int(result[0]["db_version"])
|
||||||
|
|
|
@ -37,7 +37,8 @@ class NameParser(object):
|
||||||
SPORTS_REGEX = 2
|
SPORTS_REGEX = 2
|
||||||
ANIME_REGEX = 3
|
ANIME_REGEX = 3
|
||||||
|
|
||||||
def __init__(self, file_name=True, showObj=None, epObj=None, useIndexers=False, convert=False, naming_pattern=False):
|
def __init__(self, file_name=True, showObj=None, epObj=None, useIndexers=False, convert=False,
|
||||||
|
naming_pattern=False):
|
||||||
|
|
||||||
self.file_name = file_name
|
self.file_name = file_name
|
||||||
self.showList = sickbeard.showList or []
|
self.showList = sickbeard.showList or []
|
||||||
|
@ -47,17 +48,6 @@ class NameParser(object):
|
||||||
self.convert = convert
|
self.convert = convert
|
||||||
self.naming_pattern = naming_pattern
|
self.naming_pattern = naming_pattern
|
||||||
|
|
||||||
self.regexMode = self.ALL_REGEX
|
|
||||||
if self.showObj and self.showObj.is_anime:
|
|
||||||
self.regexMode = self.ANIME_REGEX
|
|
||||||
elif self.showObj and self.showObj.is_sports:
|
|
||||||
self.regexMode = self.SPORTS_REGEX
|
|
||||||
elif self.showObj and not self.showObj.is_anime and not self.showObj.is_sports:
|
|
||||||
self.regexMode = self.NORMAL_REGEX
|
|
||||||
|
|
||||||
self.compiled_regexes = {}
|
|
||||||
self._compile_regexes(self.regexMode)
|
|
||||||
|
|
||||||
def clean_series_name(self, series_name):
|
def clean_series_name(self, series_name):
|
||||||
"""Cleans up series name by removing any . and _
|
"""Cleans up series name by removing any . and _
|
||||||
characters, along with any trailing hyphens.
|
characters, along with any trailing hyphens.
|
||||||
|
@ -117,6 +107,38 @@ class NameParser(object):
|
||||||
if not name:
|
if not name:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
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<series_name>.*?)(?:[ ._-])+?(?:Season|Part)?(?:.[eE][0-9][0-9]?)?(?:.?[sS]?[0-9][0-9]?)'''
|
||||||
|
try:
|
||||||
|
show_regex = re.compile(show_pattern, re.VERBOSE | re.IGNORECASE)
|
||||||
|
except re.error, errormsg:
|
||||||
|
logger.log(u"WARNING: Invalid show series name pattern, %s: [%s]" % (errormsg, show_pattern))
|
||||||
|
else:
|
||||||
|
seriesname_match = show_regex.match(name)
|
||||||
|
if not seriesname_match:
|
||||||
|
return
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
if not self.showObj:
|
||||||
|
return
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
matches = []
|
matches = []
|
||||||
result = None
|
result = None
|
||||||
for (cur_regex_type, cur_regex_name), cur_regex in self.compiled_regexes.items():
|
for (cur_regex_type, cur_regex_name), cur_regex in self.compiled_regexes.items():
|
||||||
|
@ -137,22 +159,6 @@ class NameParser(object):
|
||||||
result.series_name = self.clean_series_name(result.series_name)
|
result.series_name = self.clean_series_name(result.series_name)
|
||||||
result.score += 1
|
result.score += 1
|
||||||
|
|
||||||
if not self.showObj and not self.naming_pattern:
|
|
||||||
self.showObj = helpers.get_show_by_name(result.series_name, useIndexer=self.useIndexers)
|
|
||||||
|
|
||||||
if self.showObj:
|
|
||||||
result.show = self.showObj
|
|
||||||
if getattr(self.showObj, 'air_by_date', None) and not cur_regex_type == 'normal':
|
|
||||||
continue
|
|
||||||
elif getattr(self.showObj, 'sports', None) and not cur_regex_type == 'sports':
|
|
||||||
continue
|
|
||||||
elif getattr(self.showObj, 'anime', None) and not cur_regex_type == 'anime':
|
|
||||||
continue
|
|
||||||
|
|
||||||
# don't continue parsing if we don't have a show object by now, try next regex pattern
|
|
||||||
if not self.showObj and not self.naming_pattern:
|
|
||||||
continue
|
|
||||||
|
|
||||||
if 'season_num' in named_groups:
|
if 'season_num' in named_groups:
|
||||||
tmp_season = int(match.group('season_num'))
|
tmp_season = int(match.group('season_num'))
|
||||||
if not (cur_regex_name == 'bare' and tmp_season in (19, 20)):
|
if not (cur_regex_name == 'bare' and tmp_season in (19, 20)):
|
||||||
|
@ -224,6 +230,8 @@ class NameParser(object):
|
||||||
result.release_group = match.group('release_group')
|
result.release_group = match.group('release_group')
|
||||||
result.score += 1
|
result.score += 1
|
||||||
|
|
||||||
|
if self.showObj:
|
||||||
|
result.show = self.showObj
|
||||||
if getattr(self.showObj, 'air_by_date', None) and result.air_date:
|
if getattr(self.showObj, 'air_by_date', None) and result.air_date:
|
||||||
result.score += 1
|
result.score += 1
|
||||||
elif getattr(self.showObj, 'sports', None) and result.sports_event_date:
|
elif getattr(self.showObj, 'sports', None) and result.sports_event_date:
|
||||||
|
@ -238,12 +246,12 @@ class NameParser(object):
|
||||||
result = max(matches, key=lambda x: x.score)
|
result = max(matches, key=lambda x: x.score)
|
||||||
|
|
||||||
if result.show:
|
if result.show:
|
||||||
if self.convert:
|
if self.convert and not self.naming_pattern:
|
||||||
# scene convert result
|
# scene convert result
|
||||||
result = result.convert()
|
result = result.convert()
|
||||||
|
|
||||||
# get quality
|
# 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
|
return result
|
||||||
|
|
||||||
|
@ -555,7 +563,9 @@ class ParseResult(object):
|
||||||
self.episode_numbers = new_episode_numbers
|
self.episode_numbers = new_episode_numbers
|
||||||
self.season_number = new_season_numbers[0]
|
self.season_number = new_season_numbers[0]
|
||||||
|
|
||||||
logger.log(u"Converted parsed result " + self.original_name + " into " + str(self).decode('utf-8', 'xmlcharrefreplace'), logger.DEBUG)
|
logger.log(u"Converted parsed result " + self.original_name + " into " + str(self).decode('utf-8',
|
||||||
|
'xmlcharrefreplace'),
|
||||||
|
logger.DEBUG)
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
|
|
@ -222,8 +222,8 @@ anime_regexes = {'anime':[
|
||||||
"""
|
"""
|
||||||
^(?:\[(?P<release_group>.+?)\][ ._-]*)
|
^(?:\[(?P<release_group>.+?)\][ ._-]*)
|
||||||
(?P<series_name>.+?)[ ._-]+
|
(?P<series_name>.+?)[ ._-]+
|
||||||
(?P<ep_ab_num>(?!(1080|720|480)[pi])\d{1,3})
|
(?P<ep_ab_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3})
|
||||||
(-(?P<extra_ab_ep_num>(?!(1080|720|480)[pi])\d{1,3}))?[ ._-]+?
|
(-(?P<extra_ab_ep_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))?[ ._-]+?
|
||||||
(?:v(?P<version>[0-9]))?
|
(?:v(?P<version>[0-9]))?
|
||||||
(?:[\w\.]*)
|
(?:[\w\.]*)
|
||||||
(?:(?:(?:[\[\(])(?P<extra_info>\d{3,4}[xp]?\d{0,4}[\.\w\s-]*)(?:[\]\)]))|(?:\d{3,4}[xp]))
|
(?:(?:(?:[\[\(])(?P<extra_info>\d{3,4}[xp]?\d{0,4}[\.\w\s-]*)(?:[\]\)]))|(?:\d{3,4}[xp]))
|
||||||
|
@ -241,8 +241,8 @@ anime_regexes = {'anime':[
|
||||||
'''
|
'''
|
||||||
^(\[(?P<release_group>.+?)\][ ._-]*)? # Release Group and separator
|
^(\[(?P<release_group>.+?)\][ ._-]*)? # Release Group and separator
|
||||||
(?P<series_name>.+?)[ ._-]+ # Show_Name and separator
|
(?P<series_name>.+?)[ ._-]+ # Show_Name and separator
|
||||||
(?P<ep_ab_num>(?!(1080|720|480)[pi])\d{1,3}) # E01
|
(?P<ep_ab_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}) # E01
|
||||||
(-(?P<extra_ab_ep_num>(?!(1080|720|480)[pi])\d{1,3}))? # E02
|
(-(?P<extra_ab_ep_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # E02
|
||||||
(v(?P<version>[0-9]))? # version
|
(v(?P<version>[0-9]))? # version
|
||||||
[ ._-]+\[(?P<extra_info>\d{3,4}[xp]?\d{0,4}[\.\w\s-]*)\] # Source_Quality_Etc-
|
[ ._-]+\[(?P<extra_info>\d{3,4}[xp]?\d{0,4}[\.\w\s-]*)\] # Source_Quality_Etc-
|
||||||
(\[(?P<crc>\w{8})\])? # CRC
|
(\[(?P<crc>\w{8})\])? # CRC
|
||||||
|
@ -256,8 +256,8 @@ anime_regexes = {'anime':[
|
||||||
'''
|
'''
|
||||||
^(\[(?P<release_group>.+?)\][ ._-]*)? # Release Group and separator
|
^(\[(?P<release_group>.+?)\][ ._-]*)? # Release Group and separator
|
||||||
(?P<series_name>.+?)[ ._-]+ # Show_Name and separator
|
(?P<series_name>.+?)[ ._-]+ # Show_Name and separator
|
||||||
(?P<ep_ab_num>(?!(1080|720|480)[pi])\d{1,3}) # E01
|
(?P<ep_ab_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}) # E01
|
||||||
(-(?P<extra_ab_ep_num>(?!(1080|720|480)[pi])\d{1,3}))? # E02
|
(-(?P<extra_ab_ep_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # E02
|
||||||
(v(?P<version>[0-9]))? # version
|
(v(?P<version>[0-9]))? # version
|
||||||
[ ._-]+\((?P<extra_info>(CX[ ._-]?)?\d{3,4}[xp]?\d{0,4}[\.\w\s-]*)\) # Source_Quality_Etc-
|
[ ._-]+\((?P<extra_info>(CX[ ._-]?)?\d{3,4}[xp]?\d{0,4}[\.\w\s-]*)\) # Source_Quality_Etc-
|
||||||
(\[(?P<crc>\w{8})\])? # CRC
|
(\[(?P<crc>\w{8})\])? # CRC
|
||||||
|
@ -269,8 +269,8 @@ anime_regexes = {'anime':[
|
||||||
'''
|
'''
|
||||||
^(\[(?P<release_group>.+?)\][ ._-]*)? # Release Group and separator
|
^(\[(?P<release_group>.+?)\][ ._-]*)? # Release Group and separator
|
||||||
(?P<series_name>.+?)[ ._-]+ # Show_Name and separator
|
(?P<series_name>.+?)[ ._-]+ # Show_Name and separator
|
||||||
(?P<ep_ab_num>(?!(1080|720|480)[pi])\d{1,3}) # E01
|
(?P<ep_ab_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}) # E01
|
||||||
(-(?P<extra_ab_ep_num>(?!(1080|720|480)[pi])\d{1,3}))? # E02
|
(-(?P<extra_ab_ep_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # E02
|
||||||
(v(?P<version>[0-9]))? # version
|
(v(?P<version>[0-9]))? # version
|
||||||
[ ._-]+\[(?P<extra_info>\d{3,4}p) # Source_Quality_Etc-
|
[ ._-]+\[(?P<extra_info>\d{3,4}p) # Source_Quality_Etc-
|
||||||
(\[(?P<crc>\w{8})\])? # CRC
|
(\[(?P<crc>\w{8})\])? # CRC
|
||||||
|
@ -285,8 +285,8 @@ anime_regexes = {'anime':[
|
||||||
^(\[(?P<release_group>.+?)\][ ._-]*)? # Release Group and separator
|
^(\[(?P<release_group>.+?)\][ ._-]*)? # Release Group and separator
|
||||||
(?P<series_name>.+?)[ ._]* # Show_Name and separator
|
(?P<series_name>.+?)[ ._]* # Show_Name and separator
|
||||||
([ ._-]+-[ ._-]+[A-Z]+[ ._-]+)?[ ._-]+ # funny stuff, this is sooo nuts ! this will kick me in the butt one day
|
([ ._-]+-[ ._-]+[A-Z]+[ ._-]+)?[ ._-]+ # funny stuff, this is sooo nuts ! this will kick me in the butt one day
|
||||||
(?P<ep_ab_num>(?!(1080|720|480)[pi])\d{1,3}) # E01
|
(?P<ep_ab_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}) # E01
|
||||||
(-(?P<extra_ab_ep_num>(?!(1080|720|480)[pi])\d{1,3}))? # E02
|
(-(?P<extra_ab_ep_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # E02
|
||||||
(v(?P<version>[0-9]))? # version
|
(v(?P<version>[0-9]))? # version
|
||||||
([ ._-](\[\w{1,2}\])?\[[a-z][.]?\w{2,4}\])? #codec
|
([ ._-](\[\w{1,2}\])?\[[a-z][.]?\w{2,4}\])? #codec
|
||||||
[ ._-]*\[(?P<extra_info>(\d{3,4}[xp]?\d{0,4})?[\.\w\s-]*)\] # Source_Quality_Etc-
|
[ ._-]*\[(?P<extra_info>(\d{3,4}[xp]?\d{0,4})?[\.\w\s-]*)\] # Source_Quality_Etc-
|
||||||
|
@ -298,7 +298,7 @@ anime_regexes = {'anime':[
|
||||||
'''
|
'''
|
||||||
^(?:\[(?P<release_group>.*?)\][ ._-]*)?
|
^(?:\[(?P<release_group>.*?)\][ ._-]*)?
|
||||||
(?:(?P<series_name>.*?)[ ._-]*)?
|
(?:(?P<series_name>.*?)[ ._-]*)?
|
||||||
(?:(?P<ep_ab_num>((?!(1080|720|480)[pi])\d{1,3}))[ ._-]*).+?
|
(?:(?P<ep_ab_num>(((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))[ ._-]*).+?
|
||||||
(?:\[(?P<codec>.*?)\][ ._-]*)
|
(?:\[(?P<codec>.*?)\][ ._-]*)
|
||||||
(?:\[(?P<crc>\w{8})\])?
|
(?:\[(?P<crc>\w{8})\])?
|
||||||
.*?
|
.*?
|
||||||
|
@ -315,8 +315,8 @@ anime_regexes = {'anime':[
|
||||||
(([. _-]*e|-) # linking e/- char
|
(([. _-]*e|-) # linking e/- char
|
||||||
(?P<extra_ep_num>\d+))* # additional E03/etc
|
(?P<extra_ep_num>\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
|
([ ._-]{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<ep_ab_num>(?!(1080|720|480)[pi])\d{1,3}))? # absolute number
|
((?P<ep_ab_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # absolute number
|
||||||
(-(?P<extra_ab_ep_num>(?!(1080|720|480)[pi])\d{1,3}))? # "-" as separator and anditional absolute number, all optinal
|
(-(?P<extra_ab_ep_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # "-" as separator and anditional absolute number, all optinal
|
||||||
(v(?P<version>[0-9]))? # the version e.g. "v2"
|
(v(?P<version>[0-9]))? # the version e.g. "v2"
|
||||||
.*?
|
.*?
|
||||||
'''
|
'''
|
||||||
|
@ -334,8 +334,8 @@ anime_regexes = {'anime':[
|
||||||
(([. _-]*e|-) # linking e/- char
|
(([. _-]*e|-) # linking e/- char
|
||||||
(?P<extra_ep_num>\d+))* # additional E03/etc
|
(?P<extra_ep_num>\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
|
([ ._-]{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<ep_ab_num>(?!(1080|720|480)[pi])\d{1,3}))? # absolute number
|
((?P<ep_ab_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # absolute number
|
||||||
(-(?P<extra_ab_ep_num>(?!(1080|720|480)[pi])\d{1,3}))? # "-" as separator and anditional absolute number, all optinal
|
(-(?P<extra_ab_ep_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # "-" as separator and anditional absolute number, all optinal
|
||||||
(v(?P<version>[0-9]))? # the version e.g. "v2"
|
(v(?P<version>[0-9]))? # the version e.g. "v2"
|
||||||
.*?
|
.*?
|
||||||
'''
|
'''
|
||||||
|
@ -346,8 +346,8 @@ anime_regexes = {'anime':[
|
||||||
# Bleach - 313-314 - s16e03-04
|
# Bleach - 313-314 - s16e03-04
|
||||||
'''
|
'''
|
||||||
^(?P<series_name>.+?)[ ._-]+ # start of string and series name and non optinal separator
|
^(?P<series_name>.+?)[ ._-]+ # start of string and series name and non optinal separator
|
||||||
(?P<ep_ab_num>(?!(1080|720|480)[pi])\d{1,3}) # absolute number
|
(?P<ep_ab_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}) # absolute number
|
||||||
(-(?P<extra_ab_ep_num>(?!(1080|720|480)[pi])\d{1,3}))? # "-" as separator and anditional absolute number, all optinal
|
(-(?P<extra_ab_ep_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # "-" as separator and anditional absolute number, all optinal
|
||||||
(v(?P<version>[0-9]))? # the version e.g. "v2"
|
(v(?P<version>[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
|
([ ._-]{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<season_num>\d+)[. _-]* # S01 and optional separator
|
[sS](?P<season_num>\d+)[. _-]* # S01 and optional separator
|
||||||
|
@ -361,8 +361,8 @@ anime_regexes = {'anime':[
|
||||||
('anime_and_normal_front',
|
('anime_and_normal_front',
|
||||||
# 165.Naruto Shippuuden.s08e014
|
# 165.Naruto Shippuuden.s08e014
|
||||||
'''
|
'''
|
||||||
^(?P<ep_ab_num>(?!(1080|720|480)[pi])\d{1,3}) # start of string and absolute number
|
^(?P<ep_ab_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}) # start of string and absolute number
|
||||||
(-(?P<extra_ab_ep_num>(?!(1080|720|480)[pi])\d{1,3}))? # "-" as separator and anditional absolute number, all optinal
|
(-(?P<extra_ab_ep_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # "-" as separator and anditional absolute number, all optinal
|
||||||
(v(?P<version>[0-9]))?[ ._-]+ # the version e.g. "v2"
|
(v(?P<version>[0-9]))?[ ._-]+ # the version e.g. "v2"
|
||||||
(?P<series_name>.+?)[ ._-]+
|
(?P<series_name>.+?)[ ._-]+
|
||||||
[sS](?P<season_num>\d+)[. _-]* # S01 and optional separator
|
[sS](?P<season_num>\d+)[. _-]* # S01 and optional separator
|
||||||
|
@ -377,8 +377,8 @@ anime_regexes = {'anime':[
|
||||||
'''
|
'''
|
||||||
^(?:\[(?P<release_group>.+?)\][ ._-]*)
|
^(?:\[(?P<release_group>.+?)\][ ._-]*)
|
||||||
(?P<series_name>.+?)[ ._-]+
|
(?P<series_name>.+?)[ ._-]+
|
||||||
(?P<ep_ab_num>(?!(1080|720|480)[pi])\d{1,3})
|
(?P<ep_ab_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3})
|
||||||
(-(?P<extra_ab_ep_num>(?!(1080|720|480)[pi])\d{1,3}))?[ ._-]*?
|
(-(?P<extra_ab_ep_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))?[ ._-]*?
|
||||||
(?:v(?P<version>[0-9])[ ._-]+?)?
|
(?:v(?P<version>[0-9])[ ._-]+?)?
|
||||||
(?:.+?[ ._-]+?)?
|
(?:.+?[ ._-]+?)?
|
||||||
\[(?P<extra_info>\w+)\][ ._-]?
|
\[(?P<extra_info>\w+)\][ ._-]?
|
||||||
|
@ -393,8 +393,8 @@ anime_regexes = {'anime':[
|
||||||
'''
|
'''
|
||||||
^(\[(?P<release_group>.+?)\][ ._-]*)?
|
^(\[(?P<release_group>.+?)\][ ._-]*)?
|
||||||
(?P<series_name>.+?)[ ._-]+ # Show_Name and separator
|
(?P<series_name>.+?)[ ._-]+ # Show_Name and separator
|
||||||
(?P<ep_ab_num>(?!(1080|720|480)[pi])\d{1,3}) # E01
|
(?P<ep_ab_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}) # E01
|
||||||
(-(?P<extra_ab_ep_num>(?!(1080|720|480)[pi])\d{1,3}))? # E02
|
(-(?P<extra_ab_ep_num>((?!(1080|720|480)[pi])|(?![hx].?264))\d{1,3}))? # E02
|
||||||
(v(?P<version>[0-9]))? # v2
|
(v(?P<version>[0-9]))? # v2
|
||||||
.*? # Separator and EOL
|
.*? # Separator and EOL
|
||||||
''')
|
''')
|
||||||
|
|
Loading…
Reference in a new issue