add tag-mp3s.py
This commit is contained in:
parent
9135749b9e
commit
9a9e1979e1
62
tag-mp3s.py
Executable file
62
tag-mp3s.py
Executable file
@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import getopt
|
||||
import glob
|
||||
import mutagen.id3
|
||||
import mutagen.mp3
|
||||
import os
|
||||
import sys
|
||||
|
||||
min_mp3s_for_album = 4
|
||||
|
||||
def walk_tree(base_dir, visit_function):
|
||||
visit_function(base_dir)
|
||||
for ent in os.listdir(base_dir):
|
||||
if ent.startswith("."):
|
||||
next
|
||||
path = "%s/%s" % (base_dir, ent)
|
||||
if os.path.isdir(path):
|
||||
walk_tree(path, visit_function)
|
||||
|
||||
def process_dir(path):
|
||||
mp3s = glob.glob("%s/*.mp3" % path)
|
||||
jpgs = glob.glob("%s/*.jpg" % path)
|
||||
if len(mp3s) < min_mp3s_for_album:
|
||||
return
|
||||
if len(jpgs) == 0:
|
||||
sys.stderr.write("No album artwork found in %s\n" % path)
|
||||
return
|
||||
if len(jpgs) > 1:
|
||||
sys.stderr.write("Multiple album artwork files found in %s\n" % path)
|
||||
return
|
||||
for mp3 in mp3s:
|
||||
add_artwork(mp3, jpgs[0])
|
||||
|
||||
def read_file(fname):
|
||||
f = open(fname, "rb")
|
||||
data = f.read()
|
||||
f.close()
|
||||
return data
|
||||
|
||||
def add_artwork(mp3_path, jpg_path):
|
||||
mp3 = mutagen.mp3.MP3(mp3_path)
|
||||
current_tags = mp3.tags
|
||||
apic_tags = [tag for tag in current_tags if tag == "APIC" or tag.startswith("APIC:")]
|
||||
if len(apic_tags) >= 1:
|
||||
return
|
||||
print("Adding APIC tag to %s..." % mp3_path)
|
||||
jpg_data = read_file(jpg_path)
|
||||
apic = mutagen.id3.APIC(0, "image/jpeg", 0, "", jpg_data)
|
||||
mp3.tags.add(apic)
|
||||
mp3.save()
|
||||
|
||||
def main(argv):
|
||||
base_dir = "."
|
||||
opts, args = getopt.getopt(argv, 'd:')
|
||||
for opt, val in opts:
|
||||
if opt == '-d':
|
||||
base_dir = val
|
||||
walk_tree(base_dir, process_dir)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main(sys.argv[1:])
|
Loading…
x
Reference in New Issue
Block a user