# this check belongs in Tags
if len(track_tags) != 1:
sys.stderr.write('bogus TRACKNUMBER %s: %s\n' % (track_tags, fn))
- return 3
+ return 4
track = int(track_tags[0])
for tag, values in tags._global.iteritems():
# Makes no sense to save TRACKNUMBER in coll_tags.
coll_tags.set(tag, value, track)
for tag, values in all_tags.iteritems():
if len(values) == 1:
- # Only one value for this tag, so add it to global tags.
- coll_tags.set(tag, list(values)[0])
- # And now remove it from each track tags.
+ # Only one value for this tag, but does that one value appear on
+ # all tracks?
for track, tags in coll_tags._tracks.iteritems():
- del tags[tag]
+ if not tag in tags:
+ # Nope.
+ break
+ else:
+ # Yep, so add it to global tags.
+ coll_tags.set(tag, list(values)[0])
+ # And now remove it from each track tags.
+ for track, tags in coll_tags._tracks.iteritems():
+ del tags[tag]
print '\n'.join(coll_tags.all())
return 0
if len(args) != len(tags):
sys.stderr.write('expected %d flac files, got %d\n'
% (len(tags), len(args)))
- return 4
- artist = tags.get_path_safe('ARTIST')
+ return 2
+ artist = tags.get_path_safe('ALBUMARTIST')
+ if not artist:
+ artist = tags.get_path_safe('ARTIST')
album = tags.get_path_safe('ALBUM')
+ if not album:
+ album = tags.get_path_safe('ALBUM', track=1)
try:
os.mkdir(artist)
except OSError, e:
def main(args):
if len(args) < 3:
return usage()
- if args[1] == 'read':
- return do_read(args[2:])
- if args[1] == 'write':
- return do_write(args[2:])
+ try:
+ if args[1] == 'read':
+ return do_read(args[2:])
+ if args[1] == 'write':
+ return do_write(args[2:])
+ except SubprocessError, e:
+ sys.stderr.write('%s\n%s\n' % (e.stderr, e))
+ return 3
return usage()
def usage():