← back to Sanderson Onboard
scripts/harvest_hq_mertex.mjs
17 lines
import https from 'https'; import fs from 'fs';
const UA='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36';
const sleep=ms=>new Promise(r=>setTimeout(r,ms));
const get=u=>new Promise(res=>{https.get(u,{headers:{'User-Agent':UA,'Accept':'application/json'}},r=>{let d='';r.on('data',c=>d+=c);r.on('end',()=>{try{res(JSON.parse(d))}catch{res(null)}})}).on('error',()=>res(null))});
const rows=fs.readFileSync('pilot/harlequin_trade_harvest.jsonl','utf8').split('\n').filter(Boolean).map(JSON.parse).filter(r=>r.trade_usd);
const out=fs.createWriteStream('pilot/hq_mertex_bridge.jsonl');
let i=0;
for(const r of rows){i++;
const filter=encodeURIComponent(JSON.stringify({sku:r.haw}));
const d=await get(`https://www.harlequin.design/us/api/n/find?type=product&verbosity=3&filter=${filter}&limit=1`);
const c=d&&d.catalog&&(d.catalog.find(x=>(x.sku||'').toUpperCase()===r.haw)||d.catalog[0]);
out.write(JSON.stringify({mfr_sku:r.mfr_sku,haw:r.haw,trade:r.trade_usd,ssp:r.ssp_usd,mertex_short:c&&c.sdb_short_sku_code,mertex_full:c&&c.sdb_mertex_sku,design:c&&c.sdb_design_name,collection:c&&c.sdb_collection_name})+'\n');
if(i%50===0)console.error(`${i}/${rows.length}`);
await sleep(110);
}
out.end(); console.error('done '+rows.length);