feat: KoePi bestellmagazin-Filter, KW ohne Klammern erkannt, kommende Prospekte nach Woche unterteilt, Bier-Icon-Prospekte nach oben sortiert

This commit is contained in:
2026-07-18 10:57:49 +02:00
parent c1693c93c8
commit 824e76a107
2 changed files with 53 additions and 9 deletions

View File

@@ -166,11 +166,15 @@ async function fetchLeafletDetail(leafletId, cache) {
}
}
// Extrahiert "(KW29 Do-Sa)"-artige Klammerzusätze aus dem Leaflet-Namen, falls
// vorhanden (nicht jede Filiale/jeder Prospekt hat sowas)
// Extrahiert eine "(KW29 Do-Sa)"-artige Angabe aus dem Leaflet-Namen. Manche
// Ketten (z.B. ALDI) schreiben die KW-Angabe ohne umschließende Klammern
// ("... KW32 ...") — die wird dann selbst eingeklammert, damit die Anzeige
// überall einheitlich aussieht.
function extractWeekInfo(name) {
const m = (name || '').match(/\([^)]*KW\s*\d+[^)]*\)/i);
return m ? m[0] : '';
const bracket = (name || '').match(/\([^)]*KW\s*\d+[^)]*\)/i);
if (bracket) return bracket[0];
const bare = (name || '').match(/KW\s*\d+(?:\s*[A-Za-zÄÖÜäöüß-]+)?/i);
return bare ? `(${bare[0]})` : '';
}
// Löst die feste Liste gewünschter Filialen (LOCAL_STORE_SEED_LEAFLETS) einmalig
@@ -561,7 +565,7 @@ async function scrapeProspekte() {
// "Sondermagazin"-Prospekte ausblenden (keine normalen Wochenangebote)
// Unerwünschte Prospekt-Typen ausblenden (Sondermagazine, Reise-Prospekte etc.)
const EXCLUDED_TITLE_KEYWORDS = ['sondermagazin', 'reisen'];
const EXCLUDED_TITLE_KEYWORDS = ['sondermagazin', 'reisen', 'bestellmagazin'];
const withoutSondermagazin = all.filter(b => {
const t = (b.title || '').toLowerCase();
return !EXCLUDED_TITLE_KEYWORDS.some(kw => t.includes(kw));