def test_image_encoding(self): """For compatibility with OS X/iTunes. See https://github.com/beetbox/beets/issues/899#issuecomment-62437773 """ for v23 in [True, False]: mf = self._make_test(id3v23=v23) try: mf.images = [ mediafile.Image(b'data', desc=u""), mediafile.Image(b'data', desc=u"foo"), mediafile.Image(b'data', desc=u"\u0185"), ] mf.save() apic_frames = mf.mgfile.tags.getall('APIC') encodings = dict([(f.desc, f.encoding) for f in apic_frames]) self.assertEqual( encodings, { u"": mutagen.id3.Encoding.LATIN1, u"foo": mutagen.id3.Encoding.LATIN1, u"\u0185": mutagen.id3.Encoding.UTF16, }) finally: self._delete_test()
def mediafile_image(image_path, maxwidth=None): """Return a `mediafile.Image` object for the path. """ with open(syspath(image_path), 'rb') as f: data = f.read() return mediafile.Image(data, type=mediafile.ImageType.front)
def test_SimpleConvertTask_can_keep_or_remove_album_art(tmp_path): """SimpleConvertTask can convert an audio file""" src = tmp_path.joinpath("sine.flac") mp3_art = tmp_path.joinpath("sine_art.mp3") mp3_noart = tmp_path.joinpath("sine_noart.mp3") ogg_art = tmp_path.joinpath("sine_art.ogg") ogg_noart = tmp_path.joinpath("sine_noart.ogg") sound = generators.Sine(440).to_audio_segment() sound.export(src, format="flac") # setup a source flac file with a cover image image_file = _utils.get_project_root().joinpath("tests/data/cover.jpg") with open(image_file, 'rb') as f: cover = f.read() cover = mediafile.Image(data=cover, desc=u'album cover', type=mediafile.ImageType.front) f = MediaFile(src) f.images = [cover] f.save() # by default, the converters preserve the album art # .. for PydubConverter tasks.SimpleConvertTask(src, mp3_art, converter=converters.PydubConverter()).start() g = MediaFile(mp3_art) assert f.images[0].data == cover.data assert f.images[0].mime_type == 'image/jpeg' assert f.images[0].data == g.images[0].data # ... for PydubConverter tasks.SimpleConvertTask(src, ogg_art, converter=converters.PydubConverter()).start() g = MediaFile(ogg_art) assert f.images[0].data == cover.data assert f.images[0].mime_type == 'image/jpeg' assert f.images[0].data == g.images[0].data # remove_art=True removes art # ... for PydubConverter tasks.SimpleConvertTask( src, mp3_noart, converter=converters.PydubConverter(remove_art=True)).start() g = MediaFile(mp3_noart) assert f.images[0].data == cover.data assert g.images == [] # remove_art=True removes art # ... for PydubConverter tasks.SimpleConvertTask( src, ogg_noart, converter=converters.PydubConverter(remove_art=True)).start() g = MediaFile(ogg_noart) assert f.images[0].data == cover.data assert g.images == []
def set_id3_tags(filename, image_data): mf = mediafile.MediaFile(filename) mf.artist = fake.name() mf.title = fake.name() mf.images = [mediafile.Image(data=image_data)] mf.save()