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.5 KB · 25 lines typescript
Raw Blame History
1/**2 * Live smoke test: renders one Goldin "Sold Items" page per selected seed through Scrapfly and prints3 * normalised sales. Usage: SCRAPFLY_API_KEY=… pnpm tsx connectors/scrapfly/goldin/_smoke.ts [categorySlug…]4 * Costs ~6 Scrapfly credits per page.5 */6import { createCrawlContext, createRouter, getConnectorMeta } from '@rareindex/connectors';7import { childLogger } from '@rareindex/shared';8import createConnector from './index.js';910const meta = getConnectorMeta('goldin');11const connector = createConnector(meta);12const router = createRouter({ scrapflyApiKey: process.env.SCRAPFLY_API_KEY, firecrawlApiKey: process.env.FIRECRAWL_API_KEY });13const categories = process.argv.slice(2);14const ctx = createCrawlContext({ router, meta, options: { mode: 'probe', limit: 10, categories: categories.length ? categories : ['pokemon'] }, log: childLogger({ connector: meta.id, smoke: true }) });1516let total = 0;17for await (const raw of connector.crawl(ctx)) {18  const records = await connector.normalize({ ...raw, externalId: raw.externalId ?? null, fetchedAt: raw.fetchedAt ?? new Date() });19  total += records.length;20  const p = raw.payload as { total: number | null; lots: unknown[]; seed: { path: string } };21  console.log(`page ${raw.url} → ${p.lots.length} lots (source total ${p.total}) → ${records.length} sales`);22  for (const r of records.slice(0, 3)) console.log(JSON.stringify(r, null, 1));23}24console.log({ totalNormalized: total, engineStats: ctx.engineStats, anomalies: ctx.anomalies });25