From 287f8d5e3e5295066186d63b1c6975aac0490024 Mon Sep 17 00:00:00 2001 From: SimolZimol <70102430+SimolZimol@users.noreply.github.com> Date: Fri, 16 May 2025 12:08:54 +0200 Subject: [PATCH] modified: app.py modified: templates/quiz.html --- app.py | 50 ++++++++++++++++++++-- templates/quiz.html | 102 +++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 142 insertions(+), 10 deletions(-) diff --git a/app.py b/app.py index 068ebcd..7189cf6 100644 --- a/app.py +++ b/app.py @@ -11,7 +11,8 @@ import random app = Flask(__name__) app.secret_key = os.getenv("SECRET_KEY") -SCOPE = "user-library-read playlist-read-private" +# Erweiterte Berechtigungen für Web Playback SDK +SCOPE = "user-library-read playlist-read-private streaming user-read-email user-read-private" def get_spotify_client(): return spotipy.Spotify(auth_manager=SpotifyOAuth( @@ -62,12 +63,53 @@ def quiz(playlist_id): sp = get_spotify_client() items = sp.playlist_items(playlist_id, additional_types=["track"])["items"] - tracks = [item["track"] for item in items if item["track"]["preview_url"]] + tracks = [item["track"] for item in items] if not tracks: - return "Keine Tracks mit Vorschau verfügbar!" + return "Keine Tracks verfügbar!" track = random.choice(tracks) - return render_template("quiz.html", track=track) + + # Token aus der Sitzung holen für das Web Playback SDK + token_info = session.get('token_info', None) + if not token_info: + return redirect('/login') + + # Zugriff auf access_token + access_token = token_info['access_token'] + + return render_template("quiz.html", track=track, access_token=access_token, playlist_id=playlist_id) + +@app.route("/play_track", methods=["POST"]) +def play_track(): + device_id = request.args.get('device_id') + track_uri = request.args.get('track_uri') + + if not device_id or not track_uri: + return {"error": "Missing device_id or track_uri"}, 400 + + sp = get_spotify_client() + sp.start_playback(device_id=device_id, uris=[track_uri]) + + return {"success": True} + +@app.route("/toggle_playback", methods=["POST"]) +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 + current_playback = sp.current_playback() + + if current_playback and current_playback.get('is_playing'): + sp.pause_playback(device_id=device_id) + else: + sp.start_playback(device_id=device_id) + + return {"success": True} @app.route('/logout') def logout(): diff --git a/templates/quiz.html b/templates/quiz.html index b9c39ed..da7ebfd 100644 --- a/templates/quiz.html +++ b/templates/quiz.html @@ -1,13 +1,103 @@ -Musik Quiz + + Musik Quiz + + + + +

Wer ist der Künstler dieses Songs?

- + + + + + +
+ +
+

Antwort: {{ track.artists[0].name }} (für Demo-Zwecke)

- Neue Frage + Neue Frage + +