PLUGIN_NAME = 'Amazon Cover Art Downloader'
PLUGIN_AUTHOR = 'Lukas Lalinsky'
PLUGIN_DESCRIPTION = '''Downloads cover art from Amazon.'''

from picard.metadata import register_album_metadata_processor
from picard.util import partial

_AMAZON_IMAGE_HOST = 'images.amazon.com'
_AMAZON_IMAGE_PATH = '/images/P/%s.01.LZZZZZZZ.jpg'
_AMAZON_IMAGE_PATH_SMALL = '/images/P/%s.01.MZZZZZZZ.jpg'

def _coverart_downloaded(album, metadata, path, data, http, error):
    try:
        if error:
            album.log.error(str(http.errorString()))
        else:
            if len(data) > 1000:
                image = ("image/jpeg", data)
                metadata.add("~artwork", image)
                for track in album._new_tracks:
                    track.metadata.add("~artwork", image)
            elif path.endswith('LZZZZZZZ.jpg'):
                amazon_coverart(album, metadata, None, _AMAZON_IMAGE_PATH_SMALL)
    finally:
        album._requests -= 1
        album._finalize_loading(None)

def amazon_coverart(album, metadata, release, path=_AMAZON_IMAGE_PATH):
    asin = metadata['asin']
    if asin:
        album._requests += 1
        album.tagger.xmlws.download(
            _AMAZON_IMAGE_HOST, 80, path % asin,
            partial(_coverart_downloaded, album, metadata, path))

register_album_metadata_processor(amazon_coverart)
