summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO5
-rwxr-xr-xcutter.py4
-rw-r--r--cutter/splitter.py28
3 files changed, 26 insertions, 11 deletions
diff --git a/TODO b/TODO
index 4733a1f..4c17216 100644
--- a/TODO
+++ b/TODO
@@ -9,5 +9,6 @@ OK 8. add charset coding argument
OK 9. prepare setup
OK 10. create default config on startup
OK 11. make cchardet optional
-12. manually convert files
-13. use python wave module
+OK 12. manually convert files
+OK 13. use python wave module
+14. show progress of encoding
diff --git a/cutter.py b/cutter.py
index 5ed49ab..ab8c51f 100755
--- a/cutter.py
+++ b/cutter.py
@@ -156,7 +156,7 @@ def option_check_range(option, value, min, max):
return True
-def tracks_parse(string):
+def parse_tracks(string):
tracks = set()
for item in string.split(","):
@@ -230,7 +230,7 @@ def process_options(opt):
opt.use_tempdir = config.USE_TEMPDIR
if opt.tracks is not None:
- tracks = tracks_parse(opt.tracks)
+ tracks = parse_tracks(opt.tracks)
if not tracks:
printerr("invalid tracks option \"%s\"", opt.tracks)
return False
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