Sfoglia il codice sorgente

added symuid.tag_interface.ID3.set_uuid()

Fabian Peter Hammerle 5 anni fa
parent
commit
bee747baf5
2 ha cambiato i file con 10 aggiunte e 21 eliminazioni
  1. 4 21
      symuid-sync
  2. 6 0
      symuid/tag_interface.py

+ 4 - 21
symuid-sync

@@ -21,23 +21,6 @@ def generate_uuid():
     return subprocess.check_output(['uuid', '-v', '4', '-F', 'BIN']).strip()
 
 
-def get_or_assign_uuid_id3(track):
-    uuid = track._iface.get_uuid()
-    if uuid is None:
-        id3_tags = track._iface._mutagen_file.tags
-        # mutagen.id3._specs.EncodedTextSpec.write encodes 'owner'
-        id3_tags.add(mutagen.id3.UFID(
-            owner=track._iface._UFID_OWNER_ID,
-            data=generate_uuid(),
-        ))
-        id3_tags.save()
-        id3_tags.load(filename=id3_tags.filename)
-        uuid = track._iface.get_uuid()
-        print("{!r}: assigned uuid {!r}".format(id3_tags.filename, uuid))
-        assert uuid is not None
-    return uuid
-
-
 def get_or_assign_uuid_mp4(mp4_file):
     if not TRACK_UUID_MP4_TAG in mp4_file:
         mp4_file[TRACK_UUID_MP4_TAG] = mutagen.mp4.MP4FreeForm(
@@ -70,10 +53,10 @@ def symuid_sync(path, path_ignore_regex, show_ignored=False):
         ):
         if isinstance(track._iface, symuid.tag_interface.MP4):
             get_or_assign_uuid_mp4(track._iface._mutagen_file)
-        elif isinstance(track._iface, symuid.tag_interface.ID3):
-            get_or_assign_uuid_id3(track)
-        else:
-            raise Exception(track)
+        elif track._iface.get_uuid() is None:
+            track._iface.set_uuid(generate_uuid())
+            track._iface.save()
+            log_path(track.path, 'assigned uuid {!r}'.format(track._iface.get_uuid()))
 
 
 def _init_argparser():

+ 6 - 0
symuid/tag_interface.py

@@ -56,6 +56,12 @@ class ID3(_mutagen):
                 return ufid.data
         return None
 
+    def set_uuid(self, uuid):
+        # mutagen.id3._specs.EncodedTextSpec.write encodes 'owner'
+        tag = mutagen.id3.UFID(owner=self._UFID_OWNER_ID, data=uuid)
+        self._mutagen_file.tags.add(tag)
+        return tag
+
 
 class MP4(_mutagen):