removed old player stuff
This commit is contained in:
1 parent
7bb50b64c7
commit
3e07ef0806
1 file changed
+1
-95
@@ -89,7 +89,6 @@ class AlbumSongs(Screen):
|
|||||||
song_index = self._find_selected_song()
|
song_index = self._find_selected_song()
|
||||||
app.play_song(self.songs[song_index])
|
app.play_song(self.songs[song_index])
|
||||||
app.song_queue = self.songs[song_index + 1:]
|
app.song_queue = self.songs[song_index + 1:]
|
||||||
app.update_queue_table()
|
|
||||||
|
|
||||||
def action_queue(self) -> None:
|
def action_queue(self) -> None:
|
||||||
app.queue_song(self._find_selected_song())
|
app.queue_song(self._find_selected_song())
|
||||||
@@ -110,7 +109,6 @@ class AlbumSongs(Screen):
|
|||||||
random.shuffle(q)
|
random.shuffle(q)
|
||||||
app.play_song(q.pop(0))
|
app.play_song(q.pop(0))
|
||||||
app.song_queue = q
|
app.song_queue = q
|
||||||
app.update_queue_table()
|
|
||||||
|
|
||||||
class ArtistAlbums(Screen):
|
class ArtistAlbums(Screen):
|
||||||
BINDINGS = [
|
BINDINGS = [
|
||||||
@@ -686,7 +684,6 @@ class PlaylistSongs(Screen):
|
|||||||
song_index = self._find_selected_song()
|
song_index = self._find_selected_song()
|
||||||
app.play_song(self.songs[song_index])
|
app.play_song(self.songs[song_index])
|
||||||
app.song_queue = self.songs[song_index + 1:]
|
app.song_queue = self.songs[song_index + 1:]
|
||||||
app.update_queue_table()
|
|
||||||
|
|
||||||
def action_queue(self) -> None:
|
def action_queue(self) -> None:
|
||||||
song_id: int = self._find_selected_song()
|
song_id: int = self._find_selected_song()
|
||||||
@@ -703,7 +700,6 @@ class PlaylistSongs(Screen):
|
|||||||
random.shuffle(q)
|
random.shuffle(q)
|
||||||
app.play_song(q.pop(0))
|
app.play_song(q.pop(0))
|
||||||
app.song_queue = q
|
app.song_queue = q
|
||||||
app.update_queue_table()
|
|
||||||
|
|
||||||
class Favourites(Screen):
|
class Favourites(Screen):
|
||||||
BINDINGS = [
|
BINDINGS = [
|
||||||
@@ -745,7 +741,6 @@ class Favourites(Screen):
|
|||||||
song_index = self._find_selected_song()
|
song_index = self._find_selected_song()
|
||||||
app.play_song(self.songs[song_index])
|
app.play_song(self.songs[song_index])
|
||||||
app.song_queue = self.songs[song_index + 1:]
|
app.song_queue = self.songs[song_index + 1:]
|
||||||
app.update_queue_table()
|
|
||||||
|
|
||||||
def action_queue(self) -> None:
|
def action_queue(self) -> None:
|
||||||
song_index = self._find_selected_song()
|
song_index = self._find_selected_song()
|
||||||
@@ -762,7 +757,6 @@ class Favourites(Screen):
|
|||||||
random.shuffle(q)
|
random.shuffle(q)
|
||||||
app.play_song(q.pop(0))
|
app.play_song(q.pop(0))
|
||||||
app.song_queue = q
|
app.song_queue = q
|
||||||
app.update_queue_table()
|
|
||||||
|
|
||||||
class CoverArtPixels(Container):
|
class CoverArtPixels(Container):
|
||||||
|
|
||||||
@@ -881,84 +875,7 @@ class QueueTable(Widget):
|
|||||||
|
|
||||||
asyncio.create_task(asyncio.to_thread(conn.star, song.id))
|
asyncio.create_task(asyncio.to_thread(conn.star, song.id))
|
||||||
|
|
||||||
# Fine to be a static renderable because it's not big enough to need a scroll
|
# TODO : https://textual.textualize.io/widgets/data_table/#labeled-rows
|
||||||
class NowPlayingInfo(Container):
|
|
||||||
song = reactive[SubSonic.Song | None](None, layout=True)
|
|
||||||
|
|
||||||
# Place is from pygame.mixer.music.get_pos and is in ms
|
|
||||||
place: reactive[int] = reactive(0)
|
|
||||||
|
|
||||||
def render(self) -> RenderResult:
|
|
||||||
if self.song:
|
|
||||||
if self.song.title and self.song.artist:
|
|
||||||
|
|
||||||
# Convert seconds to MM:SS
|
|
||||||
duration_min, duration_sec = divmod(self.song.duration, 60)
|
|
||||||
duration_formatted = f"{duration_min:02d}:{duration_sec:02d}"
|
|
||||||
|
|
||||||
place_in_seconds = self.place // 1000
|
|
||||||
place_min, place_sec = divmod(place_in_seconds, 60)
|
|
||||||
place_formatted = f"{place_min:02d}:{place_sec:02d}"
|
|
||||||
|
|
||||||
s = f"Song: {self.song.title}\nAlbum: {self.song.album}\nArtist: {self.song.artist}\nProgress: {place_formatted} / {duration_formatted}\n"
|
|
||||||
|
|
||||||
return s
|
|
||||||
return "Nothing Playing"
|
|
||||||
|
|
||||||
class NowPlaying(Widget):
|
|
||||||
def compose(self) -> ComposeResult:
|
|
||||||
yield NowPlayingInfo(id="textinfo")
|
|
||||||
yield CoverArtPixels(id="coverart")
|
|
||||||
|
|
||||||
def update_song(self, song: SubSonic.Song) -> None:
|
|
||||||
info = self.query_one(NowPlayingInfo)
|
|
||||||
info.song = song
|
|
||||||
|
|
||||||
if song.albumId:
|
|
||||||
cover_art = self.query_one(CoverArtPixels)
|
|
||||||
|
|
||||||
album = conn.getAlbumSongs(song.albumId)
|
|
||||||
if album:
|
|
||||||
cover_id: str | None = album[0].coverArtId
|
|
||||||
if cover_id:
|
|
||||||
cover_art.get_cover_art(cover_id)
|
|
||||||
|
|
||||||
def set_place(self, place: int) -> None:
|
|
||||||
info = self.query_one(NowPlayingInfo)
|
|
||||||
info.place = place
|
|
||||||
|
|
||||||
# https://textual.textualize.io/widgets/data_table/#labeled-rows
|
|
||||||
# Add this ^ to queue sometime plz
|
|
||||||
class MainView(Screen):
|
|
||||||
CSS_PATH = 'main.tcss'
|
|
||||||
|
|
||||||
def compose(self) -> ComposeResult:
|
|
||||||
yield Header(icon="")
|
|
||||||
with Horizontal(id="headerbs"):
|
|
||||||
yield Label(Text("* F1 ", style="bold orange").append_text(Text("Player", style="white")), classes="headerb")
|
|
||||||
yield Label(Text("F2 ", style="bold orange").append_text(Text("Artists", style="white")), classes="headerb")
|
|
||||||
yield Label(Text("F3 ", style="bold orange").append_text(Text("Albums", style="white")), classes="headerb")
|
|
||||||
yield Label(Text("F4 ", style="bold orange").append_text(Text("Favourites", style="white")), classes="headerb")
|
|
||||||
yield Label(Text("F5 ", style="bold orange").append_text(Text("Playlists", style="white")), classes="headerb")
|
|
||||||
with Horizontal():
|
|
||||||
with Vertical(classes="info", id='info'):
|
|
||||||
yield NowPlaying(id="now-playing")
|
|
||||||
# yield ProgressBar()
|
|
||||||
with Vertical(classes="column"):
|
|
||||||
yield Label("Queue")
|
|
||||||
yield QueueTable(id="queue")
|
|
||||||
yield Footer()
|
|
||||||
|
|
||||||
def on_mount(self) -> None:
|
|
||||||
app.sub_title = "Overview"
|
|
||||||
|
|
||||||
@on(events.ScreenResume)
|
|
||||||
def screen_resumed(self, event: events.ScreenResume) -> None:
|
|
||||||
app.sub_title = "Overview"
|
|
||||||
queue_table = self.query_one(QueueTable)
|
|
||||||
queue_table.update_queue()
|
|
||||||
app.update_now_playing()
|
|
||||||
|
|
||||||
class QueueScreen(ModalScreen):
|
class QueueScreen(ModalScreen):
|
||||||
|
|
||||||
BINDINGS = [
|
BINDINGS = [
|
||||||
@@ -1188,7 +1105,6 @@ class SubPy(App):
|
|||||||
self.check_playing_timer = self.set_interval(1 / 5, self.check_done_playing, pause=False)
|
self.check_playing_timer = self.set_interval(1 / 5, self.check_done_playing, pause=False)
|
||||||
self.progess_timer = self.set_interval(0.3, self.update_progress, pause=False)
|
self.progess_timer = self.set_interval(0.3, self.update_progress, pause=False)
|
||||||
|
|
||||||
self.update_queue_table()
|
|
||||||
self.update_now_playing()
|
self.update_now_playing()
|
||||||
|
|
||||||
def _music_player_loop(self) -> None:
|
def _music_player_loop(self) -> None:
|
||||||
@@ -1261,7 +1177,6 @@ class SubPy(App):
|
|||||||
|
|
||||||
song_to_play = self.play_history.pop()
|
song_to_play = self.play_history.pop()
|
||||||
self.play_song(song_to_play)
|
self.play_song(song_to_play)
|
||||||
self.update_queue_table()
|
|
||||||
|
|
||||||
def update_progress(self) -> None:
|
def update_progress(self) -> None:
|
||||||
if isinstance(self.screen, Player) and self.currently_playing:
|
if isinstance(self.screen, Player) and self.currently_playing:
|
||||||
@@ -1314,20 +1229,11 @@ class SubPy(App):
|
|||||||
logging.debug("Updating CoverArtPixels widget")
|
logging.debug("Updating CoverArtPixels widget")
|
||||||
self.screen.update_song(self.currently_playing)
|
self.screen.update_song(self.currently_playing)
|
||||||
|
|
||||||
def update_queue_table(self) -> None:
|
|
||||||
if isinstance(self.screen, MainView):
|
|
||||||
logging.debug("Updating queue through app")
|
|
||||||
queue_table = self.screen.query_one(QueueTable)
|
|
||||||
|
|
||||||
queue_table.update_queue()
|
|
||||||
|
|
||||||
def update_user_queue(self, song: SubSonic.Song) -> None:
|
def update_user_queue(self, song: SubSonic.Song) -> None:
|
||||||
self.user_queue.append(song)
|
self.user_queue.append(song)
|
||||||
self.update_queue_table()
|
|
||||||
|
|
||||||
def update_song_queue(self, song: SubSonic.Song) -> None:
|
def update_song_queue(self, song: SubSonic.Song) -> None:
|
||||||
self.song_queue.append(song)
|
self.song_queue.append(song)
|
||||||
self.update_queue_table()
|
|
||||||
|
|
||||||
async def action_star_c_song(self) -> None:
|
async def action_star_c_song(self) -> None:
|
||||||
if self.currently_playing:
|
if self.currently_playing:
|
||||||
|
|||||||
Reference in new issue
Block a user