]> git.phdru.name Git - audio-cdr-video.git/commitdiff
Feat(audio/mp3): Add script `tag2name_format`
authorOleg Broytman <phd@phdru.name>
Sat, 7 Dec 2019 21:06:56 +0000 (00:06 +0300)
committerOleg Broytman <phd@phdru.name>
Sat, 7 Dec 2019 21:06:56 +0000 (00:06 +0300)
audio/mp3/tag2name_format.py [new file with mode: 0755]

diff --git a/audio/mp3/tag2name_format.py b/audio/mp3/tag2name_format.py
new file mode 100755 (executable)
index 0000000..66373e4
--- /dev/null
@@ -0,0 +1,27 @@
+#! /usr/bin/env python
+
+import sys, os
+import eyed3
+from eyed3.id3.frames import TITLE_FID, id3EncodingToString
+from m_lib.defenc import default_encoding
+
+def id3tag_recode(value):
+    try:
+        return value.encode(default_encoding)
+    except UnicodeEncodeError:
+        return value.encode('latin1')
+
+format_str = sys.argv[1]  # Example: '{track:d} - {title}.mp3'
+files = sys.argv[2:]
+for filename in files:
+    id3tag = eyed3.id3.tag.Tag()
+    id3tag.parse(filename)
+    album = id3tag_recode(id3tag.album)
+    artist = id3tag_recode(id3tag.artist)
+    title = id3tag_recode(id3tag.title)
+    os.rename(filename, format_str.format(
+        album=album,
+        artist=artist,
+        title=title,
+        track=id3tag.track_num[0],
+    ))