示例#1
0
    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()
示例#2
0
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)
示例#3
0
文件: test_tasks.py 项目: s-fleck/qop
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 == []
示例#4
0
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()