fixing some bugs with the overview screen

This commit is contained in:
0x01FE committed 2025-01-24 14:41:01 -06:00
1 parent 98ab8cb755
commit ee479940b6
3 files changed
+49 -25

No files matched your search

+4
View File
@@ -0,0 +1,4 @@
.info {
width: 30%;
padding-right: 2;
}
+36 -16
View File
@@ -63,16 +63,18 @@ class AlbumSongs(Screen):
self.selected_song_id = event.row_key.value self.selected_song_id = event.row_key.value
def action_play(self) -> None: def action_play(self) -> None:
app.play_song(self._find_selected_song()) song_index = self._find_selected_song()
app.play_song(self.songs[song_index])
app.song_queue = self.songs[song_index + 1:]
def action_queue(self) -> None: def action_queue(self) -> None:
app.queue_song(self._find_selected_song()) app.queue_song(self._find_selected_song())
# Find the song that was selected # Returns index of selected song
def _find_selected_song(self) -> SubSonic.Song: def _find_selected_song(self) -> int:
for song in self.songs: for i, song in enumerate(self.songs):
if song.id == self.selected_song_id: if song.id == self.selected_song_id:
return song return i
# Pops and uninstalls self # Pops and uninstalls self
def action_die(self) -> None: def action_die(self) -> None:
@@ -225,16 +227,18 @@ class PlaylistSongs(Screen):
self.selected_song_id = event.row_key.value self.selected_song_id = event.row_key.value
def action_play(self) -> None: def action_play(self) -> None:
app.play_song(self._find_selected_song()) song_index = self._find_selected_song()
app.play_song(self.songs[song_index])
app.song_queue = self.songs[song_index + 1:]
def action_queue(self) -> None: def action_queue(self) -> None:
app.queue_song(self._find_selected_song()) app.queue_song(self._find_selected_song())
# Find the song that was selected # Returns index of selected song
def _find_selected_song(self) -> SubSonic.Song: def _find_selected_song(self) -> int:
for song in self.songs: for i, song in enumerate(self.songs):
if song.id == self.selected_song_id: if song.id == self.selected_song_id:
return song return i
class Favourites(Screen): class Favourites(Screen):
songs: list[SubSonic.Song] | None = None songs: list[SubSonic.Song] | None = None
@@ -256,11 +260,12 @@ class Favourites(Screen):
songTable.add_row(song.title, song.album, song.artist, song.playCount, song.duration, song.bitRate, key=song.id) songTable.add_row(song.title, song.album, song.artist, song.playCount, song.duration, song.bitRate, key=song.id)
class MainView(Screen): class MainView(Screen):
CSS_PATH = 'main.tcss'
def compose(self) -> ComposeResult: def compose(self) -> ComposeResult:
yield Header(icon="") yield Header(icon="")
with Horizontal(): with Horizontal():
with Vertical(classes="column"): with Vertical(classes="info"):
yield Label("Playing") yield Label("Playing")
yield DataTable(id="currently_playing") yield DataTable(id="currently_playing")
yield ProgressBar() yield ProgressBar()
@@ -270,6 +275,7 @@ class MainView(Screen):
yield Footer() yield Footer()
def on_mount(self) -> None: def on_mount(self) -> None:
app.sub_title = "Overview"
queueTable: DataTable = self.query_one("#queue") queueTable: DataTable = self.query_one("#queue")
queueTable.cursor_type = "row" queueTable.cursor_type = "row"
queueTable.add_columns("Title", "Album", "Artist", "Plays", "Duration", "Bitrate") queueTable.add_columns("Title", "Album", "Artist", "Plays", "Duration", "Bitrate")
@@ -284,16 +290,20 @@ class MainView(Screen):
@on(events.ScreenResume) @on(events.ScreenResume)
def screen_resumed(self, event: events.ScreenResume) -> None: def screen_resumed(self, event: events.ScreenResume) -> None:
app.sub_title = "Overview"
# Update Queue Table # Update Queue Table
queueTable: DataTable = self.query_one(DataTable) queueTable: DataTable = self.query_one('#queue')
for row_key, row in queueTable.rows.items(): self._clear_table('#queue')
queueTable.remove_row(row_key)
for song in app.song_queue: queue: list[SubSonic.Song] = []
queue.extend(app.user_queue)
queue.extend(app.song_queue)
for song in queue:
queueTable.add_row(song.title, song.album, song.artist, song.playCount, song.duration, song.bitRate) queueTable.add_row(song.title, song.album, song.artist, song.playCount, song.duration, song.bitRate)
# Update Currently Playing Table # Update Currently Playing Table
self._clear_table('#currently_playing')
if app.currently_playing: if app.currently_playing:
song = app.currently_playing song = app.currently_playing
currentlyPlaying: DataTable = self.query_one('#currently_playing') currentlyPlaying: DataTable = self.query_one('#currently_playing')
@@ -305,6 +315,15 @@ class MainView(Screen):
currentlyPlaying.add_row("Track Number", song.trackNumber) currentlyPlaying.add_row("Track Number", song.trackNumber)
currentlyPlaying.add_row("Bit Rate", song.bitRate) currentlyPlaying.add_row("Bit Rate", song.bitRate)
def _clear_table(self, table_id: str) -> None:
table: DataTable = self.query_one(table_id)
row_keys = []
for row_key, row in table.rows.items():
row_keys.append(row_key)
for row_key in row_keys:
table.remove_row(row_key)
class TextualSubpyPlayer(App): class TextualSubpyPlayer(App):
@@ -327,6 +346,7 @@ class TextualSubpyPlayer(App):
currently_playing: SubSonic.Song | None = None currently_playing: SubSonic.Song | None = None
song_queue: list[SubSonic.Song] = [] song_queue: list[SubSonic.Song] = []
user_queue: list[SubSonic.Song] = []
isPlaying: bool = False isPlaying: bool = False
place: int = 0 place: int = 0
@@ -363,7 +383,7 @@ class TextualSubpyPlayer(App):
def queue_song(self, song: SubSonic.Song) -> None: def queue_song(self, song: SubSonic.Song) -> None:
logging.debug(f'Queue\'d song "{song.title}" by {song.artist}.') logging.debug(f'Queue\'d song "{song.title}" by {song.artist}.')
self.song_queue.append(song) self.user_queue.append(song)
def action_play_pause_song(self) -> None: def action_play_pause_song(self) -> None:
self.play_pause_song() self.play_pause_song()
+9 -9
View File
@@ -1,9 +1,9 @@
[2025-01-24 14:13:51,689] DEBUG in selector_events: Using selector: EpollSelector [2025-01-24 14:38:51,125] DEBUG in selector_events: Using selector: EpollSelector
[2025-01-24 14:13:53,465] DEBUG in screens-test: sus [2025-01-24 14:38:51,902] DEBUG in screens-test: sus
[2025-01-24 14:13:53,503] DEBUG in connectionpool: Starting new HTTPS connection (1): music.0x01fe.net:443 [2025-01-24 14:38:51,930] DEBUG in connectionpool: Starting new HTTPS connection (1): music.0x01fe.net:443
[2025-01-24 14:13:53,724] DEBUG in connectionpool: https://music.0x01fe.net:443 "GET /rest/getPlaylists?u=pseudo&t=2906549f2dd426cd73b88e461d73472b&s=6D4FZXTN&v=1.16.1&c=testing&f=json HTTP/1.1" 200 705 [2025-01-24 14:38:52,091] DEBUG in connectionpool: https://music.0x01fe.net:443 "GET /rest/getPlaylists?u=pseudo&t=3b3e07bd0a56711c9db81acfb74b5560&s=2Q2MV419&v=1.16.1&c=testing&f=json HTTP/1.1" 200 705
[2025-01-24 14:13:54,681] DEBUG in connectionpool: Starting new HTTPS connection (1): music.0x01fe.net:443 [2025-01-24 14:38:52,947] DEBUG in connectionpool: Starting new HTTPS connection (1): music.0x01fe.net:443
[2025-01-24 14:13:54,852] DEBUG in connectionpool: https://music.0x01fe.net:443 "GET /rest/getPlaylist?u=pseudo&t=4caaa96b81eab5329f9b063d7ac830ff&s=9WROPV8Z&v=1.16.1&c=testing&f=json&id=e6e8ff27-2a60-4e33-8aa1-09586191166a HTTP/1.1" 200 None [2025-01-24 14:38:53,121] DEBUG in connectionpool: https://music.0x01fe.net:443 "GET /rest/getPlaylist?u=pseudo&t=174305d05353398cf608a65562db736f&s=GQLIDGEJ&v=1.16.1&c=testing&f=json&id=e6e8ff27-2a60-4e33-8aa1-09586191166a HTTP/1.1" 200 None
[2025-01-24 14:13:56,439] DEBUG in screens-test: Playing song Chang’e by King Gizzard & The Lizard Wizard. [2025-01-24 14:38:54,045] DEBUG in screens-test: Playing song Theia by King Gizzard & The Lizard Wizard.
[2025-01-24 14:13:56,441] DEBUG in connectionpool: Starting new HTTPS connection (1): music.0x01fe.net:443 [2025-01-24 14:38:54,046] DEBUG in connectionpool: Starting new HTTPS connection (1): music.0x01fe.net:443
[2025-01-24 14:13:56,647] DEBUG in connectionpool: https://music.0x01fe.net:443 "GET /rest/stream?u=pseudo&t=6e30cb84d1ae2aaa3bb12c9461150982&s=3EEVNYDL&v=1.16.1&c=testing&id=d926c1f739d868662d17a5e3fa1cfd09 HTTP/1.1" 200 9563445 [2025-01-24 14:38:54,249] DEBUG in connectionpool: https://music.0x01fe.net:443 "GET /rest/stream?u=pseudo&t=61c596042c3be872619f0f39ddcc645d&s=LAPQRCLD&v=1.16.1&c=testing&id=9e28af41e8bfcf423a5a958cd7aca5cc HTTP/1.1" 200 8314893