modified: app.py

This commit is contained in:
2025-10-31 20:11:25 +01:00
parent 266692a41d
commit 93f13859dc

14
app.py
View File

@@ -137,8 +137,10 @@ def quiz(playlist_id):
if not tracks:
return "Keine Tracks verfügbar!"
# Verwende einen Ring-Buffer: nur die letzten 50 Songs merken (verhindert Session-Overflow)
played_tracks = session.get(f'played_tracks_{playlist_id}', [])
score = session.get(f'score_{playlist_id}', 0)
total_played = session.get(f'total_played_{playlist_id}', 0) # Zähler für alle gespielten Songs
# Wenn alle Songs gespielt wurden, played_tracks zurücksetzen, Score bleibt!
available_tracks = [t for t in tracks if t["id"] not in played_tracks]
@@ -149,11 +151,18 @@ def quiz(playlist_id):
track = random.choice(available_tracks)
played_tracks.append(track["id"])
# Ring-Buffer: Halte nur die letzten 75 gespielten Track-IDs (verhindert Session-Overflow bei großen Playlists)
if len(played_tracks) > 75:
played_tracks = played_tracks[-75:]
total_played += 1
session[f'played_tracks_{playlist_id}'] = played_tracks
session[f'score_{playlist_id}'] = score
session[f'total_played_{playlist_id}'] = total_played
# Für die Anzeige der beantworteten Fragen
answered = len(played_tracks) - 1 if len(played_tracks) > 0 else 0
# Für die Anzeige der beantworteten Fragen (nutze total_played statt len(played_tracks))
answered = total_played - 1 if total_played > 0 else 0
token_info = session.get('token_info', None)
if not token_info:
@@ -307,6 +316,7 @@ def index():
def reset_quiz(playlist_id):
session.pop(f'played_tracks_{playlist_id}', None)
session.pop(f'score_{playlist_id}', None)
session.pop(f'total_played_{playlist_id}', None) # Auch den Zähler zurücksetzen
next_mode = request.args.get('next_mode')
if next_mode:
return redirect(url_for('quiz', playlist_id=playlist_id, mode=next_mode))