fix: KoePi Netto-Getraenke-Discount-Logo korrekt, Sondermagazin/Bestellmagazin-Filter repariert
This commit is contained in:
@@ -325,12 +325,16 @@ async function fetchOffersViaApi() {
|
||||
const leafletUrl = detail
|
||||
? `https://www.marktguru.de/leaflets/${detail.id}${child ? `/page/${child.pageIndex}` : ''}`
|
||||
: null;
|
||||
const knownStore = storeInfo.id != null
|
||||
? db.prepare('SELECT retailer FROM koepi_local_stores WHERE store_id=?').get(storeInfo.id)
|
||||
: null;
|
||||
const retailerLabel = knownStore?.retailer || advertiser.name || '';
|
||||
return {
|
||||
name: r.description || r.title || advertiser.name || '',
|
||||
brand: r.brand?.name || '',
|
||||
price: Number.isFinite(priceNum) ? `€ ${priceNum.toFixed(2).replace('.', ',')}` : (r.price || ''),
|
||||
oldPrice: Number.isFinite(oldPriceNum) ? `€ ${oldPriceNum.toFixed(2).replace('.', ',')}` : (r.oldPrice || ''),
|
||||
retailer: advertiser.name || '',
|
||||
retailer: retailerLabel,
|
||||
dateRange: weekInfo ? `${baseDateRange} ${weekInfo}` : baseDateRange,
|
||||
weekInfo,
|
||||
validity: '',
|
||||
@@ -566,10 +570,17 @@ async function scrapeProspekte() {
|
||||
const detail = await fetchLeafletDetail(f.mainLeafletId, leafletCache);
|
||||
const store = detail.closestStore;
|
||||
const weekInfo = weekInfoWithFallback(detail.name, f.validFrom);
|
||||
// Store-spezifische Bezeichnung aus der Whitelist bevorzugen (z.B. "Netto
|
||||
// Getränke-Discount") statt dem generischen advertiser.name von marktguru
|
||||
// (liefert für diese Filiale fälschlich nur "Netto Marken-Discount")
|
||||
const knownStore = store.id != null
|
||||
? db.prepare('SELECT retailer FROM koepi_local_stores WHERE store_id=?').get(store.id)
|
||||
: null;
|
||||
all.push({
|
||||
id: f.id,
|
||||
publisher: f.advertiser?.name || '',
|
||||
publisher: knownStore?.retailer || f.advertiser?.name || '',
|
||||
title: f.advertiser?.name || cleanTitle(detail.name) || '',
|
||||
rawName: detail.name || '', // nur intern, für den Ausschluss-Filter unten
|
||||
weekInfo,
|
||||
street: store.address || '',
|
||||
zip: MG_ZIP,
|
||||
@@ -596,13 +607,15 @@ async function scrapeProspekte() {
|
||||
for (const b of all) b.hasKoenigPilsener = false;
|
||||
}
|
||||
|
||||
// "Sondermagazin"-Prospekte ausblenden (keine normalen Wochenangebote)
|
||||
// Unerwünschte Prospekt-Typen ausblenden (Sondermagazine, Reise-Prospekte etc.)
|
||||
// WICHTIG: gegen rawName (den echten Leaflet-Namen) prüfen, nicht gegen
|
||||
// title/publisher — die zeigen nur noch den sauberen Kettennamen und würden
|
||||
// "Sondermagazin"/"Bestellmagazin" im echten Namen sonst nie mehr finden.
|
||||
const EXCLUDED_TITLE_KEYWORDS = ['sondermagazin', 'reisen', 'bestellmagazin'];
|
||||
const withoutSondermagazin = all.filter(b => {
|
||||
const t = (b.title || '').toLowerCase();
|
||||
const t = (b.rawName || '').toLowerCase();
|
||||
return !EXCLUDED_TITLE_KEYWORDS.some(kw => t.includes(kw));
|
||||
});
|
||||
}).map(({ rawName, ...rest }) => rest); // rawName war nur intern nötig
|
||||
const targeted = withoutSondermagazin.filter(b => b.isTarget);
|
||||
|
||||
// Chronologisch in "aktuell laufend" und "kommend" trennen
|
||||
|
||||
Reference in New Issue
Block a user