From 00d66f7258e8fca8f19292cc16cdd8a2eccb95a9 Mon Sep 17 00:00:00 2001 From: JISAUAY Date: Wed, 3 Sep 2025 14:28:13 -0500 Subject: [PATCH] idk --- textual-take2/app.py | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/textual-take2/app.py b/textual-take2/app.py index 38d111d..d4d7942 100644 --- a/textual-take2/app.py +++ b/textual-take2/app.py @@ -85,42 +85,34 @@ class MusicApp(App): yield Footer() def on_mount(self) -> None: - self.get_playlists() + self.run_worker(self.get_playlists(), exclusive=True) table = self.query_one(DataTable) table.add_columns("Track", "Title", "Artist", "Album") - - @work(exclusive=True, thread=True) - def get_playlists(self) -> None: + async def get_playlists(self) -> None: try: playlists = conn.getPlaylists() - self.call_from_thread(self.populate_playlists, playlists) + option_list = self.query_one("#playlists", OptionList) + for playlist in playlists: + option_list.add_option(Option(playlist.name, id=playlist.id)) except Exception as e: logging.error(f"Failed to get playlists: {e}") - def populate_playlists(self, playlists: list[SubSonic.Playlist]) -> None: - option_list = self.query_one("#playlists", OptionList) - for playlist in playlists: - option_list.add_option(Option(playlist.name, id=playlist.id)) - @on(OptionList.OptionSelected) - def on_playlist_selected(self, event: OptionList.OptionSelected) -> None: - self.get_playlist_songs(event.option.id) + async def on_playlist_selected(self, event: OptionList.OptionSelected) -> None: + self.run_worker(self.get_playlist_songs(event.option.id), exclusive=True) - @work(exclusive=True, thread=True) - def get_playlist_songs(self, playlist_id: str) -> None: + async def get_playlist_songs(self, playlist_id: str) -> None: try: songs = conn.getPlaylist(playlist_id) - self.call_from_thread(self.populate_songs, songs) + table = self.query_one(DataTable) + table.clear() + logging.debug([song.title for song in songs]) + for song in songs: + table.add_row(song.trackNumber, song.title, song.artist, song.album, key=song.id) except Exception as e: logging.error(f"Failed to get playlist songs: {e}") - def populate_songs(self, songs: list[SubSonic.Song]) -> None: - table = self.query_one("#songs", DataTable) - table.clear() - for song in songs: - table.add_row(song.trackNumber, song.title, song.artist, song.album, key=song.id) - @on(DataTable.RowSelected) def on_song_selected(self, event: DataTable.RowSelected) -> None: song_id = event.row_key.value @@ -133,7 +125,7 @@ class MusicApp(App): song = conn.getSong(song_id) now_playing = self.query_one(NowPlaying) self.call_from_thread(setattr, now_playing, "song", song) - + stream_data = conn.stream(song_id) pygame.mixer.music.load(io.BytesIO(stream_data.content)) pygame.mixer.music.play()