diff --git a/beets/mediafile.py b/beets/mediafile.py index 7522acf0ab..f580dccfa1 100644 --- a/beets/mediafile.py +++ b/beets/mediafile.py @@ -326,7 +326,11 @@ def __init__(self, data, desc=None, type=None): self.data = data self.desc = desc if isinstance(type, int): - type = list(ImageType)[type] + try: + type = list(ImageType)[type] + except IndexError: + log.warn("ignoring unknown image type index {}", type) + type = ImageType.other self.type = type @property diff --git a/test/rsrc/image_unknown_type.mp3 b/test/rsrc/image_unknown_type.mp3 new file mode 100755 index 0000000000..441adf62ac Binary files /dev/null and b/test/rsrc/image_unknown_type.mp3 differ diff --git a/test/test_mediafile.py b/test/test_mediafile.py index c685cdd94c..74f6fe8c55 100644 --- a/test/test_mediafile.py +++ b/test/test_mediafile.py @@ -730,6 +730,10 @@ class MP3Test(ReadWriteTestBase, PartialTestMixin, 'channels': 1, } + def test_unknown_apic_type(self): + mediafile = self._mediafile_fixture('image_unknown_type') + self.assertEqual(mediafile.images[0].type, ImageType.other) + class MP4Test(ReadWriteTestBase, PartialTestMixin, ImageStructureTestMixin, unittest.TestCase):