fix: Playlists Pagination + Player Fehlermeldungen

- Playlists: Alle werden jetzt geladen (Pagination)
- Player: Fehlermeldung wenn kein Geraet aktiv
- next/previous/repeat/shuffle zeigen Fehler statt stillschweigend zuversagen
This commit is contained in:
x3
2026-09-06 08:50:30 +00:00
parent 4680d25189
commit c3f7d87e67
3 changed files with 41 additions and 17 deletions
+14 -1
View File
@@ -76,7 +76,7 @@ class SpotifyClient:
data["context_uri"] = context_uri data["context_uri"] = context_uri
if uris: if uris:
data["uris"] = uris data["uris"] = uris
if offset: if offset is not None:
data["offset"] = offset data["offset"] = offset
if position_ms is not None: if position_ms is not None:
data["position_ms"] = position_ms data["position_ms"] = position_ms
@@ -145,6 +145,19 @@ class SpotifyClient:
def get_playlists(self, limit=50, offset=0): def get_playlists(self, limit=50, offset=0):
return self._get("/me/playlists", {"limit": limit, "offset": offset}) return self._get("/me/playlists", {"limit": limit, "offset": offset})
def get_all_playlists(self):
all_items = []
offset = 0
limit = 50
while True:
data = self.get_playlists(limit=limit, offset=offset)
items = data.get("items", [])
all_items.extend(items)
if len(items) < limit:
break
offset += limit
return all_items
def get_playlist(self, playlist_id): def get_playlist(self, playlist_id):
return self._get(f"/playlists/{playlist_id}") return self._get(f"/playlists/{playlist_id}")
+7 -3
View File
@@ -58,7 +58,7 @@ class Player:
def toggle_play(self): def toggle_play(self):
if not self.current_playback: if not self.current_playback:
return raise Exception("Kein Wiedergabegeraet aktiv")
if self.current_playback.get("is_playing"): if self.current_playback.get("is_playing"):
self.client.pause() self.client.pause()
else: else:
@@ -67,11 +67,15 @@ class Player:
self.refresh() self.refresh()
def next(self): def next(self):
if not self.current_playback:
raise Exception("Kein Wiedergabegeraet aktiv")
self.client.next_track() self.client.next_track()
time.sleep(0.5) time.sleep(0.5)
self.refresh() self.refresh()
def previous(self): def previous(self):
if not self.current_playback:
raise Exception("Kein Wiedergabegeraet aktiv")
self.client.previous_track() self.client.previous_track()
time.sleep(0.5) time.sleep(0.5)
self.refresh() self.refresh()
@@ -101,7 +105,7 @@ class Player:
def toggle_repeat(self): def toggle_repeat(self):
if not self.current_playback: if not self.current_playback:
return raise Exception("Kein Wiedergabegeraet aktiv")
state = self.current_playback.get("repeat_state", "off") state = self.current_playback.get("repeat_state", "off")
new_state = "track" if state == "off" else "off" new_state = "track" if state == "off" else "off"
self.client.set_repeat(new_state) self.client.set_repeat(new_state)
@@ -109,7 +113,7 @@ class Player:
def toggle_shuffle(self): def toggle_shuffle(self):
if not self.current_playback: if not self.current_playback:
return raise Exception("Kein Wiedergabegeraet aktiv")
state = not self.current_playback.get("shuffle_state", False) state = not self.current_playback.get("shuffle_state", False)
self.client.set_shuffle(state) self.client.set_shuffle(state)
self.refresh() self.refresh()
+20 -13
View File
@@ -435,19 +435,26 @@ class UI:
self.loading = True self.loading = True
self.draw() self.draw()
try: try:
data = self.client.get_playlists(limit=50) all_items = []
items = [] offset = 0
for p in data.get("items", []): limit = 50
items.append({ while True:
"type": "playlist", data = self.client.get_playlists(limit=limit, offset=offset)
"id": p["id"], items = data.get("items", [])
"name": p["name"], for p in items:
"tracks": p.get("tracks", {}).get("total", 0), all_items.append({
"owner": p.get("owner", {}).get("display_name", ""), "type": "playlist",
"uri": p["uri"], "id": p["id"],
}) "name": p["name"],
self.content_items = items "tracks": p.get("tracks", {}).get("total", 0),
self.playlists_cache = items "owner": p.get("owner", {}).get("display_name", ""),
"uri": p["uri"],
})
if len(items) < limit:
break
offset += limit
self.content_items = all_items
self.playlists_cache = all_items
except Exception as e: except Exception as e:
self.content_items = [] self.content_items = []
self.show_message(f"Fehler: {e}") self.show_message(f"Fehler: {e}")