From 4f8020f78a87ec1202c68811c850f7d2aa1b2cd6 Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Fri, 18 Mar 2022 10:32:46 +0000 Subject: [PATCH 1/1] mkm3u: Make filename parser commit to a set of patterns. Now hopefully it won't get confused by things which look like foreign patterns but are actually just anomalies that it shouldn't worry about. --- mkm3u | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/mkm3u b/mkm3u index 08ef4ff..21c9a4b 100755 --- a/mkm3u +++ b/mkm3u @@ -159,16 +159,18 @@ def match_group(m, *groups, dflt = None, mustp = False): class VideoDir (object): - _R_ISO_PRE = list(map(lambda pat: RX.compile("^" + pat + r"\.iso$", RX.X), - [r""" S? (?P \d+) [A-Z]? \. \ (?P .*) — - (?: D \d+ \. \ )? - (?P .*) """, - r""" S (?P \d+) (?: D \d+)? \. \ (?P .*) """, - r""" S (?P \d+) \. \ (?P E \d+ .*) """, - r""" S (?P \d+) \. \ (?P E \d+ .*) """, - r""" S (?P \d+) (?P E \d+) \. \ .* """, - r""" \d+ \. \ (?P [ES] \d+ .*) """, - r""" (?P \d+ ) \. \ .* """])) + _R_ISO_PRE = list(map(lambda pats: + list(map(lambda pat: + RX.compile("^" + pat + r"\.iso$", RX.X), + pats)), + [[r""" S (?P \d+) \. \ (?P .*) — (?: D \d+ \. \ )? + (?P .*) """, + r""" S (?P \d+) (?: D \d+)? \. \ (?P .*) """, + r""" S (?P \d+) \. \ (?P E \d+ .*) """, + r""" S (?P \d+) (?P E \d+) \. \ .* """], + [r""" (?P \d+) [A-Z]? \. \ (?P .*) — (?P .*) """], + [r""" \d+ \. \ (?P [ES] \d+ .*) """], + [r""" (?P \d+ ) \. \ .* """]])) _R_ISO_EP = RX.compile(r""" ^ (?: S (?P \d+) \ )? @@ -181,13 +183,18 @@ class VideoDir (object): fns.sort() season = None seasons = {} + styles = me._R_ISO_PRE for fn in fns: path = OS.path.join(dir, fn) if not fn.endswith(".iso"): continue #print(";; `%s'" % path, file = SYS.stderr) - for r in me._R_ISO_PRE: - m = r.match(fn) - if m: break + for sty in styles: + for r in sty: + m = r.match(fn) + if m: styles = [sty]; break + else: + continue + break else: #print(";;\tignored (regex mismatch)", file = SYS.stderr) continue -- 2.11.0