def _add_item(self, source, param, item, remaining): if not item: return self._offset += 1 item.set_title(albumArtCache.get_media_title(item)) artist = item.get_string(Grl.METADATA_KEY_ARTIST)\ or item.get_author()\ or _("Unknown Artist") _iter = self._model.insert_with_valuesv( -1, [2, 3, 5, 8, 9, 10], [albumArtCache.get_media_title(item), artist, item, self.nowPlayingIconName, False, False]) self.player.discover_item(item, self._on_discovered, _iter)
def update_model(self, player, playlist, currentIter): # self is not our playlist, return if (playlist != self.model): return False currentSong = playlist.get_value(currentIter, 5) song_passed = False _iter = playlist.get_iter_first() self.duration = 0 while _iter: song = playlist.get_value(_iter, 5) self.duration += song.get_duration() escapedTitle = AlbumArtCache.get_media_title(song, True) if (song == currentSong): title = '<b>%s</b>' % escapedTitle iconVisible = True song_passed = True elif (song_passed): title = '<span>%s</span>' % escapedTitle iconVisible = False else: title = '<span color=\'grey\'>%s</span>' % escapedTitle iconVisible = False playlist.set_value(_iter, 0, title) if (playlist.get_value(_iter, 7) != ERROR_ICON_NAME): playlist.set_value(_iter, 9, iconVisible) _iter = playlist.iter_next(_iter) self.ui.get_object('running_length_label_info').set_text( _("%d min") % (int(self.duration / 60) + 1)) return False
def load(self, media): self._set_duration(media.get_duration()) self.songTotalTimeLabel.set_label(self.seconds_to_string(media.get_duration())) self.progressScale.set_sensitive(True) self.playBtn.set_sensitive(True) self._sync_prev_next() self.coverImg.set_from_pixbuf(self._symbolicIcon) self.cache.lookup(ART_SIZE, media.get_artist(), media.get_string(Grl.METADATA_KEY_ALBUM), self._on_cache_lookup) self.titleLabel.set_label(AlbumArtCache.get_media_title(media)) if media.get_artist() is not None: self.artistLabel.set_label(media.get_artist()) else: self.artistLabel.set_label("Unknown artist") url = media.get_url() if url != self.player.get_value("current-uri", 0): self.player.set_property("uri", url) #Store next available url #(not really useful because we can't connect to about-to-finish, but still) nextTrack = self._get_next_track() if nextTrack: nextMedia = self.playlist.get_value(self.currentTrack, self.playlistField) self.player.nextUrl = nextMedia.get_url() else: self.player.nextUrl = None self.emit("playlist-item-changed", self.playlist, self.currentTrack) self.emit('current-changed')
def load(self, media): self.progressScale.set_value(0) self._set_duration(media.get_duration()) self.songTotalTimeLabel.set_label( self.seconds_to_string(media.get_duration())) self.progressScale.set_sensitive(True) self.playBtn.set_sensitive(True) self._sync_prev_next() self.coverImg.set_from_pixbuf(self._symbolicIcon) self.cache.lookup(media, ART_SIZE, ART_SIZE, self._on_cache_lookup) self.titleLabel.set_label(AlbumArtCache.get_media_title(media)) if media.get_artist() is not None: self.artistLabel.set_label(media.get_artist()) else: self.artistLabel.set_label(_("Unknown Artist")) url = media.get_url() if url != self.player.get_value('current-uri', 0): self.player.set_property('uri', url) currentTrack = self.playlist.get_iter(self.currentTrack.get_path()) self.emit('playlist-item-changed', self.playlist, currentTrack) self.emit('current-changed')
def _add_item(self, source, param, item): if item: self._offset += 1 _iter = self._model.append() artist = item.get_string(Grl.METADATA_KEY_ARTIST) if not artist: artist = item.get_author() if not artist: artist = _("Unknown Artist") title = albumArtCache.get_media_title(item) item.set_title(title) try: if item.get_url(): self.player.discoverer.discover_uri(item.get_url()) self._model.set(_iter, [0, 1, 2, 3, 4, 5, 7, 8, 9, 10], [str(item.get_id()), "", title, artist, self._symbolicIcon, item, -1, self.nowPlayingIconName, False, False]) except: print("failed to discover url " + item.get_url()) self._model.set(_iter, [0, 1, 2, 3, 4, 5, 7, 8, 9, 10], [str(item.get_id()), "", title, artist, self._symbolicIcon, item, -1, self.errorIconName, False, True]) GLib.idle_add(self.show_album_art_data)
def _add_item_to_model(self, item, model): if not item: return self._offset += 1 item.set_title(albumArtCache.get_media_title(item)) artist = item.get_string(Grl.METADATA_KEY_ARTIST)\ or item.get_author()\ or _("Unknown Artist") _iter = model.insert_with_valuesv( -1, [2, 3, 5, 8, 9, 10], [albumArtCache.get_media_title(item), artist, item, self.nowPlayingIconName, False, False]) self.player.discover_item(item, self._on_discovered, _iter) self.songs_count += 1 self._update_songs_count()
def _update_track(self, player): if not self._player.currentTrack: self._notification.update(_("Not playing"), None, 'gnome-music') self._notification.set_hint('image-data', None) self._notification.show() else: item = self._player.get_current_media() if not item: return artist = item.get_string(Grl.METADATA_KEY_ARTIST)\ or item.get_author()\ or _("Unknown Artist") album = item.get_string(Grl.METADATA_KEY_ALBUM)\ or _("Unknown Album") self._notification.update(AlbumArtCache.get_media_title(item), # TRANSLATORS: by refers to the artist, from to the album _("by %s, from %s") % ('<b>' + artist + '</b>', '<i>' + album + '</i>'), 'gnome-music') try: self._notification.show() except: pass
def update_model(self, player, playlist, currentIter): # self is not our playlist, return if (playlist != self.model): return False currentSong = playlist.get_value(currentIter, 5) song_passed = False _iter = playlist.get_iter_first() self.duration = 0 while _iter: song = playlist.get_value(_iter, 5) self.duration += song.get_duration() escapedTitle = AlbumArtCache.get_media_title(song, True) if (song == currentSong): title = '<b>%s</b>' % escapedTitle iconVisible = True song_passed = True elif (song_passed): title = '<span>%s</span>' % escapedTitle iconVisible = False else: title = '<span color=\'grey\'>%s</span>' % escapedTitle iconVisible = False playlist.set_value(_iter, 0, title) if(playlist.get_value(_iter, 7) != ERROR_ICON_NAME): playlist.set_value(_iter, 9, iconVisible) _iter = playlist.iter_next(_iter) self.ui.get_object('running_length_label_info').set_text( '%d min' % (int(self.duration / 60) + 1)) return False
def update_model(self, player, playlist, currentIter): #self is not our playlist, return if (playlist != self.model): return False currentSong = playlist.get_value(currentIter, 5) song_passed = False _iter = playlist.get_iter_first() while _iter: song = playlist.get_value(_iter, 5) escapedTitle = AlbumArtCache.get_media_title(song, True) if (song == currentSong): title = "<b>%s</b>" % escapedTitle iconVisible = True song_passed = True elif (song_passed): title = "<span>%s</span>" % escapedTitle iconVisible = False else: title = "<span color='grey'>%s</span>" % escapedTitle iconVisible = False playlist.set_value(_iter, 0, title) if(playlist.get_value(_iter, 7) != ERROR_ICON_NAME): playlist.set_value(_iter, 9, iconVisible) _iter = playlist.iter_next(_iter) return False
def _get_active_playlist(self): playlist = self._get_playlist_from_id(self.player.playlistId) \ if self.player.playlistType == 'Playlist' else None playlistName = AlbumArtCache.get_media_title(playlist) \ if playlist else '' return (playlist is not None, (self._get_playlist_path(playlist), playlistName, ''))
def update_model(self, player, playlist, currentIter): # this is not our playlist, return if playlist != self.model: # TODO, only clean once, but that can wait util we have clean # the code a bit, and until the playlist refactoring. # the overhead is acceptable for now self.clean_model() return False currentSong = playlist.get_value(currentIter, 5) song_passed = False itr = playlist.get_iter_first() while itr: song = playlist.get_value(itr, 5) song_widget = song.song_widget if not song_widget.can_be_played: itr = playlist.iter_next(itr) continue escapedTitle = AlbumArtCache.get_media_title(song, True) if (song == currentSong): song_widget.now_playing_sign.show() song_widget.title.set_markup('<b>%s</b>' % escapedTitle) song_passed = True elif (song_passed): song_widget.now_playing_sign.hide() song_widget.title.set_markup('<span>%s</span>' % escapedTitle) else: song_widget.now_playing_sign.hide() song_widget.title\ .set_markup('<span color=\'grey\'>%s</span>' % escapedTitle) itr = playlist.iter_next(itr) return False
def _add_item(self, source, param, item): if not item: return self._offset += 1 artist = item.get_string(Grl.METADATA_KEY_ARTIST)\ or item.get_author()\ or _("Unknown Artist") title = albumArtCache.get_media_title(item) item.set_title(title) def add_new_item(): _iter = self._model.append() icon_name = self.nowPlayingIconName if item.get_url(): try: self.player.discoverer.discover_uri(item.get_url()) except: print('failed to discover url ' + item.get_url()) icon_name = self.errorIconName self._model.set(_iter, [0, 1, 2, 3, 4, 5, 7, 8, 9, 10], [str(item.get_id()), '', title, artist, self._symbolicIcon, item, -1, icon_name, False, icon_name == self.errorIconName]) GLib.idle_add(self._update_album_art, item, _iter) GLib.idle_add(add_new_item)
def _get_active_playlist(self): playlist = self._get_playlist_from_id(self.player.playlistId) \ if self.player.playlistType == 'Playlist' else None playlistName = AlbumArtCache.get_media_title(playlist) \ if playlist else '' return (playlist is not None, (self._get_playlist_path(playlist), playlistName, ''))
def load(self, media): self._set_duration(media.get_duration()) self.songTotalTimeLabel.set_label(self.seconds_to_string(media.get_duration())) self.progressScale.set_sensitive(True) self.playBtn.set_sensitive(True) self._sync_prev_next() self.coverImg.set_from_pixbuf(self._symbolicIcon) self.cache.lookup(media, ART_SIZE, ART_SIZE, self._on_cache_lookup) self.titleLabel.set_label(AlbumArtCache.get_media_title(media)) if media.get_artist() is not None: self.artistLabel.set_label(media.get_artist()) else: self.artistLabel.set_label(_("Unknown Artist")) url = media.get_url() if url != self.player.get_value('current-uri', 0): self.player.set_property('uri', url) currentTrack = self.playlist.get_iter(self.currentTrack.get_path()) self.emit('playlist-item-changed', self.playlist, currentTrack) self.emit('current-changed')
def _add_item(self, source, param, item): if not item: return self._offset += 1 artist = item.get_string(Grl.METADATA_KEY_ARTIST)\ or item.get_author()\ or _("Unknown Artist") title = albumArtCache.get_media_title(item) item.set_title(title) def add_new_item(): _iter = self._model.append(None) icon_name = self.nowPlayingIconName if item.get_url(): try: self.player.discoverer.discover_uri(item.get_url()) except: print('failed to discover url ' + item.get_url()) icon_name = self.errorIconName self._model.set(_iter, [0, 1, 2, 3, 4, 5, 7, 8, 9, 10], [ str(item.get_id()), '', title, artist, self._symbolicIcon, item, -1, icon_name, False, icon_name == self.errorIconName ]) GLib.idle_add(self._update_album_art, item, _iter) GLib.idle_add(add_new_item)
def update_model(self, player, playlist, currentIter): # this is not our playlist, return if playlist != self.model: # TODO, only clean once, but that can wait util we have clean # the code a bit, and until the playlist refactoring. # the overhead is acceptable for now self.clean_model() return False currentSong = playlist.get_value(currentIter, 5) song_passed = False itr = playlist.get_iter_first() while itr: song = playlist.get_value(itr, 5) song_widget = song.song_widget if not song_widget.can_be_played: itr = playlist.iter_next(itr) continue escapedTitle = AlbumArtCache.get_media_title(song, True) if (song == currentSong): song_widget.now_playing_sign.show() song_widget.title.set_markup('<b>%s</b>' % escapedTitle) song_passed = True elif (song_passed): song_widget.now_playing_sign.hide() song_widget.title.set_markup('<span>%s</span>' % escapedTitle) else: song_widget.now_playing_sign.hide() song_widget.title\ .set_markup('<span color=\'grey\'>%s</span>' % escapedTitle) itr = playlist.iter_next(itr) return False
def _add_item_to_model(self, item): new_iter = self.model.insert_before(self.add_playlist_iter) self.model.set( new_iter, [0, 1, 2], [AlbumArtCache.get_media_title(item), False, item] ) return new_iter
def GetPlaylists(self, index, max_count, order, reverse): if order != 'Alphabetical': return [] playlists = [(self._get_playlist_path(playlist), AlbumArtCache.get_media_title(playlist) or '', '') for playlist in self.playlists] return playlists[index:index + max_count] if not reverse \ else playlists[index + max_count - 1:index - 1 if index - 1 >= 0 else None:-1]
def _add_item_to_model(self, item): new_iter = self.model.insert_before(self.add_playlist_iter) self.model.set( new_iter, [0, 1, 2], [AlbumArtCache.get_media_title(item), False, item] ) return new_iter
def GetPlaylists(self, index, max_count, order, reverse): if order != 'Alphabetical': return [] playlists = [(self._get_playlist_path(playlist), AlbumArtCache.get_media_title(playlist) or '', '') for playlist in self.playlists] return playlists[index:index + max_count] if not reverse \ else playlists[index + max_count - 1:index - 1 if index - 1 >= 0 else None:-1]
def _add_item(self, source, param, item): if not item: return self._offset += 1 item.set_title(albumArtCache.get_media_title(item)) artist = item.get_string(Grl.METADATA_KEY_ARTIST)\ or item.get_author()\ or _("Unknown Artist") _iter = self._model.insert_with_valuesv(-1, [2, 3, 5, 8, 9, 10], [ albumArtCache.get_media_title(item), artist, item, self.nowPlayingIconName, False, False ]) self.player.discover_item(item, self._on_discovered, _iter) g_file = Gio.file_new_for_uri(item.get_url()) self.monitors.append( g_file.monitor_file(Gio.FileMonitorFlags.NONE, None)) self.monitors[(self._offset - 1)].connect('changed', self._on_item_changed, _iter)
def _add_item(self, source, param, item): if not item: return self._offset += 1 item.set_title(albumArtCache.get_media_title(item)) artist = item.get_string(Grl.METADATA_KEY_ARTIST)\ or item.get_author()\ or _("Unknown Artist") _iter = self._model.insert_with_valuesv( -1, [2, 3, 5, 8, 9, 10], [albumArtCache.get_media_title(item), artist, item, self.nowPlayingIconName, False, False]) self.player.discover_item(item, self._on_discovered, _iter) g_file = Gio.file_new_for_uri(item.get_url()) self.monitors.append(g_file.monitor_file(Gio.FileMonitorFlags.NONE, None)) self.monitors[(self._offset - 1)].connect('changed', self._on_item_changed, _iter)
def _on_item_activated(self, widget, id, path): _iter = self.model.get_iter(path) if(self.model.get_value(_iter, 7) != ERROR_ICON_NAME): if (self.iterToClean and self.player.playlistId == self.album): item = self.model.get_value(self.iterToClean, 5) title = AlbumArtCache.get_media_title(item) self.model.set_value(self.iterToClean, 0, title) #Hide now playing icon self.model.set_value(self.iterToClean, 6, False) self.player.set_playlist("Album", self.album, self.model, _iter, 5) self.player.set_playing(True)
def clean_model(self): itr = self.model.get_iter_first() while itr: song = self.model.get_value(itr, 5) song_widget = song.song_widget escapedTitle = AlbumArtCache.get_media_title(song, True) if song_widget.can_be_played: song_widget.now_playing_sign.hide() song_widget.title.set_markup('<span>%s</span>' % escapedTitle) itr = self.model.iter_next(itr) return False
def get_songs(self, source, prefs, track): if track: self.tracks.append(track) else: for i, track in enumerate(self.tracks): ui = Gtk.Builder() ui.add_from_resource('/org/gnome/Music/TrackWidget.ui') song_widget = ui.get_object("eventbox1") self.songs.append(song_widget) ui.get_object("num")\ .set_markup("<span color='grey'>%d</span>" % len(self.songs)) title = AlbumArtCache.get_media_title(track) ui.get_object("title").set_text(title) ui.get_object("title").set_alignment(0.0, 0.5) self.ui.get_object("grid1").attach( song_widget, int(i / (len(self.tracks) / 2)), int(i % (len(self.tracks) / 2)), 1, 1 ) track.song_widget = song_widget itr = self.model.append() song_widget._iter = itr song_widget.model = self.model song_widget.title = ui.get_object("title") try: self.player.discoverer.discover_uri(str(track.get_url())) self.model.set(itr, [0, 1, 2, 3, 4, 5], [title, "", "", False, NOW_PLAYING_ICON_NAME, track]) song_widget.now_playing_sign = ui.get_object("image1") song_widget.now_playing_sign.set_from_icon_name( NOW_PLAYING_ICON_NAME, Gtk.IconSize.SMALL_TOOLBAR) song_widget.now_playing_sign.set_no_show_all("True") song_widget.now_playing_sign.set_alignment(0.0, 0.6) song_widget.can_be_played = True song_widget.connect('button-release-event', self.track_selected) except: print("failed to discover url " + str(track.get_url())) self.model.set(itr, [0, 1, 2, 3, 4, 5], [title, "", "", True, ERROR_ICON_NAME, track]) song_widget.now_playing_sign = ui.get_object("image1") song_widget.now_playing_sign.set_from_icon_name( ERROR_ICON_NAME, Gtk.IconSize.SMALL_TOOLBAR) song_widget.now_playing_sign.set_alignment(0.0, 0.6) song_widget.can_be_played = False self.ui.get_object("grid1").show_all()
def _add_item(self, source, param, item): if item: self._offset += 1 _iter = self._model.append() item.set_title(albumArtCache.get_media_title(item)) try: if item.get_url(): self.player.discoverer.discover_uri(item.get_url()) self._model.set(_iter, [2, 3, 5, 8, 9, 10], [albumArtCache.get_media_title(item), item.get_string(Grl.METADATA_KEY_ARTIST), item, self.nowPlayingIconName, False, False]) except: print("failed to discover url " + item.get_url()) self._model.set(_iter, [2, 3, 5, 8, 9, 10], [albumArtCache.get_media_title(item), item.get_string(Grl.METADATA_KEY_ARTIST), item, self.errorIconName, False, True])
def clean_model(self): itr = self.model.get_iter_first() while itr: song = self.model.get_value(itr, 5) song_widget = song.song_widget escapedTitle = AlbumArtCache.get_media_title(song, True) if song_widget.can_be_played: song_widget.now_playing_sign.hide() song_widget.title.set_markup('<span>%s</span>' % escapedTitle) itr = self.model.iter_next(itr) return False
def _on_item_activated(self, widget, id, path): _iter = self._model.get_iter(path) title = self._model.get_value(_iter, 2) artist = self._model.get_value(_iter, 3) item = self._model.get_value(_iter, 5) self._albumWidget.update(artist, title, item, self.header_bar, self.selection_toolbar) self.header_bar.set_state(0) escaped_title = albumArtCache.get_media_title(item) self.header_bar.header_bar.set_title(escaped_title) self.header_bar.header_bar.sub_title = artist self.set_visible_child(self._albumWidget)
def _on_item_activated(self, widget, id, path): child_path = self.filter.convert_path_to_child_path(path) _iter = self._model.get_iter(child_path) title = self._model.get_value(_iter, 2) artist = self._model.get_value(_iter, 3) item = self._model.get_value(_iter, 5) self._albumWidget.update(artist, title, item, self.header_bar, self.selection_toolbar) self.header_bar.set_state(0) escaped_title = albumArtCache.get_media_title(item) self.header_bar.header_bar.set_title(escaped_title) self.header_bar.header_bar.sub_title = artist self.set_visible_child(self._albumWidget)
def add_item(self, source, prefs, track, remaining, data=None): if track: self.tracks.append(track) self.duration = self.duration + track.get_duration() _iter = self.model.append() escapedTitle = AlbumArtCache.get_media_title(track, True) self.model.set(_iter, [0, 1, 2, 3, 4, 5, 9], [ escapedTitle, self.player.seconds_to_string(track.get_duration()), '', '', None, track, bool(track.get_lyrics()) ]) self.ui.get_object('running_length_label_info').set_text( _("%d min") % (int(self.duration / 60) + 1))
def add_item(self, source, prefs, track, remaining, data=None): if remaining == 0: self.songsGrid.show_all() self.emit("tracks-loaded") if track: self.tracks.append(track) else: for i, track in enumerate(self.tracks): ui = Gtk.Builder() ui.add_from_resource('/org/gnome/Music/TrackWidget.ui') song_widget = ui.get_object('eventbox1') self.songs.append(song_widget) ui.get_object('num')\ .set_markup('<span color=\'grey\'>%d</span>' % len(self.songs)) title = AlbumArtCache.get_media_title(track) ui.get_object('title').set_text(title) ui.get_object('title').set_alignment(0.0, 0.5) ui.get_object('title').set_max_width_chars(MAX_TITLE_WIDTH) self.songsGrid.attach( song_widget, int(i / (len(self.tracks) / 2)), int(i % (len(self.tracks) / 2)), 1, 1 ) track.song_widget = song_widget itr = self.model.append(None) song_widget._iter = itr song_widget.model = self.model song_widget.title = ui.get_object('title') song_widget.checkButton = ui.get_object('select') song_widget.checkButton.set_visible(self.selectionMode) song_widget.checkButton.connect( 'toggled', self._check_button_toggled, song_widget ) self.player.discover_item(track, self._on_discovered, song_widget) self.model.set(itr, [0, 1, 2, 3, 4, 5], [title, '', '', False, NOW_PLAYING_ICON_NAME, track]) song_widget.now_playing_sign = ui.get_object('image1') song_widget.now_playing_sign.set_from_icon_name( NOW_PLAYING_ICON_NAME, Gtk.IconSize.SMALL_TOOLBAR) song_widget.now_playing_sign.set_no_show_all('True') song_widget.now_playing_sign.set_alignment(1, 0.6) song_widget.can_be_played = True song_widget.connect('button-release-event', self.track_selected)
def add_item(self, source, prefs, track, remaining, data=None): if track: self.tracks.append(track) self.duration = self.duration + track.get_duration() _iter = self.model.append() escapedTitle = AlbumArtCache.get_media_title(track, True) self.model.set(_iter, [0, 1, 2, 3, 4, 5, 10], [escapedTitle, self.player.seconds_to_string( track.get_duration()), '', '', None, track, bool(track.get_lyrics())]) self.ui.get_object('running_length_label_info').set_text( _("%d min") % (int(self.duration / 60) + 1))
def add_item(self, source, prefs, track, remaining, data=None): if remaining == 0: self.songsGrid.show_all() self.emit("tracks-loaded") if track: self.tracks.append(track) else: for i, track in enumerate(self.tracks): ui = Gtk.Builder() ui.add_from_resource('/org/gnome/Music/TrackWidget.ui') song_widget = ui.get_object('eventbox1') self.songs.append(song_widget) ui.get_object('num')\ .set_markup('<span color=\'grey\'>%d</span>' % len(self.songs)) title = AlbumArtCache.get_media_title(track) ui.get_object('title').set_text(title) ui.get_object('title').set_alignment(0.0, 0.5) ui.get_object('title').set_max_width_chars(MAX_TITLE_WIDTH) self.songsGrid.attach( song_widget, int(i / (len(self.tracks) / 2)), int(i % (len(self.tracks) / 2)), 1, 1 ) track.song_widget = song_widget itr = self.model.append(None) song_widget._iter = itr song_widget.model = self.model song_widget.title = ui.get_object('title') song_widget.checkButton = ui.get_object('select') song_widget.checkButton.set_visible(self.selectionMode) song_widget.checkButton.connect( 'toggled', self._check_button_toggled, song_widget ) self.model.set(itr, [0, 1, 2, 3, 5], [title, '', '', False, track]) song_widget.now_playing_sign = ui.get_object('image1') song_widget.now_playing_sign.set_from_icon_name( NOW_PLAYING_ICON_NAME, Gtk.IconSize.SMALL_TOOLBAR) song_widget.now_playing_sign.set_no_show_all('True') song_widget.now_playing_sign.set_alignment(1, 0.6) song_widget.can_be_played = True song_widget.connect('button-release-event', self.track_selected)
def add_item(self, source, prefs, track, remaining, data=None): if track: self.tracks.append(track) self.duration = self.duration + track.get_duration() _iter = self.model.append() self.player.discover_item(track, self._on_discovered, _iter) escapedTitle = AlbumArtCache.get_media_title(track, True) self.model.set(_iter, [0, 1, 2, 3, 4, 5, 7, 9], [escapedTitle, self.player.seconds_to_string( track.get_duration()), '', '', None, track, NOW_PLAYING_ICON_NAME, False]) self.ui.get_object('running_length_label_info').set_text( '%d min' % (int(self.duration / 60) + 1))
def _on_item_activated(self, widget, id, path): if self.star_renderer_click: self.star_renderer_click = False return _iter = self.model.get_iter(path) if self.model.get_value(_iter, 10) != DiscoveryStatus.FAILED: if (self.iterToClean and self.player.playlistId == self.album): item = self.model.get_value(self.iterToClean, 5) title = AlbumArtCache.get_media_title(item) self.model.set_value(self.iterToClean, 0, title) # Hide now playing icon self.model.set_value(self.iterToClean, 6, False) self.player.set_playlist('Album', self.album, self.model, _iter, 5, 11) self.player.set_playing(True)
def _on_item_activated(self, widget, id, path): if self.star_handler.star_renderer_click: self.star_handler.star_renderer_click = False return _iter = self.model.get_iter(path) if self.model.get_value(_iter, 10) != DiscoveryStatus.FAILED: if (self.iterToClean and self.player.playlistId == self.album): item = self.model.get_value(self.iterToClean, 5) title = AlbumArtCache.get_media_title(item) self.model.set_value(self.iterToClean, 0, title) # Hide now playing icon self.model.set_value(self.iterToClean, 6, False) self.player.set_playlist('Album', self.album, self.model, _iter, 5, 11) self.player.set_playing(True)
def load(self, media): self.progressScale.set_value(0) self._set_duration(media.get_duration()) self.songTotalTimeLabel.set_label( self.seconds_to_string(media.get_duration())) self.progressScale.set_sensitive(True) self.playBtn.set_sensitive(True) self._sync_prev_next() artist = _("Unknown Artist") try: assert media.get_artist() is not None artist = media.get_artist() except: pass finally: self.artistLabel.set_label(artist) self._currentArtist = artist album = _("Unknown Album") try: assert media.get_album() is not None album = media.get_album() except: self._currentAlbum = album self.coverImg.set_from_pixbuf(self._noArtworkIcon) self.cache.lookup(media, ART_SIZE, ART_SIZE, self._on_cache_lookup, None, artist, album) self._currentTitle = AlbumArtCache.get_media_title(media) self.titleLabel.set_label(self._currentTitle) self._currentTimestamp = int(time.time()) url = media.get_url() if url != self.player.get_value('current-uri', 0): self.player.set_property('uri', url) if self.currentTrack and self.currentTrack.valid(): currentTrack = self.playlist.get_iter(self.currentTrack.get_path()) self.emit('playlist-item-changed', self.playlist, currentTrack) self.emit('current-changed') self._validate_next_track()
def load(self, media): self.progressScale.set_value(0) self._set_duration(media.get_duration()) self.songTotalTimeLabel.set_label(self.seconds_to_string(media.get_duration())) self.progressScale.set_sensitive(True) self.playBtn.set_sensitive(True) self._sync_prev_next() artist = _("Unknown Artist") try: assert media.get_artist() is not None artist = media.get_artist() except: pass finally: self.artistLabel.set_label(artist) self._currentArtist = artist album = _("Unknown Album") try: assert media.get_album() is not None album = media.get_album() except: self._currentAlbum = album self.coverImg.set_from_pixbuf(self._noArtworkIcon) self.cache.lookup( media, ART_SIZE, ART_SIZE, self._on_cache_lookup, None, artist, album) self._currentTitle = AlbumArtCache.get_media_title(media) self.titleLabel.set_label(self._currentTitle) self._currentTimestamp = int(time.time()) url = media.get_url() if url != self.player.get_value('current-uri', 0): self.player.set_property('uri', url) if self.currentTrack and self.currentTrack.valid(): currentTrack = self.playlist.get_iter(self.currentTrack.get_path()) self.emit('playlist-item-changed', self.playlist, currentTrack) self.emit('current-changed') self._validate_next_track()
def get_songs(self, source, prefs, track, remaining): if track: self.tracks.append(track) else: for i, track in enumerate(self.tracks): ui = Gtk.Builder() ui.add_from_resource('/org/gnome/Music/TrackWidget.ui') song_widget = ui.get_object('eventbox1') self.songs.append(song_widget) ui.get_object('num')\ .set_markup('<span color=\'grey\'>%d</span>' % len(self.songs)) title = AlbumArtCache.get_media_title(track) ui.get_object('title').set_text(title) ui.get_object('title').set_alignment(0.0, 0.5) self.ui.get_object('grid1').attach( song_widget, int(i / (len(self.tracks) / 2)), int(i % (len(self.tracks) / 2)), 1, 1 ) track.song_widget = song_widget itr = self.model.append(None) song_widget._iter = itr song_widget.model = self.model song_widget.title = ui.get_object('title') self.player.discover_item(track, self._on_discovered, song_widget) g_file = Gio.file_new_for_uri(track.get_url()) self.monitors.append(g_file.monitor_file(Gio.FileMonitorFlags.NONE, None)) self.monitors[-1].connect('changed', self._on_item_changed, itr) self.model.set(itr, [0, 1, 2, 3, 4, 5], [title, '', '', False, NOW_PLAYING_ICON_NAME, track]) song_widget.now_playing_sign = ui.get_object('image1') song_widget.now_playing_sign.set_from_icon_name( NOW_PLAYING_ICON_NAME, Gtk.IconSize.SMALL_TOOLBAR) song_widget.now_playing_sign.set_no_show_all('True') song_widget.now_playing_sign.set_alignment(1, 0.6) song_widget.can_be_played = True song_widget.connect('button-release-event', self.track_selected) self.ui.get_object('grid1').show_all()
def _add_item(self, source, param, item): if not item: return self._offset += 1 artist = item.get_string(Grl.METADATA_KEY_ARTIST)\ or item.get_author()\ or _("Unknown Artist") title = albumArtCache.get_media_title(item) item.set_title(title) icon_name = self.nowPlayingIconName _iter = self._model.insert_with_valuesv( -1, [0, 1, 2, 3, 4, 5, 7, 8, 9, 10], [str(item.get_id()), '', title, artist, self._symbolicIcon, item, -1, icon_name, False, False]) self.player.discover_item(item, self._on_discovered, _iter) GLib.idle_add(self._update_album_art, item, _iter)
def _on_populate_album_songs(self, source, prefs, track, remaining): if track: self.tracks.append(track) self.duration = self.duration + track.get_duration() _iter = self.model.append() self.player.discover_item(track, self._on_discovered, _iter) g_file = Gio.file_new_for_uri(track.get_url()) self.monitors.append(g_file.monitor_file(Gio.FileMonitorFlags.NONE, None)) self.monitors[-1].connect('changed', self._on_item_changed, _iter) escapedTitle = AlbumArtCache.get_media_title(track, True) self.model.set(_iter, [0, 1, 2, 3, 4, 5, 7, 9], [escapedTitle, self.player.seconds_to_string( track.get_duration()), '', '', None, track, NOW_PLAYING_ICON_NAME, False]) self.ui.get_object('running_length_label_info').set_text( '%d min' % (int(self.duration / 60) + 1))
def _get_metadata(self): media = self.player.get_current_media() if not media: return {} metadata = { 'mpris:trackid': '/org/mpris/MediaPlayer2/Track/%s' % media.get_id(), 'xesam:url': media.get_url(), 'mpris:length': dbus.Int64(media.get_duration() * 1000000), 'xesam:trackNumber': media.get_track_number(), 'xesam:useCount': media.get_play_count(), 'xesam:userRating': media.get_rating(), } title = AlbumArtCache.get_media_title(media) if title: metadata['xesam:title'] = title album = media.get_album() if album: metadata['xesam:album'] = album artist = media.get_artist() if artist: metadata['xesam:artist'] = [artist] metadata['xesam:albumArtist'] = [artist] genre = media.get_genre() if genre: metadata['xesam:genre'] = [genre] last_played = media.get_last_played() if last_played: metadata['xesam:lastUsed'] = last_played thumbnail = media.get_thumbnail() if thumbnail: metadata['mpris:artUrl'] = thumbnail return metadata
def _get_metadata(self): media = self.player.get_current_media() if not media: return {} metadata = { 'mpris:trackid': '/org/mpris/MediaPlayer2/Track/%s' % media.get_id(), 'xesam:url': media.get_url(), 'mpris:length': dbus.Int64(media.get_duration() * 1000000), 'xesam:trackNumber': media.get_track_number(), 'xesam:useCount': media.get_play_count(), 'xesam:userRating': media.get_rating(), } title = AlbumArtCache.get_media_title(media) if title: metadata['xesam:title'] = title album = media.get_album() if album: metadata['xesam:album'] = album artist = media.get_artist() if artist: metadata['xesam:artist'] = [artist] metadata['xesam:albumArtist'] = [artist] genre = media.get_genre() if genre: metadata['xesam:genre'] = [genre] last_played = media.get_last_played() if last_played: metadata['xesam:lastUsed'] = last_played thumbnail = media.get_thumbnail() if thumbnail: metadata['mpris:artUrl'] = thumbnail return metadata
def _update_track(self, player): if not self._player.currentTrack: self._notification.update(_("Not playing"), None, 'gnome-music') self._notification.set_hint('image-data', None) self._notification.show() else: item = self._player.get_current_media() artist = item.get_string(Grl.METADATA_KEY_ARTIST)\ or item.get_author()\ or _("Unknown Artist") album = item.get_string(Grl.METADATA_KEY_ALBUM)\ or _("Unknown Album") self._notification.update( AlbumArtCache.get_media_title(item), # TRANSLATORS: by refers to the artist, from to the album _("by %s, from %s") % ('<b>' + artist + '</b>', '<i>' + album + '</i>'), 'gnome-music') self._albumArtCache.lookup(item, IMAGE_SIZE, IMAGE_SIZE, self._album_art_loaded)
def update_model(self, player, playlist, currentIter): # self is not our playlist, return if playlist != self.model: return False currentSong = playlist.get_value(currentIter, 5) song_passed = False _iter = playlist.get_iter_first() self.duration = 0 while _iter: song = playlist.get_value(_iter, 5) self.duration += song.get_duration() escapedTitle = AlbumArtCache.get_media_title(song, True) if song == currentSong: title = "<b>%s</b>" % escapedTitle song_passed = True elif song_passed: title = "<span>%s</span>" % escapedTitle else: title = "<span color='grey'>%s</span>" % escapedTitle playlist.set_value(_iter, 0, title) _iter = playlist.iter_next(_iter) self.ui.get_object("running_length_label_info").set_text(_("%d min") % (int(self.duration / 60) + 1)) return False
def _on_populate_album_songs(self, source, prefs, track): if track: self.tracks.append(track) self.duration = self.duration + track.get_duration() _iter = self.model.append() escapedTitle = AlbumArtCache.get_media_title(track, True) try: self.player.discoverer.discover_uri(track.get_url()) self.model.set(_iter, [0, 1, 2, 3, 4, 5, 7, 9], [escapedTitle, self.player.seconds_to_string( track.get_duration()), "", "", None, track, NOW_PLAYING_ICON_NAME, False]) except Exception as err: logging.debug(err.message) logging.debug("failed to discover url " + track.get_url()) self.model.set(_iter, [0, 1, 2, 3, 4, 5, 7, 9], [escapedTitle, "", "", "", None, track, ERROR_ICON_NAME, True]) self.ui.get_object("running_length_label_info").set_text( "%d min" % (int(self.duration / 60) + 1))
def _get_metadata(self, media=None): if not media: media = self.player.get_current_media() if not media: return {} metadata = { 'mpris:trackid': GLib.Variant('o', self._get_media_id(media)), 'xesam:url': GLib.Variant('s', media.get_url()) } try: length = media.get_duration() * 1000000 assert length is not None metadata['mpris:length'] = GLib.Variant('x', length) except: pass try: trackNumber = media.get_track_number() assert trackNumber is not None metadata['xesam:trackNumber'] = GLib.Variant('i', trackNumber) except: pass try: useCount = media.get_play_count() assert useCount is not None metadata['xesam:useCount'] = GLib.Variant('i', useCount) except: pass try: userRating = media.get_rating() assert userRating is not None metadata['xesam:userRating'] = GLib.Variant('d', userRating) except: pass try: title = AlbumArtCache.get_media_title(media) assert title is not None metadata['xesam:title'] = GLib.Variant('s', title) except: pass try: album = media.get_album() assert album is not None except: try: album = media.get_album() assert album is not None except: album = _("Unknown Album") finally: metadata['xesam:album'] = GLib.Variant('s', album) try: artist = media.get_artist() assert artist is not None except: try: artist = media.get_artist() assert artist is not None except: try: artist = media.get_artist() assert artist is not None except (AssertionError, ValueError): artist = _("Unknown Artist") finally: metadata['xesam:artist'] = GLib.Variant('as', [artist]) metadata['xesam:albumArtist'] = GLib.Variant('as', [artist]) try: genre = media.get_genre() assert genre is not None metadata['xesam:genre'] = GLib.Variant('as', genre) except: pass try: lastUsed = media.get_last_played() assert lastUsed is not None metadata['xesam:lastUsed'] = GLib.Variant('s', lastUsed) except: pass try: artUrl = media.get_thumbnail() assert artUrl is not None metadata['mpris:artUrl'] = GLib.Variant('s', artUrl) except: pass return metadata
def _get_metadata(self, media=None): if not media: media = self.player.get_current_media() if not media: return {} metadata = { 'mpris:trackid': self._get_media_id(media), 'xesam:url': media.get_url() } try: length = dbus.Int64(media.get_duration() * 1000000) assert length is not None metadata['mpris:length'] = length except: pass try: trackNumber = media.get_track_number() assert trackNumber is not None metadata['xesam:trackNumber'] = trackNumber except: pass try: useCount = media.get_play_count() assert useCount is not None metadata['xesam:useCount'] = useCount except: pass try: userRating = media.get_rating() assert userRating is not None metadata['xesam:userRating'] = userRating except: pass try: title = AlbumArtCache.get_media_title(media) assert title is not None metadata['xesam:title'] = title except: pass try: album = media.get_album() assert album is not None except: try: album = media.get_string(Grl.METADATA_KEY_ALBUM) assert album is not None except: album = _("Unknown Album") finally: metadata['xesam:album'] = album try: artist = media.get_artist() assert artist is not None except: try: artist = media.get_string(Grl.METADATA_KEY_ARTIST) assert artist is not None except: try: artist = media.get_author() assert artist is not None except (AssertionError, ValueError): artist = _("Unknown Artist") finally: metadata['xesam:artist'] = [artist] metadata['xesam:albumArtist'] = [artist] try: genre = media.get_genre() assert genre is not None metadata['xesam:genre'] = genre except: pass try: lastUsed = media.get_last_played() assert lastUsed is not None metadata['xesam:lastUsed'] = lastUsed except: pass try: artUrl = media.get_thumbnail() assert artUrl is not None metadata['mpris:artUrl'] = artUrl except: pass return metadata