From faa21390a5ddde2b0db0ca5381d28b93339fdf0e Mon Sep 17 00:00:00 2001 From: Daniele Sluijters Date: Tue, 11 Dec 2012 13:36:45 -0800 Subject: [PATCH] mediafile: Handle FLAC albumart correctly. FLAC's metadata_block_picture should just contain the image, not base64'ed like ogg/vorbis wants it. --- beets/mediafile.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) --- beets/mediafile.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/beets/mediafile.py b/beets/mediafile.py index b99e31f66..864382202 100644 --- a/beets/mediafile.py +++ b/beets/mediafile.py @@ -572,9 +572,23 @@ class ImageField(object): # No cover found. return None + elif obj.type == 'flac': + if 'metadata_block_picture' not in obj.mgfile: + return None + + for data in obj.mgfile['metadata_block_picture']: + try: + pic = mutagen.flac.Picture(data) + break + except TypeError: + pass + else: + return None + + return pic.data else: - # Here we're assuming everything but MP3 and MPEG-4 uses + # Here we're assuming everything but MP3, FLAC and MPEG-4 use # the Xiph/Vorbis Comments standard. This may not be valid. # http://wiki.xiph.org/VorbisComment#Cover_art @@ -624,6 +638,13 @@ class ImageField(object): cover = mutagen.mp4.MP4Cover(val, self._mp4kind(val)) obj.mgfile['covr'] = [cover] + elif obj.type == 'flac': + if val is None: + pic = mutagen.flac.Picture() + pic.data = val + pic.mime = self._mime(val) + obj.mgfile['metadata_block_picture'] = [pic.write()] + else: # Again, assuming Vorbis Comments standard.