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()