Browse Source

_tag_interface.OggOpus: implement set_free_int

Fabian Peter Hammerle 4 years ago
parent
commit
db992695b5
2 changed files with 17 additions and 2 deletions
  1. 2 2
      symuid/_tag_interface.py
  2. 15 0
      tests/tag_interface/test_ogg_vorbis.py

+ 2 - 2
symuid/_tag_interface.py

@@ -252,8 +252,8 @@ class OggOpus(_MutagenTagInterface):
         dec = self._get_single_text(tag_label)
         return int(dec) if dec else None
 
-    def set_free_int(self, tag_label, data):
-        raise NotImplementedError()
+    def set_free_int(self, tag_label: str, data: int) -> None:
+        self._mutagen_file[tag_label] = str(data)
 
     def get_free_ints(self, tag_label_prefix):
         raise NotImplementedError()

+ 15 - 0
tests/tag_interface/test_ogg_vorbis.py

@@ -88,3 +88,18 @@ def test_set_track_uuid(empty_ogg_opus_path):
 def test_get_free_int(tracks_dir_path, track_name, tag_label, expected_int):
     iface = OggOpus(mutagen.File(os.path.join(tracks_dir_path, track_name)))
     assert expected_int == iface.get_free_int(tag_label)
+
+
+def test_set_free_int(empty_ogg_opus_path):
+    iface = OggOpus(mutagen.File(empty_ogg_opus_path))
+    assert iface.get_free_int('tracknumber') is None
+    iface.set_free_int('tracknumber', 7)
+    assert iface.get_free_int('tracknumber') == 7
+    iface.set_free_int('tracknumber', 14)
+    assert iface.get_free_int('tracknumber') == 14
+    iface.save()
+    iface_reread = OggOpus(mutagen.File(empty_ogg_opus_path))
+    assert iface_reread.get_free_int('tracknumber') == 14
+    tags = mutagen.File(iface.track_path).tags
+    assert len(tags) == 1
+    assert tags.items()[0] == ('tracknumber', ['14'])