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
|
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}")
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
+13
-6
@@ -435,10 +435,14 @@ 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:
|
||||||
|
data = self.client.get_playlists(limit=limit, offset=offset)
|
||||||
|
items = data.get("items", [])
|
||||||
|
for p in items:
|
||||||
|
all_items.append({
|
||||||
"type": "playlist",
|
"type": "playlist",
|
||||||
"id": p["id"],
|
"id": p["id"],
|
||||||
"name": p["name"],
|
"name": p["name"],
|
||||||
@@ -446,8 +450,11 @@ class UI:
|
|||||||
"owner": p.get("owner", {}).get("display_name", ""),
|
"owner": p.get("owner", {}).get("display_name", ""),
|
||||||
"uri": p["uri"],
|
"uri": p["uri"],
|
||||||
})
|
})
|
||||||
self.content_items = items
|
if len(items) < limit:
|
||||||
self.playlists_cache = items
|
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}")
|
||||||
|
|||||||
Reference in New Issue
Block a user