From 3488b2fcf6378c1d24ed530940c9b15a872743b0 Mon Sep 17 00:00:00 2001 From: Gael Pasgrimaud Date: Mon, 16 Dec 2013 23:53:26 +0100 Subject: [PATCH] improve serie regexp --- chut/examples/vlserie.py | 15 +++++++++------ docs/_static/binaries/vlserie | 15 +++++++++------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/chut/examples/vlserie.py b/chut/examples/vlserie.py index f9ff964..d3a567e 100644 --- a/chut/examples/vlserie.py +++ b/chut/examples/vlserie.py @@ -6,13 +6,14 @@ __version__ = "0.11" -_episode = re.compile(r's([0-9]+)\s*e\s*([0-9]+)') +_episode = re.compile(r'[^0-9]+(?P[0-9]+)\s*(x|e)\s*(?P[0-9]+)[^0-9]+') def extract_numbers(f): - season, episode = _episode.findall(f.lower())[0] - episode = int(season), int(episode) - return episode + m = _episode.search(f.lower()) + if m: + m = m.groupdict() + return int(m['s']), int(m['e']) @console_script(fmt='brief') @@ -88,16 +89,18 @@ def play(filename, episode): serie = config[path.abspath('.')] filenames = find( - '. -iregex ".*s[0-9]+\s*e\s*[0-9]+.*\(avi\|wmv\|mkv\|mp4\)"', + '. -iregex ".*[0-9]+\s*\(e\|x\)\s*[0-9]+.*\(avi\|wmv\|mkv\|mp4\)"', shell=True) filenames = [path.abspath(f) for f in filenames] filenames = sorted([(extract_numbers(f), f) for f in filenames]) + filenames = [(e, f) for e, f in filenames if f is not None] + print(filenames) if args['']: episode = int(args['']), int(args['']) filenames = [(x, f) for x, f in filenames if x >= episode] elif serie.latest: - episode = extract_numbers(serie.latest) + episode = extract_numbers(serie.latest.lower()) if args['--latest']: filenames = [(x, f) for x, f in filenames if x >= episode] else: diff --git a/docs/_static/binaries/vlserie b/docs/_static/binaries/vlserie index 51d2570..673ebbf 100755 --- a/docs/_static/binaries/vlserie +++ b/docs/_static/binaries/vlserie @@ -41,13 +41,14 @@ import re __version__ = "0.11" -_episode = re.compile(r's([0-9]+)\s*e\s*([0-9]+)') +_episode = re.compile(r'[^0-9]+(?P[0-9]+)\s*(x|e)\s*(?P[0-9]+)[^0-9]+') def extract_numbers(f): - season, episode = _episode.findall(f.lower())[0] - episode = int(season), int(episode) - return episode + m = _episode.search(f.lower()) + if m: + m = m.groupdict() + return int(m['s']), int(m['e']) @console_script(fmt='brief') @@ -123,16 +124,18 @@ def vlserie(args): serie = config[path.abspath('.')] filenames = find( - '. -iregex ".*s[0-9]+\s*e\s*[0-9]+.*\(avi\|wmv\|mkv\|mp4\)"', + '. -iregex ".*[0-9]+\s*\(e\|x\)\s*[0-9]+.*\(avi\|wmv\|mkv\|mp4\)"', shell=True) filenames = [path.abspath(f) for f in filenames] filenames = sorted([(extract_numbers(f), f) for f in filenames]) + filenames = [(e, f) for e, f in filenames if f is not None] + print(filenames) if args['']: episode = int(args['']), int(args['']) filenames = [(x, f) for x, f in filenames if x >= episode] elif serie.latest: - episode = extract_numbers(serie.latest) + episode = extract_numbers(serie.latest.lower()) if args['--latest']: filenames = [(x, f) for x, f in filenames if x >= episode] else: