@@ 102,8 102,13 @@ class Episode:
else:
return f'S{self.season:02}E{self.number:02}'
+
+def cleanup_filename(file):
+ file = re.sub('[\[\(][0-9A-Fa-f]{8}[\]\)]', '[########]', file)
+ file = re.sub('\d', '#', file)
+ return file
def find_common_ends(files):
- files = map(lambda x: re.sub('\d', '#', x), files)
+ files = map(cleanup_filename, files)
needle = next(files)
pfxlen = len(needle)
sfxlen = len(needle)
@@ 124,17 129,14 @@ def find_sXXeXX(name):
season, episode = 0, 0
- if (m := re.search('S([0-9]+)', name, re.I)) is not None:
+ if (m := re.search('([0-9]+)(?:st|nd|rd|th)\\DSeason', name, re.I)) is not None:
season = int(m.group(1))
name = name[:m.start()] + name[m.end():]
elif (m := re.search('Se?a?s?o?n?\\D?([0-9]+)', name, re.I)) is not None:
season = int(m.group(1))
name = name[:m.start()] + name[m.end():]
-
- if (m := re.search('E([0-9]+)', name, re.I)) is not None:
- episode = int(m.group(1))
- elif (m := re.search('E\p\i\s\o\d\e\\D?([0-9]+)', name, re.I)) is not None:
+ if (m := re.search('Ep?i?s?o?d?e?\D?([0-9]+)', name, re.I)) is not None:
episode = int(m.group(1))
elif (m := re.search('([0-9]+)', name, re.I)) is not None:
episode = int(m.group(1))