modified: app.py

modified:   templates/quiz.html
This commit is contained in:
SimolZimol
2025-05-16 12:08:54 +02:00
parent 20509d212d
commit 287f8d5e3e
2 changed files with 142 additions and 10 deletions

50
app.py
View File

@@ -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():