def set_content(self, prefix, content, image_url, suffix): """ populate widget with content @param prefix as str @param content as str @param image url as str @param suffix as str @thread safe """ try: data = None stream = None if content is not None: if image_url is not None: f = Lio.File.new_for_uri(image_url) (status, data, tag) = f.load_contents(self.__cancel) if status: stream = Gio.MemoryInputStream.new_from_data(data, None) else: data = None InfoCache.add(prefix, content, data, suffix) GLib.idle_add(self.__set_content, content, stream) except Exception as e: print("InfoContent::set_content: %s" % e)
def _on_button_clicked(self, button): """ Show file chooser @param button as Gtk.button """ dialog = Gtk.FileChooserDialog() dialog.add_buttons(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL) dialog.add_buttons(Gtk.STOCK_OPEN, Gtk.ResponseType.OK) dialog.set_transient_for(Lp().window) self.__close_popover() response = dialog.run() if response == Gtk.ResponseType.OK: try: f = Lio.File.new_for_path(dialog.get_filename()) (status, data, tag) = f.load_contents() if not status: raise if self.__album is not None: Lp().art.save_album_artwork(data, self.__album.id) else: for suffix in ["lastfm", "wikipedia", "spotify"]: InfoCache.uncache_artwork(self.__artist, suffix, button.get_scale_factor()) InfoCache.add(self.__artist, None, data, suffix) Lp().art.emit('artist-artwork-changed', self.__artist) self._streams = {} except Exception as e: print("ArtworkSearch::_on_button_clicked():", e) dialog.destroy()
def _on_button_clicked(self, button): """ Show file chooser @param button as Gtk.button """ dialog = Gtk.FileChooserDialog() dialog.add_buttons(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL) dialog.add_buttons(Gtk.STOCK_OPEN, Gtk.ResponseType.OK) dialog.set_transient_for(Lp().window) self.__close_popover() response = dialog.run() if response == Gtk.ResponseType.OK: try: f = Lio.File.new_for_path(dialog.get_filename()) (status, data, tag) = f.load_contents() if not status: raise if self.__album is not None: Lp().art.save_album_artwork(data, self.__album.id) else: for suffix in ["lastfm", "wikipedia", "spotify"]: InfoCache.uncache_artwork(self.__artist, suffix, button.get_scale_factor()) InfoCache.add(self.__artist, None, data, suffix) Lp().art.emit("artist-artwork-changed", self.__artist) self._streams = {} except Exception as e: print("ArtworkSearch::_on_button_clicked():", e) dialog.destroy()
def _on_reset_confirm(self, button): """ Reset cover @param button as Gtk.Button """ self._infobar.hide() if self.__album is not None: Lp().art.remove_album_artwork(self.__album) Lp().art.clean_album_cache(self.__album) Lp().art.emit('album-artwork-changed', self.__album.id) else: for suffix in ["lastfm", "wikipedia", "spotify", "deezer"]: InfoCache.uncache_artwork(self.__artist, suffix, button.get_scale_factor()) InfoCache.add(self.__artist, None, None, suffix) Lp().art.emit('artist-artwork-changed', self.__artist) self.__close_popover()
def _on_reset_confirm(self, button): """ Reset cover @param button as Gtk.Button """ self._infobar.hide() if self.__album is not None: Lp().art.remove_album_artwork(self.__album) Lp().art.clean_album_cache(self.__album) Lp().art.emit("album-artwork-changed", self.__album.id) else: for suffix in ["lastfm", "wikipedia", "spotify", "deezer"]: InfoCache.uncache_artwork(self.__artist, suffix, button.get_scale_factor()) InfoCache.add(self.__artist, None, None, suffix) Lp().art.emit("artist-artwork-changed", self.__artist) self.__close_popover()
def __on_activate(self, flowbox, child): """ Use pixbuf as cover Reset cache and use player object to announce cover change """ try: data = self.__datas[child.get_child()] self.__close_popover() if self.__album is not None: Lp().art.save_album_artwork(data, self.__album.id) else: for suffix in ["lastfm", "wikipedia", "spotify"]: InfoCache.uncache_artwork(self.__artist, suffix, flowbox.get_scale_factor()) InfoCache.add(self.__artist, None, data, suffix) Lp().art.emit('artist-artwork-changed', self.__artist) self._streams = {} except: self._infobar_label.set_text(_("Reset artwork?")) self._infobar.show() # GTK 3.20 https://bugzilla.gnome.org/show_bug.cgi?id=710888 self._infobar.queue_resize()
def __on_activate(self, flowbox, child): """ Use pixbuf as cover Reset cache and use player object to announce cover change """ try: data = self.__datas[child.get_child()] self.__close_popover() if self.__album is not None: Lp().art.save_album_artwork(data, self.__album.id) else: for suffix in ["lastfm", "wikipedia", "spotify"]: InfoCache.uncache_artwork(self.__artist, suffix, flowbox.get_scale_factor()) InfoCache.add(self.__artist, None, data, suffix) Lp().art.emit("artist-artwork-changed", self.__artist) self._streams = {} except: self._infobar_label.set_text(_("Reset artwork?")) self._infobar.show() # GTK 3.20 https://bugzilla.gnome.org/show_bug.cgi?id=710888 self._infobar.queue_resize()
def __cache_artists_info(self): """ Cache info for all artists """ # We create cache if needed InfoCache.init() # Then cache for lastfm/wikipedia/spotify/deezer/... for (artist_id, artist) in Lp().artists.get([]): if not get_network_available() or\ InfoCache.exists(artist): continue artwork_set = False for (api, helper, unused) in InfoCache.WEBSERVICES: debug("Downloader::__cache_artists_info(): %s@%s" % (artist, api)) if helper is None: continue try: method = getattr(self, helper) (url, content) = method(artist) if url is not None: s = Lio.File.new_for_uri(url) (status, data, tag) = s.load_contents() if status: artwork_set = True InfoCache.add(artist, content, data, api) debug("Downloader::__cache_artists_info(): %s" % url) else: InfoCache.add(artist, None, None, api) except Exception as e: print("Downloader::__cache_artists_info():", e, artist) InfoCache.add(artist, None, None, api) if artwork_set: GLib.idle_add(Lp().art.emit, 'artist-artwork-changed', artist) self.__cache_artists_running = False
def __cache_artists_info(self): """ Cache info for all artists """ # We create cache if needed InfoCache.init() # Then cache for lastfm/wikipedia/spotify/deezer/... for (artist_id, artist, sort) in Lp().artists.get([]): if not get_network_available() or\ InfoCache.exists(artist): continue artwork_set = False for (api, helper, unused) in InfoCache.WEBSERVICES: debug("Downloader::__cache_artists_info(): %s@%s" % (artist, api)) if helper is None: continue try: method = getattr(self, helper) (url, content) = method(artist) if url is not None: s = Lio.File.new_for_uri(url) (status, data, tag) = s.load_contents() if status: artwork_set = True InfoCache.add(artist, content, data, api) debug("Downloader::__cache_artists_info(): %s" % url) else: InfoCache.add(artist, None, None, api) except Exception as e: print("Downloader::__cache_artists_info():", e, artist) InfoCache.add(artist, None, None, api) if artwork_set: GLib.idle_add(Lp().art.emit, 'artist-artwork-changed', artist) self.__cache_artists_running = False