From 1457557deacda803a7b81de63ecaab24e3dea491 Mon Sep 17 00:00:00 2001 From: Simon Date: Fri, 14 Nov 2025 23:48:01 +0100 Subject: [PATCH] modified: app.py modified: templates/quiz.html --- app.py | 16 +++++----------- templates/quiz.html | 42 +++++++----------------------------------- 2 files changed, 12 insertions(+), 46 deletions(-) diff --git a/app.py b/app.py index 3d07e57..0eeae6b 100644 --- a/app.py +++ b/app.py @@ -55,13 +55,11 @@ def similarity(a, b): def clean_title(title): # Entfernt alles in () oder [] title = re.sub(r"(\s*[\(\[][^)\]]*[\)\]])", "", title) - # Vereinheitliche und entferne alle Arten von Apostrophen und Anführungszeichen + # Entferne alle Arten von Apostrophen, Backticks und Anführungszeichen title = title.replace("'", "").replace("'", "").replace("'", "").replace("`", "") - title = title.replace('"', '').replace("„", '').replace(""", '').replace(""", '').replace("«", '').replace("»", '') - # Entferne weitere Sonderzeichen die Probleme machen können - title = title.replace("´", "").replace("′", "").replace("ʹ", "") - # Entferne doppelte Leerzeichen - title = re.sub(r'\s+', ' ', title) + title = title.replace('"', '').replace("„", '').replace(""", '').replace(""", '').replace("´", "") + # Entferne weitere problematische Sonderzeichen + title = title.replace("–", "-").replace("—", "-").replace("…", "...") return title.strip() def get_all_playlist_tracks(sp, playlist_id): @@ -250,13 +248,9 @@ def check_answer(): game_mode = data.get('game_mode', 'artist') playlist_id = data.get('playlist_id') - # Speichere die originale Antwort für die Anzeige - display_answer = correct_answer - if game_mode == 'title': guess = clean_title(guess) correct_answer = clean_title(correct_answer) - display_answer = clean_title(display_answer) # Auch für die Anzeige bereinigen if game_mode == 'year': is_correct = guess == correct_answer @@ -270,7 +264,7 @@ def check_answer(): return { "correct": is_correct, - "correct_answer": display_answer + "correct_answer": correct_answer } @app.route("/play_track", methods=["POST"]) diff --git a/templates/quiz.html b/templates/quiz.html index 002f66b..811770f 100644 --- a/templates/quiz.html +++ b/templates/quiz.html @@ -218,19 +218,6 @@ // translations für JS verfügbar machen const i18n = {{ translations|tojson }}; - // Funktion zum Bereinigen von Titeln (entfernt Sonderzeichen) - function cleanTitle(title) { - // Entfernt alles in () oder [] - title = title.replace(/(\s*[\(\[][^)\]]*[\)\]])/g, ''); - // Entferne alle Arten von Apostrophen und Anführungszeichen - title = title.replace(/['\'\'`]/g, '').replace(/["„"""«»]/g, ''); - // Entferne weitere Sonderzeichen - title = title.replace(/[´′ʹ]/g, ''); - // Entferne doppelte Leerzeichen - title = title.replace(/\s+/g, ' '); - return title.trim(); - } - // Wird aufgerufen, wenn Spotify Web Playback SDK geladen ist window.onSpotifyWebPlaybackSDKReady = () => { const token = '{{ access_token }}'; @@ -314,7 +301,7 @@ document.getElementById('question-text').innerText = i18n.question_artist; document.getElementById('answerInput').placeholder = i18n.input_artist; } else if (currentGameMode === 'title') { - correctAnswer = cleanTitle("{{ track.name }}"); // Bereinige den Titel + correctAnswer = "{{ track.name }}"; document.getElementById('question-text').innerText = i18n.question_title; document.getElementById('answerInput').placeholder = i18n.input_title; } else if (currentGameMode === 'year') { @@ -367,14 +354,10 @@ data.results.forEach(result => { const item = document.createElement('div'); item.className = 'search-item'; - // Zeige den bereinigten Namen im Autocomplete (wenn im title-Modus) - const displayName = currentGameMode === 'title' ? cleanTitle(result.name) : result.name; - item.innerHTML = `${displayName} - ${result.artist}`; + item.innerHTML = `${result.name} - ${result.artist}`; item.onclick = function() { - // Setze den bereinigten Wert ins Eingabefeld - const valueToSet = currentGameMode === 'artist' ? result.artist : - currentGameMode === 'title' ? cleanTitle(result.name) : result.name; - document.getElementById('answerInput').value = valueToSet; + document.getElementById('answerInput').value = + currentGameMode === 'artist' ? result.artist : result.name; resultsContainer.style.display = 'none'; }; resultsContainer.appendChild(item); @@ -388,14 +371,9 @@ } function checkAnswer() { - let guess = document.getElementById('answerInput').value; + const guess = document.getElementById('answerInput').value; if (!guess) return; - // Bereinige die Eingabe im title-Modus - if (currentGameMode === 'title') { - guess = cleanTitle(guess); - } - fetch('/check_answer', { method: 'POST', headers: { 'Content-Type': 'application/json' }, @@ -411,19 +389,13 @@ const resultContainer = document.getElementById('resultContainer'); resultContainer.style.display = 'block'; - // Bereinige die Antwort für die Anzeige im title-Modus - let displayAnswer = data.correct_answer; - if (currentGameMode === 'title') { - displayAnswer = cleanTitle(displayAnswer); - } - if (data.correct) { resultContainer.className = 'result-container correct'; resultContainer.innerHTML = `

${i18n.correct}

`; } else { resultContainer.className = 'result-container incorrect'; resultContainer.innerHTML = `

${i18n.wrong}

-

${i18n.right_answer} ${displayAnswer}

`; +

${i18n.right_answer} ${data.correct_answer}

`; } // Song-Infos ergänzen @@ -431,7 +403,7 @@
Cover
-

${i18n.song || 'Song'}: ${currentGameMode === 'title' ? displayAnswer : '{{ track.name }}'}

+

${i18n.song || 'Song'}: {{ track.name }}

${i18n.artist || 'Artist'}: {{ track.artists[0].name }}

${i18n.album || 'Album'}: {{ track.album.name }}

${i18n.year || 'Year'}: {{ track.album.release_date[:4] }}