diff options
Diffstat (limited to 'cutter/splitter.py')
| -rw-r--r-- | cutter/splitter.py | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/cutter/splitter.py b/cutter/splitter.py index 24e8eac..3109c14 100644 --- a/cutter/splitter.py +++ b/cutter/splitter.py @@ -4,10 +4,10 @@ from . tools import * from . import formats from tempfile import mkdtemp -from itertools import chain import collections import subprocess +import itertools import shutil import sys import os @@ -143,6 +143,7 @@ class Splitter: def __init__(self, cue, opt): self.cue = cue self.opt = opt + self.tracks = None self.encoder = formats.encoder(opt.type) self.tag_supported = self.encoder.is_tag_supported() @@ -201,10 +202,6 @@ class Splitter: return lst - def shntool_args(self, tool, info): - encode = self.encoder.encode(self.opt, info) - return [tool, "-w", "-d", self.dest, "-o", encode] - def track_name(self, track): return self.track_info[track].name @@ -317,10 +314,16 @@ class Splitter: return for track in file.tracks(): + ts = self.track_timerange(track) + + if track not in self.tracks: + if self.opt.verbose: + printf("split %s (%s): SKIP\n", quote(file.path), ts) + continue + trackname = self.track_name(track) path = os.path.join(self.dest, trackname) - ts = self.track_timerange(track) printf("split %s (%s) -> %s", quote(file.path), ts, quote(trackname)) printf("\n" if self.opt.dry_run else ": ") @@ -392,7 +395,18 @@ class Splitter: sys.exit(1) def all_tracks(self): - return chain(*[f.tracks() for f in self.cue.files()]) + if self.tracks: + return self.tracks + + tracks = itertools.chain(*[f.tracks() for f in self.cue.files()]) + + if self.opt.tracks is None: + self.tracks = list(tracks) + else: + mapped = zip(tracks, itertools.count(1)) + self.tracks = [t for t, n in mapped if n in self.opt.tracks] + + return self.tracks def dump_tags(self): add_line = False |
