def retrieve_covers(cover_links, size=LARGE): ret = [] for cover in cover_links['images']: desc = cover.get('comment', u"") cover_type = cover['types'][0] if cover_type in mb_imagetypes: cover_type = imagetypes[mb_imagetypes[cover_type]] else: cover_type = imagetypes[u"Other"] if cover == SMALL: image_url = cover['thumbnails']['small'] elif cover == LARGE: image_url = cover['thumbnails']['large'] else: image_url = cover['image'] write_log(translate("MusicBrainz", "Retrieving image %s") % image_url) image_data = urlopen(image_url) ret.append({ 'desc': desc, 'mime': get_mime(image_data), "imagetype": cover_type, "data": image_data }) return ret
def save_artwork(m_tags, pattern, r_tags, state=None, write=True): """Export artwork to file, "Export Art: pattern='$1'" &Pattern (extension not required), text, folder_%img_counter%""" if state is None: state = {} if 'artwork_data' not in state: state['artwork_data'] = set() if '__image' in m_tags: images = m_tags['__image'] else: images = r_tags.images if not images: return new_state = state.copy() new_state['img_count'] = unicode(len(images)) for i, image in enumerate(images): data = image[audioinfo.DATA] new_state['img_desc'] = image.get(audioinfo.DESCRIPTION, u'') new_state['img_type'] = audioinfo.IMAGETYPES[ image.get(audioinfo.IMAGETYPE, 3)] mime = image.get(audioinfo.MIMETYPE, u'') if not mime: mime = audioinfo.get_mime(data) if not mime: continue extension = '.png' if 'png' in mime.lower() else '.jpg' new_state['img_mime'] = mime new_state['img_counter'] = unicode(i + 1) fn = tag_to_filename(pattern, m_tags, r_tags, False, new_state) + extension if not fn: continue if data not in state['artwork_data']: state['artwork_data'].add(data) elif path.exists(fn): continue i = 1 while path.exists(fn): fn = path.splitext(fn)[0] + '_' + str(i) + extension i += 1 if write: fobj = open(fn, 'w') fobj.write(data) fobj.close() else: return fn
def save_artwork(m_tags, pattern, r_tags, state=None, write=True): """Export artwork to file, "Export Art: pattern='$1'" &Pattern (extension not required), text, folder_%img_counter%""" if state is None: state = {} if 'artwork_data' not in state: state['artwork_data'] = set() if '__image' in m_tags: images = m_tags['__image'] else: images = r_tags.images if not images: return new_state = state.copy() new_state['img_count'] = unicode(len(images)) for i, image in enumerate(images): data = image[audioinfo.DATA] new_state['img_desc'] = image.get(audioinfo.DESCRIPTION, u'') new_state['img_type'] = audioinfo.IMAGETYPES[image.get( audioinfo.IMAGETYPE, 3)] mime = image.get(audioinfo.MIMETYPE, u'') if not mime: mime = audioinfo.get_mime(data) if not mime: continue extension = '.png' if 'png' in mime.lower() else '.jpg' new_state['img_mime'] = mime new_state['img_counter'] = unicode(i + 1) fn = tag_to_filename(pattern, m_tags, r_tags, False, new_state) + extension if not fn: continue if data not in state['artwork_data']: state['artwork_data'].add(data) elif path.exists(fn): continue i = 1 while path.exists(fn): fn = path.splitext(fn)[0] + '_' + str(i) + extension i += 1 if write: fobj = open(fn, 'w') fobj.write(data) fobj.close() else: return fn
def retrieve_covers(cover_links, size=LARGE): ret = [] for cover in cover_links['images']: desc = cover.get('comment', u"") cover_type = cover['types'][0] if cover_type in mb_imagetypes: cover_type = imagetypes[mb_imagetypes[cover_type]] else: cover_type = imagetypes[u"Other"] if cover == SMALL: image_url = cover['thumbnails']['small'] elif cover == LARGE: image_url = cover['thumbnails']['large'] else: image_url = cover['image'] write_log(translate("MusicBrainz", "Retrieving image %s") % image_url) image_data = urlopen(image_url) ret.append({'desc': desc, 'mime': get_mime(image_data), "imagetype": cover_type, "data": image_data}) return ret
def retrieve_front_cover(album_id): data = retrieve_cover_links(album_id, "front") return {'data': data, 'mime': get_mime(data)}