From a9709f97ea235a75418e41e5dbe0840bee33ca0a Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Tue, 26 Feb 2019 18:17:08 +0100 Subject: [PATCH] PICARD-455: Set dimensions for images saved to FLAC --- picard/formats/vorbis.py | 2 ++ test/test_formats.py | 33 ++++++++++++++++++++++++++++----- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/picard/formats/vorbis.py b/picard/formats/vorbis.py index 416da1520..14a185c5d 100644 --- a/picard/formats/vorbis.py +++ b/picard/formats/vorbis.py @@ -221,6 +221,8 @@ class VCommentFile(File): picture.data = image.data picture.mime = image.mimetype picture.desc = image.comment + picture.width = image.width + picture.height = image.height picture.type = image_type_as_id3_num(image.maintype) if self._File == mutagen.flac.FLAC: file.add_picture(picture) diff --git a/test/test_formats.py b/test/test_formats.py index a15a461f5..01d0ed77b 100644 --- a/test/test_formats.py +++ b/test/test_formats.py @@ -59,9 +59,11 @@ def save_and_load_metadata(filename, metadata): loaded_metadata = load_metadata(filename) return loaded_metadata + def load_raw(filename): return mutagen.File(filename) + TAGS = { 'albumartist': 'Foo', 'albumartistsort': 'Foo', @@ -763,6 +765,24 @@ class TestCoverArt(PicardTestCase): os.path.join('test', 'data', 'test.flac'), set('a')) + def test_flac_set_picture_dimensions(self): + self._set_up(os.path.join('test', 'data', 'test.flac')) + try: + tests = [ + CoverArtImage(data=self.jpegdata), + CoverArtImage(data=self.pngdata), + ] + for test in tests: + self._file_save_image(self.filename, test) + raw_metadata = load_raw(self.filename) + pic = raw_metadata.pictures[0] + self.assertNotEqual(pic.width, 0) + self.assertEqual(pic.width, test.width) + self.assertNotEqual(pic.height, 0) + self.assertEqual(pic.height, test.height) + finally: + self._tear_down() + def _test_cover_art(self, filename): self._set_up(filename) try: @@ -774,11 +794,7 @@ class TestCoverArt(PicardTestCase): CoverArtImage(data=self.pngdata + b"a" * 1024 * 128, types=source_types), ] for test in tests: - f = picard.formats.open_(self.filename) - metadata = Metadata() - metadata.append_image(test) - f._save(self.filename, metadata) - + self._file_save_image(self.filename, test) f = picard.formats.open_(self.filename) loaded_metadata = f._load(self.filename) image = loaded_metadata.images[0] @@ -787,6 +803,13 @@ class TestCoverArt(PicardTestCase): finally: self._tear_down() + @staticmethod + def _file_save_image(filename, image): + f = picard.formats.open_(filename) + metadata = Metadata() + metadata.append_image(image) + f._save(filename, metadata) + def _cover_metadata(self): imgdata = self.jpegdata metadata = Metadata()