(async () => { const api = 'mtop.alibaba.idle.seller.pc.datacompass.item.list'; const H = { 'idle_site_biz_code': 'COMMONPRO', 'idle_user_group_member_id': '' }; const call = (dateType, page, pageSize) => lib.mtop.request({ api, v: '1.0', type: 'POST', dataType: 'json', ext_headers: H, data: { tabType: 'all', dateRange: '', ms: '', dateType, categoryInfoStr: '[]', itmName: '', itmId: '', isDpStk: '', mktActId: '', page, pageSize, }, }); const proj = x => ({ id: x.itmId, name: x.itmName, price: x.itmPrice, postDt: x.postDt, days: x.daysOnShelf, pv: x.showPv, uv: x.showUv, ipv: x.ipv, ipvUv: x.ipvUv, chat: x.chatUv, payUv: x.payByrCnt, ord: x.payOrdCnt, amt: x.payAmt, cvr: x.ipvPayUcvr, rfdOrd: x.crtRfdOrdCnt, rfdAmt: x.crtRfdAmt, c3: x.chnlCateLevel3Name, c4: x.chnlCateLevel4Name, }); const out = { test: null, err: null, data: {} }; try { const r0 = await call('recent7d', 1, 5); const d0 = r0 && r0.data && r0.data.data; out.test = { ret: r0 && r0.ret, len: d0 && d0.list && d0.list.length, containerKeys: d0 ? Object.keys(d0) : null, itemKeys: d0 && d0.list && d0.list[0] ? Object.keys(d0.list[0]) : null, }; if (!d0 || !d0.list || !d0.list.length) return out; for (const dt of ['recent7d', 'recent30d']) { const size = 100; const first = await call(dt, 1, size); const fd = first && first.data && first.data.data; const total = (fd && (fd.total ?? fd.count ?? fd.totalCount)) || (fd && fd.list ? fd.list.length : 0); const items = fd && fd.list ? fd.list.map(proj) : []; const pages = Math.min(Math.ceil(total / size), 8); for (let p = 2; p <= pages; p++) { const r = await call(dt, p, size); const d = r && r.data && r.data.data; if (d && d.list) items.push(...d.list.map(proj)); } out.data[dt] = { total, pagesFetched: pages, count: items.length, items }; } } catch (e) { out.err = (e && e.data && e.data.errorMsg) || String((e && e.message) || e); out.errRet = e && e.ret; } return out; })()