]> diplodocus.org Git - flac-archive/blobdiff - rewrite-tags
todo
[flac-archive] / rewrite-tags
index 1d4b41242b481d0a8fc66f2423b3cd9437516224..eec265e548186c784ed78a26fb8f5f274bc984d9 100755 (executable)
@@ -74,11 +74,18 @@ def do_read(filenames):
                 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
 
@@ -89,8 +96,12 @@ def do_write(args):
         sys.stderr.write('expected %d flac files, got %d\n'
                          % (len(tags), len(args)))
         return 2
-    artist = tags.get_path_safe('ARTIST')
+    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: