SPB Git forge

spb/rareindex

Public
54commits 1branches 0releases
7.1 MBsize
maindefault branch
10 days agolast push
TypeScript 61.9% HTML 37.2% SQL 0.7%
1.9 KB · 31 lines typescript
Raw Blame History
1/**2 * Live smoke test: pnpm tsx connectors/api/pricecharting/_smoke.ts [consoleUri…]3 * Crawls a handful of products, prints normalised records, and captures fixtures when4 * CAPTURE=1 (data/fixtures/pricecharting/<slug>.json).5 */6import { createRouter, createCrawlContext, getConnectorMeta } from '@rareindex/connectors';7import { saveFixture } from '@rareindex/connectors/testing';8import { env } from '@rareindex/shared';9import createConnector from './index.js';1011const e = env();12const meta = getConnectorMeta('pricecharting');13const connector = createConnector(meta);14const router = createRouter({ firecrawlApiKey: e.FIRECRAWL_API_KEY, scrapflyApiKey: e.SCRAPFLY_API_KEY });15const seeds = process.argv.slice(2);16const ctx = createCrawlContext({ router, meta: { ...meta, config: { ...meta.config, productsPerConsole: 2 } }, options: { mode: 'probe', limit: Number(process.env.LIMIT ?? 6), seeds: seeds.length ? seeds : undefined } });1718let n = 0;19for await (const raw of connector.crawl(ctx)) {20  n++;21  const recs = await connector.normalize({ ...raw, externalId: raw.externalId ?? null, fetchedAt: raw.fetchedAt ?? new Date() });22  const p = raw.payload as { title: string; consoleUri: string; sales: unknown[]; prices: unknown[] };23  console.log(`\n# ${p.consoleUri} / ${p.title} — ${recs.length} records (${p.sales.length} sales rows, ${p.prices.length} price cells)`);24  for (const r of recs.slice(0, 4)) console.log(JSON.stringify(r).slice(0, 600));25  if (process.env.CAPTURE) {26    const slug = raw.url.split('/').slice(-2).join('__');27    saveFixture('pricecharting', slug, { raw: { url: raw.url, externalId: raw.externalId ?? null, kind: raw.kind, engine: raw.engine, fetchedAt: raw.fetchedAt ?? new Date(), payload: raw.payload }, expect: { minCount: 1, kinds: ['catalog_item', 'price_observation', 'sale'] }, note: `captured live from ${raw.url}` });28  }29}30console.log(`\n${n} raw records; engine stats`, ctx.engineStats, 'anomalies', ctx.anomalies);31