From e9a80fe019bb716bd2e031e89110cf396b78f3cf Mon Sep 17 00:00:00 2001 From: Simon Date: Sat, 17 May 2025 08:40:20 +0200 Subject: [PATCH] modified: app.py --- app.py | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/app.py b/app.py index 293c9d0..88f2343 100644 --- a/app.py +++ b/app.py @@ -65,16 +65,29 @@ def playlists(): @app.route("/quiz/") def quiz(playlist_id): game_mode = request.args.get('mode', 'artist') - + sp = get_spotify_client() items = sp.playlist_items(playlist_id, additional_types=["track"])["items"] - - tracks = [item["track"] for item in items] + tracks = [item["track"] for item in items if item.get("track")] + if not tracks: return "Keine Tracks verfügbar!" - track = random.choice(tracks) - + # Gespielte Tracks aus der Session holen + played_tracks = session.get(f'played_tracks_{playlist_id}', []) + + # Filtere bereits gespielte Tracks heraus + available_tracks = [t for t in tracks if t["id"] not in played_tracks] + + # Wenn alle gespielt wurden, zurücksetzen + if not available_tracks: + played_tracks = [] + available_tracks = tracks + + track = random.choice(available_tracks) + played_tracks.append(track["id"]) + session[f'played_tracks_{playlist_id}'] = played_tracks + # Token aus der Sitzung holen für das Web Playback SDK token_info = session.get('token_info', None) if not token_info: @@ -170,19 +183,22 @@ def play_track(): def toggle_playback(): data = request.json device_id = data.get('device_id') - + if not device_id: return {"error": "Missing device_id"}, 400 - + sp = get_spotify_client() - # Aktuellen Playback-Status abrufen + # Playback-Status für das richtige Gerät prüfen current_playback = sp.current_playback() - - if current_playback and current_playback.get('is_playing'): + is_playing = False + if current_playback and current_playback.get('device', {}).get('id') == device_id: + is_playing = current_playback.get('is_playing', False) + + if is_playing: sp.pause_playback(device_id=device_id) else: sp.start_playback(device_id=device_id) - + return {"success": True} @app.route('/logout')