X-Git-Url: https://diplodocus.org/git/flac-archive/blobdiff_plain/103ef1e59f02e8154e96d7e944fb0319dda09c31..2b924fb847b63a10724e855ea0d61fca60d4723e:/rewrite-tags diff --git a/rewrite-tags b/rewrite-tags index 84eb1f8..6d47eaa 100755 --- a/rewrite-tags +++ b/rewrite-tags @@ -8,24 +8,30 @@ from org.diplodocus.util import run_or_die from flac_archive.tags import Tags class SubprocessError(Exception): - def __init__(self, status, stderr=None): + def __init__(self, status, command=None, stderr=None): + if command is None: + command_msg = None + else: + command_msg = ': ' + ' '.join(command) if status < 0: - msg = 'exited due to signal %d' + msg = 'exited due to signal %d%s' else: - msg = 'exit status %d' - Exception.__init__(self, msg % (abs(status),)) + msg = 'exit status %d%s' + Exception.__init__(self, msg % (abs(status), command_msg)) self.status = status + self.command = command self.stderr = stderr def get_tags(fn): tags = Tags() - p = Popen(['metaflac', '--no-utf8-convert', '--export-tags-to=-', fn], - stdout=PIPE) + + command = ['metaflac', '--no-utf8-convert', '--export-tags-to=-', fn] + p = Popen(command, stdout=PIPE) tags.load(p.stdout) status = p.wait() if status != 0: - raise SubprocessError(status, p.stderr) + raise SubprocessError(status, command=command, stderr=p.stderr) return tags @@ -40,7 +46,8 @@ def do_read(filenames): tags = get_tags(fn) track_tags = tags.get('TRACKNUMBER') if len(track_tags) != 1: - raise Exception('bogus TRACKNUMBER %s for %s' % (track_tags, fn)) + sys.stderr.write('bogus TRACKNUMBER %s: %s\n' % (track_tags, fn)) + return 3 track = int(track_tags[0]) for tag, values in tags._global.iteritems(): for value in values: @@ -57,6 +64,7 @@ def do_read(filenames): for track, tags in coll_tags._tracks.iteritems(): del tags[tag] print '\n'.join(coll_tags.all()) + return 0 def main(args): if len(args) < 3: