diff --git a/backend/src/tools/koepi/routes.js b/backend/src/tools/koepi/routes.js index 9aa4348..577ad14 100644 --- a/backend/src/tools/koepi/routes.js +++ b/backend/src/tools/koepi/routes.js @@ -93,7 +93,8 @@ async function scrapeMarktguru() { const cookies = await page.cookies('https://cdn.marktguru.de'); const cookieStr = cookies.map(c => `${c.name}=${c.value}`).join('; '); - await Promise.all(offers.map(offer => new Promise(resolve => { + // Sequenziell laden damit Cookie-Session stabil bleibt + for (const offer of offers) { await new Promise(resolve => { if (!offer.image || !offer.image.startsWith('https://')) return resolve(); const req = require('https').get(offer.image, { headers: { @@ -114,7 +115,7 @@ async function scrapeMarktguru() { }); req.on('error', () => { offer.image = null; resolve(); }); req.setTimeout(8000, () => { req.destroy(); offer.image = null; resolve(); }); - }))); + }); } // Filtern auf Ziel-Händler + nur König Pilsener const filtered = offers.filter(o => { diff --git a/frontend/src/tools/koepi.jsx b/frontend/src/tools/koepi.jsx index e28b962..168436f 100644 --- a/frontend/src/tools/koepi.jsx +++ b/frontend/src/tools/koepi.jsx @@ -30,81 +30,68 @@ function OfferCard({ offer }) { const color = publisherColor(offer.retailer); return (