Improve metadata fixing mechanism

This commit is contained in:
Ritiek
2017-06-24 20:38:06 +05:30
parent 52fd85aac0
commit fb3c7e9ec3
2 changed files with 13 additions and 12 deletions

View File

@@ -25,23 +25,23 @@ def compare(file, metadata):
already_tagged = False
return already_tagged
def embed(music_file, meta_tags, output_ext):
def embed(music_file, meta_tags):
if sys.version_info < (3, 0):
music_file = music_file.encode('utf-8')
if meta_tags is None:
print('Could not find meta-tags')
elif output_ext == '.m4a':
elif music_file.endswith('.m4a'):
print('Fixing meta-tags')
embed_m4a(music_file, meta_tags, output_ext)
elif output_ext == '.mp3':
embed_m4a(music_file, meta_tags)
elif music_file.endswith('.mp3'):
print('Fixing meta-tags')
embed_mp3(music_file, meta_tags, output_ext)
embed_mp3(music_file, meta_tags)
else:
print('Cannot embed meta-tags into given output extension')
def embed_mp3(music_file, meta_tags, output_ext):
def embed_mp3(music_file, meta_tags):
# EasyID3 is fun to use ;)
audiofile = EasyID3('Music/' + music_file + output_ext)
audiofile = EasyID3('Music/' + music_file)
audiofile['artist'] = meta_tags['artists'][0]['name']
audiofile['albumartist'] = meta_tags['artists'][0]['name']
audiofile['album'] = meta_tags['album']['name']
@@ -64,13 +64,13 @@ def embed_mp3(music_file, meta_tags, output_ext):
if meta_tags['copyright']:
audiofile['copyright'] = meta_tags['copyright']
audiofile.save(v2_version=3)
audiofile = ID3('Music/' + music_file + output_ext)
audiofile = ID3('Music/' + music_file)
albumart = urllib2.urlopen(meta_tags['album']['images'][0]['url'])
audiofile["APIC"] = APIC(encoding=3, mime='image/jpeg', type=3, desc=u'Cover', data=albumart.read())
albumart.close()
audiofile.save(v2_version=3)
def embed_m4a(music_file, meta_tags, output_ext):
def embed_m4a(music_file, meta_tags):
# Apple has specific tags - see mutagen docs -
# http://mutagen.readthedocs.io/en/latest/api/mp4.html
tags = {'album': '\xa9alb',
@@ -90,7 +90,7 @@ def embed_m4a(music_file, meta_tags, output_ext):
'copyright': 'cprt',
'tempo': 'tmpo'}
audiofile = MP4('Music/' + music_file + output_ext)
audiofile = MP4('Music/' + music_file)
audiofile[tags['artist']] = meta_tags['artists'][0]['name']
audiofile[tags['albumartist']] = meta_tags['artists'][0]['name']
audiofile[tags['album']] = meta_tags['album']['name']

View File

@@ -317,7 +317,8 @@ def grab_single(raw_song, number=None):
convert_song(music_file)
meta_tags = generate_metadata(raw_song)
if not args.no_metadata:
metadata.embed(music_file, meta_tags, args.output_ext)
output = music_file + args.output_ext
metadata.embed(output, meta_tags)
else:
print('No audio streams available')