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
if uris:
data["uris"] = uris
if offset:
if offset is not None:
data["offset"] = offset
if position_ms is not None:
data["position_ms"] = position_ms
@@ -145,6 +145,19 @@ class SpotifyClient:
def get_playlists(self, limit=50, offset=0):
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):
return self._get(f"/playlists/{playlist_id}")
+7 -3
View File
@@ -58,7 +58,7 @@ class Player:
def toggle_play(self):
if not self.current_playback:
return
raise Exception("Kein Wiedergabegeraet aktiv")
if self.current_playback.get("is_playing"):
self.client.pause()
else:
@@ -67,11 +67,15 @@ class Player:
self.refresh()
def next(self):
if not self.current_playback:
raise Exception("Kein Wiedergabegeraet aktiv")
self.client.next_track()
time.sleep(0.5)
self.refresh()
def previous(self):
if not self.current_playback:
raise Exception("Kein Wiedergabegeraet aktiv")
self.client.previous_track()
time.sleep(0.5)
self.refresh()
@@ -101,7 +105,7 @@ class Player:
def toggle_repeat(self):
if not self.current_playback:
return
raise Exception("Kein Wiedergabegeraet aktiv")
state = self.current_playback.get("repeat_state", "off")
new_state = "track" if state == "off" else "off"
self.client.set_repeat(new_state)
@@ -109,7 +113,7 @@ class Player:
def toggle_shuffle(self):
if not self.current_playback:
return
raise Exception("Kein Wiedergabegeraet aktiv")
state = not self.current_playback.get("shuffle_state", False)
self.client.set_shuffle(state)
self.refresh()
+13 -6
View File
@@ -435,10 +435,14 @@ class UI:
self.loading = True
self.draw()
try:
data = self.client.get_playlists(limit=50)
items = []
for p in data.get("items", []):
items.append({
all_items = []
offset = 0
limit = 50
while True:
data = self.client.get_playlists(limit=limit, offset=offset)
items = data.get("items", [])
for p in items:
all_items.append({
"type": "playlist",
"id": p["id"],
"name": p["name"],
@@ -446,8 +450,11 @@ class UI:
"owner": p.get("owner", {}).get("display_name", ""),
"uri": p["uri"],
})
self.content_items = items
self.playlists_cache = items
if len(items) < limit:
break
offset += limit
self.content_items = all_items
self.playlists_cache = all_items
except Exception as e:
self.content_items = []
self.show_message(f"Fehler: {e}")