From 8c817cad2bb49d6abb9346e33f9b004a3e9511ca Mon Sep 17 00:00:00 2001 From: Dicken Date: Thu, 11 Jun 2026 08:18:02 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20xREL=20erster=20Klick=20sucht=20frisch,?= =?UTF-8?q?=20Umlaut-Normalisierung=20(=C3=A4=E2=86=92ae,=20=C3=B6?= =?UTF-8?q?=E2=86=92oe,=20=C3=BC=E2=86=92ue,=20=C3=9F=E2=86=92ss)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/tools/media/routes.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/backend/src/tools/media/routes.js b/backend/src/tools/media/routes.js index 3e5366f..b968021 100644 --- a/backend/src/tools/media/routes.js +++ b/backend/src/tools/media/routes.js @@ -15,6 +15,14 @@ const BLOCKED_LANGS = new Set(['tr', 'hi', 'te', 'ta', 'ml', 'kn', 'bn', 'mr', ' // 16=Animation, 99=Documentary – aber nur rausfiltern wenn explizit kein Spielfilm-Genre dabei const DOC_GENRE_ID = 99; +// Umlaut-Normalisierung für xREL-Suche (Nürnberg → Nuernberg etc.) +function normalizeUmlauts(s) { + return (s||'') + .replace(/ä/g,'ae').replace(/ö/g,'oe').replace(/ü/g,'ue') + .replace(/Ä/g,'Ae').replace(/Ö/g,'Oe').replace(/Ü/g,'Ue') + .replace(/ß/g,'ss'); +} + // ── SQLite Cache ────────────────────────────────────────────────────────────── function cacheGet(key) { const row = db.prepare('SELECT value, expires_at FROM xrel_cache WHERE cache_key=?').get(key); @@ -125,7 +133,7 @@ async function getXrelData(tmdbId, imdbId, title, originalTitle) { const searchResults = await Promise.all(queries.map(async q => { try { return await xrelFetch('/search/ext_info.json', { - q: q.replace(/[*#!?:]/g,''), type:'movie', limit:10 + q: normalizeUmlauts(q).replace(/[*#!?:]/g,''), type:'movie', limit:10 }); } catch(_) { return null; } }));