diff --git a/picard/coverart/image.py b/picard/coverart/image.py index a9efce366..4d78e78ba 100644 --- a/picard/coverart/image.py +++ b/picard/coverart/image.py @@ -414,8 +414,12 @@ class CoverArtImage: return self.datahash.filename def normalized_types(self): - if self.types: - types = sorted(set(self.types)) + if self.types and self.support_types: + # ensure front type is first, if any + # the rest is sorted + types_front = ['front'] if 'front' in self.types else [] + types_without_front = sorted(set(t for t in self.types if t != 'front')) + types = types_front + types_without_front elif self.is_front_image(): types = ['front'] else: diff --git a/test/test_coverart_image.py b/test/test_coverart_image.py index 4fa17b373..fd88f8ce8 100644 --- a/test/test_coverart_image.py +++ b/test/test_coverart_image.py @@ -124,6 +124,14 @@ class CoverArtImageTest(PicardTestCase): self.assertEqual("back", create_image(b'a', types=["back", "medium"], support_types=True).maintype) self.assertEqual("front", create_image(b'a', types=["back", "medium"], support_types=False).maintype) + def test_normalized_types(self): + self.assertEqual(["front"], create_image(b'a').normalized_types()) + self.assertEqual(["-"], create_image(b'a', support_types=True).normalized_types()) + self.assertEqual(["front"], create_image(b'a', types=["front"], support_types=True).normalized_types()) + self.assertEqual(["front", "back"], create_image(b'a', types=["back", "front"], support_types=True).normalized_types()) + self.assertEqual(["back", "medium"], create_image(b'a', types=["medium", "back"], support_types=True).normalized_types()) + self.assertEqual(["front"], create_image(b'a', types=["back", "medium"], support_types=False).normalized_types()) + def test_id3_type_derived(self): self.assertEqual(Id3ImageType.COVER_FRONT, create_image(b'a').id3_type) self.assertEqual(Id3ImageType.COVER_FRONT, create_image(b'a', support_types=True).id3_type)