diff --git a/beets/mediafile.py b/beets/mediafile.py index d60d50550..0d97b9ac2 100644 --- a/beets/mediafile.py +++ b/beets/mediafile.py @@ -704,7 +704,8 @@ class VorbisImageStorageStyle(ListStorageStyle): if 'metadata_block_picture' not in mutagen_file: # Try legacy COVERART tags. if 'coverart' in mutagen_file and mutagen_file['coverart']: - return base64.b64decode(mutagen_file['coverart'][0]) + return [base64.b64decode(data) + for data in mutagen_file['coverart']] return [] pics = [] @@ -717,13 +718,10 @@ class VorbisImageStorageStyle(ListStorageStyle): def store(self, mutagen_file, image_data): # Strip all art, including legacy COVERART. - if 'metadata_block_picture' in mutagen_file: - if 'metadata_block_picture' in mutagen_file: - del mutagen_file['metadata_block_picture'] - if 'coverart' in mutagen_file: - del mutagen_file['coverart'] - if 'coverartmime' in mutagen_file: - del mutagen_file['coverartmime'] + if 'coverart' in mutagen_file: + del mutagen_file['coverart'] + if 'coverartmime' in mutagen_file: + del mutagen_file['coverartmime'] image_data = image_data[0] # Add new art if provided. diff --git a/test/rsrc/coverart.ogg b/test/rsrc/coverart.ogg new file mode 100644 index 000000000..b5407dce8 Binary files /dev/null and b/test/rsrc/coverart.ogg differ diff --git a/test/test_mediafile.py b/test/test_mediafile.py index 85b235f7e..79e3b7d5b 100644 --- a/test/test_mediafile.py +++ b/test/test_mediafile.py @@ -500,6 +500,7 @@ class OggTest(ReadWriteTestBase, GenreListTestMixin, unittest.TestCase): 'bitdepth': 0, 'channels': 1, } + def test_read_date_from_year_tag(self): mediafile = self._mediafile_fixture('year') self.assertEqual(mediafile.year, 2000) @@ -513,6 +514,17 @@ class OggTest(ReadWriteTestBase, GenreListTestMixin, unittest.TestCase): mediafile = MediaFile(mediafile.path) self.assertEqual(mediafile.mgfile['YEAR'], [u'2000']) + def test_legacy_coverart_tag(self): + mediafile = self._mediafile_fixture('coverart') + self.assertTrue('coverart' in mediafile.mgfile) + self.assertEqual(mediafile.art, self.png_data) + + mediafile.art = self.png_data + mediafile.save() + + mediafile = MediaFile(mediafile.path) + self.assertFalse('coverart' in mediafile.mgfile) + class FlacTest(ReadWriteTestBase, PartialTestMixin, GenreListTestMixin, unittest.TestCase): extension = 'flac'