modified: app.py

This commit is contained in:
2025-11-14 23:53:54 +01:00
parent 50c6753fde
commit 5c02266370

29
app.py
View File

@@ -55,11 +55,13 @@ def similarity(a, b):
def clean_title(title):
# Entfernt alles in () oder []
title = re.sub(r"(\s*[\(\[][^)\]]*[\)\]])", "", title)
# Entferne alle Arten von Apostrophen, Backticks und Anführungszeichen
title = title.replace("'", "").replace("'", "").replace("'", "").replace("`", "")
title = title.replace('"', '').replace("", '').replace(""", '').replace(""", '').replace("´", "")
# Entferne weitere problematische Sonderzeichen
title = title.replace("", "-").replace("", "-").replace("", "...")
# Entferne alle Arten von Apostrophen, Anführungszeichen und Backticks
title = title.replace("'", "").replace("'", "").replace("'", "")
title = title.replace("`", "").replace("´", "").replace("ʼ", "")
title = title.replace('"', "").replace("", "").replace(""", "").replace(""", "")
title = title.replace("'", "")
# Entferne weitere Sonderzeichen die Probleme machen könnten
title = re.sub(r"[^\w\s\-&]", "", title, flags=re.UNICODE)
return title.strip()
def get_all_playlist_tracks(sp, playlist_id):
@@ -222,8 +224,9 @@ def search_track():
for track in all_tracks:
cleaned_name = clean_title(track["name"])
cleaned_query = clean_title(query)
cleaned_artist = clean_title(track["artist"])
name_similarity = similarity(cleaned_query, cleaned_name)
artist_similarity = similarity(query, track["artist"])
artist_similarity = similarity(cleaned_query, cleaned_artist)
# Wenn Name oder Künstler zu 80% übereinstimmt
if name_similarity >= 0.8 or artist_similarity >= 0.8:
@@ -243,19 +246,15 @@ def search_track():
@app.route("/check_answer", methods=["POST"])
def check_answer():
data = request.json
guess = data.get('guess', '')
correct_answer = data.get('correct_answer', '')
guess = data.get('guess', '').lower()
correct_answer = data.get('correct_answer', '').lower()
game_mode = data.get('game_mode', 'artist')
playlist_id = data.get('playlist_id')
# Bereinige BEIDE Strings vor dem Vergleich (für title UND artist)
# Bei Titel und Künstler: Sonderzeichen entfernen für besseren Vergleich
if game_mode == 'title' or game_mode == 'artist':
guess = clean_title(guess).lower()
correct_answer = clean_title(correct_answer).lower()
else:
# Jahr-Modus: nur lowercase
guess = guess.lower()
correct_answer = correct_answer.lower()
guess = clean_title(guess)
correct_answer = clean_title(correct_answer)
if game_mode == 'year':
is_correct = guess == correct_answer