diff options
| author | Mikhail Osipov <mike.osipov@gmail.com> | 2013-11-06 02:56:01 +0400 |
|---|---|---|
| committer | Mikhail Osipov <mike.osipov@gmail.com> | 2013-11-06 02:56:01 +0400 |
| commit | 425a97f98026d154651feac9cb0884a1f8af7cc5 (patch) | |
| tree | 41644042eb80db38926d1271ef0223771d6ce840 /cutter/splitter.py | |
| parent | 1c899a6f29e1fb65b26eb553162d13b63353c1ea (diff) | |
show progress of encoding
Diffstat (limited to 'cutter/splitter.py')
| -rw-r--r-- | cutter/splitter.py | 69 |
1 files changed, 66 insertions, 3 deletions
diff --git a/cutter/splitter.py b/cutter/splitter.py index 332ce50..4446bcc 100644 --- a/cutter/splitter.py +++ b/cutter/splitter.py @@ -74,6 +74,65 @@ class StreamInfo: return stream.info() +class Progress: + def __init__(self, message): + self.progress_shown = False + self.message = message + + def erase(self, n): + if not self.progress_shown: + self.last_length = n + self.progress_shown = True + return 0 + + prev, self.last_length = self.last_length, n + return prev + + def show(self, msg): + printf("%s", "\b" * self.erase(len(msg)) + msg) + + def do_print(self): + if self.percent > self.last_percent: + self.show("%3d%% " % self.percent) + self.last_percent = self.percent + + def clear(self): + if self.last_length: + self.show(" " * self.last_length) + + def init(self, total): + self.total = total + self.current = 0 + self.percent = 0 + self.last_percent = -1 + self.last_length = 0 + + self.do_print() + + def update(self, value): + self.current += value + percent = 100 * self.current // self.total + self.percent = min(max(percent, 0), 100) + + self.do_print() + + def finish(self): + n = max(self.last_length - len(self.message), 0) + self.show(self.message + " " * n + "\n") + +class DummyProgress: + def __init__(self, message): + self.message = message + + def init(self, total): + pass + + def update(self, value): + pass + + def finish(self): + printf("%s\n", self.message) + class Splitter: EXT = ["ape", "flac", "wv"] @@ -327,6 +386,12 @@ class Splitter: return track.end - track.begin + def progress(self, message): + if self.opt.show_progress: + return Progress(message) + + return DummyProgress(message) + def split_file(self, file): stream = self.open_decode(file.path) if not stream: @@ -364,11 +429,9 @@ class Splitter: printf("FAILED\n") sys.exit(1) - out.process() + out.process(self.progress("OK")) out.close() - printf("OK\n") - self.tag(track, path) stream.close() |
