def _discovered(self, discoverer, info, error): tags = info.get_tags() index = 0 # FIXME: tags should not return as None, but it sometimes is. # So as a workaround until we figure out what is wrong check # for it. # https://bugzilla.gnome.org/show_bug.cgi?id=780980 if (error is not None or tags is None): if error: logger.warning("Discoverer error: {}, {}".format( Gst.CoreError(error.code), error.message)) discoverer.stop() self.emit('unavailable') return while True: success, sample = tags.get_sample_index(Gst.TAG_IMAGE, index) if not success: break index += 1 struct = sample.get_info() success, image_type = struct.get_enum( 'image-type', GstTag.TagImageType) if not success: continue if image_type != GstTag.TagImageType.FRONT_COVER: continue buf = sample.get_buffer() success, map_info = buf.map(Gst.MapFlags.READ) if not success: continue try: mime = sample.get_caps().get_structure(0).get_name() MediaArt.buffer_to_jpeg(map_info.data, mime, self._path) self.emit('found') discoverer.stop() return except GLib.Error as error: logger.warning("Error: {}, {}".format( MediaArt.Error(error.code), error.message)) discoverer.stop() self._lookup_cover_in_directory()
def _discovered(self, discoverer, info, error): tags = info.get_tags() index = 0 if (error is not None or tags is None): if error: logger.warning("Discoverer error: {}, {}".format( Gst.CoreError(error.code), error.message)) discoverer.stop() self.emit('unavailable') return while True: success, sample = tags.get_sample_index(Gst.TAG_IMAGE, index) if not success: break index += 1 struct = sample.get_info() success, image_type = struct.get_enum( 'image-type', GstTag.TagImageType) if not success: continue if image_type != GstTag.TagImageType.FRONT_COVER: continue buf = sample.get_buffer() success, map_info = buf.map(Gst.MapFlags.READ) if not success: continue try: mime = sample.get_caps().get_structure(0).get_name() MediaArt.buffer_to_jpeg(map_info.data, mime, self._path) self.emit('found') discoverer.stop() return except GLib.Error as error: logger.warning("Error: {}, {}".format( MediaArt.Error(error.code), error.message)) discoverer.stop() self._lookup_cover_in_directory()
def _discovered(self, discoverer, info, error): tags = info.get_tags() index = 0 if (error is not None or tags is None): if error: logger.warning("Discoverer error: {}, {}".format( Gst.CoreError(error.code), error.message)) discoverer.stop() self.emit('unavailable') return while True: success, sample = tags.get_sample_index(Gst.TAG_IMAGE, index) if not success: break index += 1 struct = sample.get_info() success, image_type = struct.get_enum('image-type', GstTag.TagImageType) if not success: continue if image_type != GstTag.TagImageType.FRONT_COVER: continue buf = sample.get_buffer() success, map_info = buf.map(Gst.MapFlags.READ) if not success: continue try: mime = sample.get_caps().get_structure(0).get_name() MediaArt.buffer_to_jpeg(map_info.data, mime, self._path) self.emit('found') discoverer.stop() return except GLib.Error as error: logger.warning("Error: {}, {}".format( MediaArt.Error(error.code), error.message)) discoverer.stop() self._lookup_cover_in_directory()
def _discovered_cb(self, discoverer, info, error): item, art_size, callback, itr, cache_path = \ self._discoverer_items[info.get_uri()] album = utils.get_album_title(item) artist = utils.get_artist_name(item) tags = info.get_tags() index = 0 def art_retrieved(result): if not result: if artist not in self.blacklist: self.blacklist[artist] = [] album_stripped = MediaArt.strip_invalid_entities(album) self.blacklist[artist].append(album_stripped) self.lookup(item, art_size, callback, itr) # FIXME: tags should not return as None, but it sometimes is. # So as a workaround until we figure out what is wrong check # for it. # https://bugzilla.gnome.org/show_bug.cgi?id=780980 if (error is not None or tags is None): art_retrieved(False) return while True: success, sample = tags.get_sample_index(Gst.TAG_IMAGE, index) if not success: break index += 1 struct = sample.get_info() success, image_type = struct.get_enum('image-type', GstTag.TagImageType) if not success: continue if image_type != GstTag.TagImageType.FRONT_COVER: continue buf = sample.get_buffer() success, map_info = buf.map(Gst.MapFlags.READ) if not success: continue try: mime = sample.get_caps().get_structure(0).get_name() MediaArt.buffer_to_jpeg(map_info.data, mime, cache_path) art_retrieved(True) return except Exception as err: logger.warn("Error: %s, %s", err.__class__, err) try: self._media_art.uri(MediaArt.Type.ALBUM, MediaArt.ProcessFlags.NONE, item.get_url(), artist, album, None) if os.path.exists(cache_path): art_retrieved(True) return except Exception as err: logger.warn("Trying to process misc albumart: %s, %s", err.__class__, err) self._lookup_remote(item, art_size, callback, itr)