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:
+14
-1
@@ -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}")
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
+20
-13
@@ -435,19 +435,26 @@ class UI:
|
||||
self.loading = True
|
||||
self.draw()
|
||||
try:
|
||||
data = self.client.get_playlists(limit=50)
|
||||
items = []
|
||||
for p in data.get("items", []):
|
||||
items.append({
|
||||
"type": "playlist",
|
||||
"id": p["id"],
|
||||
"name": p["name"],
|
||||
"tracks": p.get("tracks", {}).get("total", 0),
|
||||
"owner": p.get("owner", {}).get("display_name", ""),
|
||||
"uri": p["uri"],
|
||||
})
|
||||
self.content_items = items
|
||||
self.playlists_cache = items
|
||||
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"],
|
||||
"tracks": p.get("tracks", {}).get("total", 0),
|
||||
"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:
|
||||
self.content_items = []
|
||||
self.show_message(f"Fehler: {e}")
|
||||
|
||||
Reference in New Issue
Block a user