def prev(self, *_): if self.repeat_state == 2 or self.current_song == 0 or self.gst._get_duration( ) > 3: TaskHelper().run(self.play, self.queue[self.current_song], callback=(self.update_interface, )) return self.current_song -= 1 TaskHelper().run(self.play, self.queue[self.current_song], callback=(self.update_interface, ))
def display_songs(self,songs): self.clear_all() self.songs_listbox.queue = songs for song in songs: row = TrackRow(song) self.songs_listbox.add(row) TaskHelper().run(get_cover_from_album,row.track,self.session,callback=(row.display_cover,))
def update_interface(self, track): def display_cover(data, self): try: loader = GdkPixbuf.PixbufLoader.new() loader.write(data) loader.close() loader = loader.get_pixbuf() cover_btn = loader.scale_simple(32, 32, GdkPixbuf.InterpType.BILINEAR) cover_enlarge_player = loader.scale_simple( 316, 316, GdkPixbuf.InterpType.BILINEAR) self.app.player_cover.set_from_pixbuf(cover_btn) self.app.playerE_cover.set_from_pixbuf(cover_enlarge_player) except: self.app.player_cover.set_from_icon_name( "folder-music-symbolic", 32) self.app.playerE_cover.set_from_icon_name( "folder-music-symbolic", 316) #Display songs info self.app.player_play_image.set_from_icon_name( "media-playback-pause-symbolic", Gtk.IconSize.BUTTON) self.app.playerE_play_image.set_from_icon_name( "media-playback-pause-symbolic", -1) self.app.player_title.set_text(track.title) self.app.playerE_title.set_text(track.title) self.app.player_artist.set_text(track.artist.name) self.app.playerE_artist.set_text(track.artist.name) min = int(track.duration / 60) sec = track.duration % 60 if sec < 10: sec = "0" + str(sec) self.app.player_total_duration.set_text(f"{min}:{sec}") self.app.playerE_total_duration.set_text(f"{min}:{sec}") #Set duration scale self.app.duration_scale.set_upper(float(track.duration)) self.app.duration_scale.set_value(self.app.duration_scale.props.lower) #Display cover (if avaible) if track.cover is not None: TaskHelper().run(get_cover_from_album, track, self.session, callback=(display_cover, self)) else: self.app.player_cover.set_from_icon_name("folder-music-symbolic", 32) self.app.playerE_cover.set_from_icon_name("folder-music-symbolic", 316) #Display like statue: # if track.like: # self.app.like_button_img.set_from_icon_name("heart-filled-symbolic",Gtk.IconSize.BUTTON) # else: # self.app.like_button_img.set_from_icon_name("heart-outline-thin-symbolic",Gtk.IconSize.BUTTON) self.app.player_reveal.set_reveal_child(True) self.update_queue()
def next(self, *_): if self.repeat_state == 2: TaskHelper().run(self.play, self.queue[self.current_song], callback=(self.update_interface, )) return if self.has_next(): self.current_song += 1 TaskHelper().run(self.play, self.queue[self.current_song], callback=(self.update_interface, )) else: if self.repeat_state == 1: self.current_song = 0 TaskHelper().run(self.play, self.queue[self.current_song], callback=(self.update_interface, )) else: self.stop()
def get_songs(self,*args): TaskHelper().run(self.session.get_userfav_tracks,callback=(self.display_songs,))
def display_albums(self,albums): self.clear_all() for album in albums: row = AlbumWidget(album) self.albums_flowbox.add(row) TaskHelper().run(get_cover_from_album,row.album,self.session,callback=(row.display_cover,))
def get_albums(self,*args): TaskHelper().run(self.session.get_userfav_albums,callback=(self.display_albums,))
def login_username(self,*_): self.log_error_reveal.set_reveal_child(False) self.log_button.set_sensitive(False) self.log_button_stack.set_visible_child_name("try") TaskHelper().run(self.session.login,self.log_username.get_text(), self.log_password.get_text(),callback=(self.on_login,))
def load(self, queue, position): self.queue = queue self.current_song = position TaskHelper().run(self.play, self.queue[self.current_song], callback=(self.update_interface, ))
def preload(self, *_): TaskHelper().run(self.session.get_streamable_url, self.queue[self.current_song + 1])