diff --git a/templates/quiz.html b/templates/quiz.html
index 811770f..bd37de4 100644
--- a/templates/quiz.html
+++ b/templates/quiz.html
@@ -218,6 +218,19 @@
// 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 }}';
@@ -301,7 +314,7 @@
document.getElementById('question-text').innerText = i18n.question_artist;
document.getElementById('answerInput').placeholder = i18n.input_artist;
} else if (currentGameMode === 'title') {
- correctAnswer = "{{ track.name }}";
+ correctAnswer = cleanTitle("{{ track.name }}"); // Bereinige den Titel
document.getElementById('question-text').innerText = i18n.question_title;
document.getElementById('answerInput').placeholder = i18n.input_title;
} else if (currentGameMode === 'year') {
@@ -354,10 +367,14 @@
data.results.forEach(result => {
const item = document.createElement('div');
item.className = 'search-item';
- item.innerHTML = `${result.name} - ${result.artist}`;
+ // 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.onclick = function() {
- document.getElementById('answerInput').value =
- currentGameMode === 'artist' ? result.artist : result.name;
+ // Setze den bereinigten Wert ins Eingabefeld
+ const valueToSet = currentGameMode === 'artist' ? result.artist :
+ currentGameMode === 'title' ? cleanTitle(result.name) : result.name;
+ document.getElementById('answerInput').value = valueToSet;
resultsContainer.style.display = 'none';
};
resultsContainer.appendChild(item);
@@ -371,9 +388,14 @@
}
function checkAnswer() {
- const guess = document.getElementById('answerInput').value;
+ let 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' },