From fb3c7e9ec32c2abbe8ffa341c8d23bcde8f1f963 Mon Sep 17 00:00:00 2001 From: Ritiek Date: Sat, 24 Jun 2017 20:38:06 +0530 Subject: [PATCH] Improve metadata fixing mechanism --- core/metadata.py | 22 +++++++++++----------- spotdl.py | 3 ++- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/core/metadata.py b/core/metadata.py index 9736285..e6e5adb 100755 --- a/core/metadata.py +++ b/core/metadata.py @@ -25,23 +25,23 @@ def compare(file, metadata): already_tagged = False return already_tagged -def embed(music_file, meta_tags, output_ext): - if sys.version_info < (3, 0): +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'] diff --git a/spotdl.py b/spotdl.py index 03d4d52..2b1727c 100755 --- a/spotdl.py +++ b/spotdl.py @@ -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')