diff options
| author | Mikhail Osipov <mike.osipov@gmail.com> | 2013-10-30 23:10:48 +0400 |
|---|---|---|
| committer | Mikhail Osipov <mike.osipov@gmail.com> | 2013-10-30 23:10:48 +0400 |
| commit | 7b249334370477fbc2076ef6982344e26865945b (patch) | |
| tree | 57873fae69377bede237bce6bf172047c72c28c7 /cutter.py | |
| parent | 889c93ee3542537eefeb24e8820445f2bc5f153c (diff) | |
add --tracks option (not used yet)
Diffstat (limited to 'cutter.py')
| -rwxr-xr-x | cutter.py | 36 |
1 files changed, 36 insertions, 0 deletions
@@ -9,6 +9,9 @@ from optparse import OptionParser, OptionGroup import sys import os +import re + +re_range = re.compile("^(\d+)-(\d+)$") try: from cutter import config @@ -100,6 +103,8 @@ def parse_args(): dest="bitrate", default=config.MP3_BITRATE, help="audio bitrate (used for mp3)") + enc.add_option("--tracks", dest="tracks", help="select tracks") + parser.add_option_group(enc) fname = OptionGroup(parser, "Filename options") @@ -152,6 +157,29 @@ def option_check_range(option, value, min, max): return True +def tracks_parse(string): + tracks = set() + + for item in string.split(","): + try: + value = int(item) + tracks.add(value) + except ValueError: + m = re_range.match(item) + if not m: + return None + + start, end = int(m.group(1)), int(m.group(2)) + if start <= 0 or end <= 0 or start == end: + return None + + if start > end: + start, end = end, start + + tracks.update(range(start, end + 1)) + + return None if len(tracks) == 0 else tracks + def process_options(opt): def choose(a, b): return a if a is not None else b @@ -202,6 +230,14 @@ def process_options(opt): if opt.use_tempdir is None: opt.use_tempdir = config.USE_TEMPDIR + if opt.tracks is not None: + tracks = tracks_parse(opt.tracks) + if not tracks: + printerr("invalid tracks option \"%s\"", opt.tracks) + return False + + opt.tracks = tracks + return True def find_cuefile(path): |
