Ver código fonte

symuid.Track._get_id3_textframe_int()

Fabian Peter Hammerle 6 anos atrás
pai
commit
840c898576
1 arquivos alterados com 9 adições e 6 exclusões
  1. 9 6
      symuid/__init__.py

+ 9 - 6
symuid/__init__.py

@@ -27,6 +27,11 @@ class Track:
     def has_mp4_tags(self):
         return self.has_tags and isinstance(self._mutagen.tags, mutagen.mp4.MP4Tags)
 
+    def _get_id3_textframe_int(self, tag_label):
+        values = self._mutagen.tags['TXXX:' + tag_label].text
+        assert len(values) == 1, values
+        return int(values[0])
+
     def _get_mp4_freeform_int(self, tag_label):
         tag, = self._mutagen.tags['----:' + tag_label]
         # "a signed big-endian integer with length one of { 1,2,3,4,8 } bytes"
@@ -51,12 +56,10 @@ class Track:
             player, library_id, register_dt.timestamp(),
         )
         if self.has_id3_tags:
-            tag_label_id3 = 'TXXX:' + tag_label
-            if tag_label_id3 in self._mutagen.tags:
-                reg_data = self._mutagen.tags[tag_label_id3].text
-                assert len(reg_data) == 1, reg_data
-                assert int(reg_data[0]) == play_count, (reg_data, play_count)
-            else:
+            try:
+                reg_count = self._get_id3_textframe_int(tag_label)
+                assert reg_count == play_count, (reg_count, play_count)
+            except KeyError:
                 # mutagen.id3._specs.EncodedTextSpec.write encodes
                 # 'desc' and 'text'
                 tag = mutagen.id3.TXXX(