const https = require('https'); function httpGet(url) { return new Promise((res,rej)=>{ const u=new URL(url); https.request({hostname:u.hostname,path:u.pathname+u.search,headers:{'User-Agent':'Mozilla/5.0','Accept':'*/*'}},r=>{ let d=''; r.on('data',c=>d+=c); r.on('end',()=>res({status:r.statusCode,data:d})); }).on('error',rej).end(); }); } (async()=>{ // Get full Jumbo data with websites field const r = await httpGet('https://www.jumbo.com.ar/api/dataentities/JN/documents/bankDiscount?_fields=value,id&an=jumboargentina&_size=200'); const outer = JSON.parse(r.data); const items = JSON.parse(outer.value); const nowUnix = Math.floor(Date.now()/1000); const active = items.filter(x => parseInt(x.dateEnd||0) > nowUnix); // Analyze websites field const siteMap = {}; active.forEach(x => { const sites = x.websites || []; sites.forEach(s => { if (!siteMap[s]) siteMap[s] = 0; siteMap[s]++; }); }); console.log('Active items:', active.length); console.log('Websites distribution:', JSON.stringify(siteMap)); // Sample items with websites const withSites = active.filter(x => x.websites && x.websites.length > 0); console.log('\nItems with websites field:', withSites.length); withSites.slice(0,5).forEach(x => { const banks = (x.banks||[]).map(b=>b.name).join(','); console.log(` sites=${JSON.stringify(x.websites)} disc=${x.discount}% days=${x.days} banks=${banks}`); if (x.info) console.log(` info: ${String(x.info).slice(0,100)}`); }); // Items without websites (probably apply to all) const noSites = active.filter(x => !x.websites || x.websites.length === 0); console.log('\nItems without websites (universal):', noSites.length); noSites.slice(0,3).forEach(x => { const banks = (x.banks||[]).map(b=>b.name).join(','); console.log(` disc=${x.discount}% days=${x.days} banks=${banks} checkout=${x.checkout}`); }); // Check Disco discounts-del-dia page to verify API works // The API should let us filter by day=4 (Thursday) const thu = active.filter(x => (x.days||[]).includes('4')); console.log('\nJueves (day 4) active promos:', thu.length); thu.slice(0,5).forEach(x => { const banks = (x.banks||[]).map(b=>b.name).join(','); console.log(` disc=${x.discount}% banks=${banks} sites=${JSON.stringify(x.websites||[])} info=${String(x.info||'').slice(0,80)}`); }); // Also look at legals field const withLegals = active.filter(x => x.legals && x.legals.length > 10).slice(0,2); console.log('\nSample legals:'); withLegals.forEach(x => { console.log(` banks=${(x.banks||[]).map(b=>b.name).join(',')} disc=${x.discount}%`); console.log(` legals: ${String(x.legals).slice(0,200)}`); }); })().catch(e=>console.error(e));