Add metadata test

This commit is contained in:
Ritiek
2017-06-25 02:34:55 +05:30
parent e0fb227ea5
commit e18a74ccc3
4 changed files with 24 additions and 8 deletions

View File

@@ -7,12 +7,11 @@ def song(input_song, output_song, avconv=False, verbose=False):
output_song = output_song.encode('utf-8')
print('Converting ' + input_song + ' to ' + output_song.split('.')[-1])
if avconv:
convert_with_avconv(input_song, output_song, verbose)
exit_code = convert_with_avconv(input_song, output_song, verbose)
else:
convert_with_FFmpeg(input_song, output_song, verbose)
os.remove('Music/' + input_song)
return True
return False
exit_code = convert_with_FFmpeg(input_song, output_song, verbose)
return exit_code
return None
def convert_with_avconv(input_song, output_song, verbose):
# different path for windows

View File

@@ -30,14 +30,17 @@ def embed(music_file, meta_tags):
music_file = music_file.encode('utf-8')
if meta_tags is None:
print('Could not find meta-tags')
return None
elif music_file.endswith('.m4a'):
print('Fixing meta-tags')
embed_m4a(music_file, meta_tags)
return embed_m4a(music_file, meta_tags)
return True
elif music_file.endswith('.mp3'):
print('Fixing meta-tags')
embed_mp3(music_file, meta_tags)
return embed_mp3(music_file, meta_tags)
else:
print('Cannot embed meta-tags into given output extension')
return False
def embed_mp3(music_file, meta_tags):
# EasyID3 is fun to use ;)
@@ -69,6 +72,7 @@ def embed_mp3(music_file, meta_tags):
audiofile["APIC"] = APIC(encoding=3, mime='image/jpeg', type=3, desc=u'Cover', data=albumart.read())
albumart.close()
audiofile.save(v2_version=3)
return True
def embed_m4a(music_file, meta_tags):
# Apple has specific tags - see mutagen docs -
@@ -107,3 +111,4 @@ def embed_m4a(music_file, meta_tags):
audiofile[tags['albumart']] = [ MP4Cover(albumart.read(), imageformat=MP4Cover.FORMAT_JPEG) ]
albumart.close()
audiofile.save()
return True

View File

@@ -254,6 +254,7 @@ def grab_single(raw_song, number=None):
output_song,
avconv=args.avconv,
verbose=args.verbose)
os.remove('Music/' + input_song)
meta_tags = generate_metadata(raw_song)
if not args.no_metadata:
metadata.embed(output_song, meta_tags)

View File

@@ -35,7 +35,8 @@ def test_download():
assert download == expect_download
def test_convert():
expect_convert = True
# exit code None = success
expect_convert = None
content = spotdl.go_pafy(raw_song)
music_file = spotdl.misc.generate_filename(content.title)
music_file = spotdl.misc.fix_decoding(music_file)
@@ -43,3 +44,13 @@ def test_convert():
output_song = music_file + spotdl.args.output_ext
convert = spotdl.convert.song(input_song, output_song)
assert convert == expect_convert
def test_metadata():
expect_metadata = True
content = spotdl.go_pafy(raw_song)
music_file = spotdl.misc.generate_filename(content.title)
music_file = spotdl.misc.fix_decoding(music_file)
output_song = music_file + spotdl.args.output_ext
meta_tags = spotdl.generate_metadata(raw_song)
metadata = spotdl.metadata.embed(output_song, meta_tags)
assert metadata == expect_metadata