Пример #1
0
def cover(flac):
    """Add cover images to tagged FLAC files."""
    mb = MusicBrainz()
    for path in flac:
        info = FileInfo(path)
        if not info.parse_ok:
            continue
        album_tags = info.tags.album_tags()
        mbid = album_tags.get('RELEASE_MBID')
        if mbid is None:
            continue
        front = info.get_picture(FRONT_COVER_TYPE)
        if front is not None:
            continue
        click.echo('{} {}'.format(info.summary, path))
        try:
            release = mb.release_by_id(mbid)
            data = mb.front_cover(release)
            if data is not None:
                front = fc.parse_picture(data, FRONT_COVER_TYPE)
                if info.set_picture(front):
                    info.update()
                width = front.width
                height = front.height
                type_ = fc.picture_ext(front).upper()
                click.echo('- {} x {} {}'.format(width, height, type_))
            else:
                click.echo('- No image found')
        except MusicBrainzError:
            click.echo('- Error while querying MusicBrainz')
            continue
        except Exception as e:
            click.echo('- Error while processing image ({})'.format(e))
            continue
Пример #2
0
 def test_set_picture(self, datadir):
     """Test setting a picture."""
     file = FileInfo(datadir / 'empty.flac')
     with open(str(datadir / 'cover.png'), 'rb') as cover:
         data = cover.read()
     picture = parse_picture(data, 3)
     assert file.set_picture(picture) is True
     assert file.set_picture(picture) is False
     file.update()
     self.assert_picture(file, 3, 'image/png', 128, 128, 24, data)