def _coverart_downloaded(album, metadata, release, try_list, coverinfos, data, http, error): album._requests -= 1 if error or len(data) < 1000: if error: log.error(str(http.errorString())) else: QObject.tagger.window.set_statusbar_message(N_("Coverart %s downloaded"), http.url().toString()) mime = mimetype.get_from_data(data, default="image/jpeg") filename = None if not is_front_image(coverinfos) and config.setting["caa_image_type_as_filename"]: filename = coverinfos['type'] metadata.add_image(mime, data, filename, coverinfos) for track in album._new_tracks: track.metadata.add_image(mime, data, filename, coverinfos) # If the image already was a front image, there might still be some # other front images in the try_list - remove them. if is_front_image(coverinfos): for item in try_list[:]: if is_front_image(item) and 'archive.org' not in item['host']: # Hosts other than archive.org only provide front images try_list.remove(item) _walk_try_list(album, metadata, release, try_list)
def _coverart_downloaded(album, metadata, release, try_list, coverinfos, data, http, error): album._requests -= 1 if error or len(data) < 1000: if error: _coverart_http_error(album, http) else: QObject.tagger.window.set_statusbar_message(N_("Coverart %s downloaded"), http.url().toString()) mime = mimetype.get_from_data(data, default="image/jpeg") filename = None if not is_front_image(coverinfos) and config.setting["caa_image_type_as_filename"]: filename = coverinfos['type'] metadata.add_image(mime, data, filename, coverinfos) for track in album._new_tracks: track.metadata.add_image(mime, data, filename, coverinfos) # If the image already was a front image, there might still be some # other front images in the try_list - remove them. if is_front_image(coverinfos): for item in try_list[:]: if is_front_image(item) and 'archive.org' not in item['host']: # Hosts other than archive.org only provide front images try_list.remove(item) _walk_try_list(album, metadata, release, try_list)
def _coverart_downloaded(album, metadata, release, try_list, coverinfos, data, http, error): album._requests -= 1 if error or len(data) < 1000: if error: _coverart_http_error(album, http) else: QObject.tagger.window.set_statusbar_message(N_("Coverart %s downloaded"), http.url().toString()) mime = mimetype.get_from_data(data, default="image/jpeg") try: metadata.make_and_add_image(mime, data, imagetype=coverinfos['type'], comment=coverinfos['desc']) for track in album._new_tracks: track.metadata.make_and_add_image(mime, data, imagetype=coverinfos['type'], comment=coverinfos['desc']) except (IOError, OSError), e: album.error_append(e.message) album._finalize_loading(error=True) # It doesn't make sense to store/download more images if we can't # save them in the temporary folder, abort. return
def _coverart_downloaded(album, metadata, release, try_list, data, http, error): try: if error or len(data) < 1000: if error: album.log.error(str(http.errorString())) coverart(album, metadata, release, try_list) else: mime = mimetype.get_from_data(data, default="image/jpeg") metadata.add_image(mime, data) for track in album._new_tracks: track.metadata.add_image(mime, data) finally: album._requests -= 1 album._finalize_loading(None)
def _coverart_downloaded(self, coverartimage, data, http, error): """Handle finished download, save it to metadata""" self.album._requests -= 1 if error: self._coverart_http_error(http) elif len(data) < 1000: log.warning("Not enough data, skipping %s" % coverartimage) else: self._message( N_("Cover art of type '%(type)s' downloaded for %(albumid)s from %(host)s"), { 'type': ','.join(coverartimage.types), 'albumid': self.album.id, 'host': coverartimage.host } ) mime = mimetype.get_from_data(data, default="image/jpeg") try: self.metadata.make_and_add_image( mime, data, types=coverartimage.types, comment=coverartimage.comment, is_front=coverartimage.is_front ) for track in self.album._new_tracks: track.metadata.make_and_add_image( mime, data, types=coverartimage.types, comment=coverartimage.comment, is_front=coverartimage.is_front ) # If the image already was a front image, # there might still be some other non-CAA front # images in the queue - ignore them. if not self.front_image_found: self.front_image_found = coverartimage.is_front_image() except (IOError, OSError) as e: self.album.error_append(e.message) self.album._finalize_loading(error=True) # It doesn't make sense to store/download more images if we can't # save them in the temporary folder, abort. return self._download_next_in_queue()
def _coverart_downloaded(album, metadata, release, try_list, data, http, error): try: if error or len(data) < 1000: if error: album.log.error(str(http.errorString())) coverart(album, metadata, release, try_list) else: mime = mimetype.get_from_data(data, default="image/jpeg") metadata.add_image(mime, data) for track in album._new_tracks: track.metadata.add_image(mime, data) finally: album._requests -= 1 album._finalize_loading(None)
def _load(self, filename): self.log.debug("Loading file %r", filename) file = self._File(encode_filename(filename)) metadata = Metadata() if file.tags: for origname, values in file.tags.items(): if origname.lower().startswith( "cover art") and values.kind == mutagen.apev2.BINARY: if '\0' in values.value: descr, data = values.value.split('\0', 1) mime = mimetype.get_from_data(data, descr, 'image/jpeg') metadata.add_image(mime, data) # skip EXTERNAL and BINARY values if values.kind != mutagen.apev2.TEXT: continue for value in values: name = origname if name == "Year": name = "date" value = sanitize_date(value) elif name == "Track": name = "tracknumber" track = value.split("/") if len(track) > 1: metadata["totaltracks"] = track[1] value = track[0] elif name == "Disc": name = "discnumber" disc = value.split("/") if len(disc) > 1: metadata["totaldiscs"] = disc[1] value = disc[0] elif name == 'Performer' or name == 'Comment': name = name.lower() + ':' if value.endswith(')'): start = value.rfind(' (') if start > 0: name += value[start + 2:-1] value = value[:start] elif name in self.__translate: name = self.__translate[name] else: name = name.lower() metadata.add(name, value) self._info(metadata, file) return metadata
def _load(self, filename): log.debug("Loading file %r", filename) file = self._File(encode_filename(filename)) metadata = Metadata() if file.tags: for origname, values in file.tags.items(): if origname.lower().startswith("cover art") and values.kind == mutagen.apev2.BINARY: if '\0' in values.value: descr, data = values.value.split('\0', 1) mime = mimetype.get_from_data(data, descr, 'image/jpeg') metadata.make_and_add_image(mime, data) # skip EXTERNAL and BINARY values if values.kind != mutagen.apev2.TEXT: continue for value in values: name = origname if name == "Year": name = "date" value = sanitize_date(value) elif name == "Track": name = "tracknumber" track = value.split("/") if len(track) > 1: metadata["totaltracks"] = track[1] value = track[0] elif name == "Disc": name = "discnumber" disc = value.split("/") if len(disc) > 1: metadata["totaldiscs"] = disc[1] value = disc[0] elif name == 'Performer' or name == 'Comment': name = name.lower() + ':' if value.endswith(')'): start = value.rfind(' (') if start > 0: name += value[start + 2:-1] value = value[:start] elif name in self.__translate: name = self.__translate[name] else: name = name.lower() metadata.add(name, value) self._info(metadata, file) return metadata
def _coverart_downloaded(album, metadata, release, try_list, coverinfos, data, http, error): album._requests -= 1 if error or len(data) < 1000: if error: _coverart_http_error(album, http) else: QObject.tagger.window.set_statusbar_message( N_("Cover art of type '%(type)s' downloaded for %(albumid)s from %(host)s"), { 'type': coverinfos['type'].title(), 'albumid': album.id, 'host': coverinfos['host'] } ) mime = mimetype.get_from_data(data, default="image/jpeg") try: metadata.make_and_add_image(mime, data, imagetype=coverinfos['type'], comment=coverinfos['desc']) for track in album._new_tracks: track.metadata.make_and_add_image(mime, data, imagetype=coverinfos['type'], comment=coverinfos['desc']) except (IOError, OSError) as e: album.error_append(e.message) album._finalize_loading(error=True) # It doesn't make sense to store/download more images if we can't # save them in the temporary folder, abort. return # If the image already was a front image, there might still be some # other front images in the try_list - remove them. if is_front_image(coverinfos): for item in try_list[:]: if is_front_image(item) and 'archive.org' not in item['host']: # Hosts other than archive.org only provide front images try_list.remove(item) _walk_try_list(album, metadata, release, try_list)