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 probe: pnpm tsx connectors/api/discogs/_smoke.ts [--save]3 * Crawls a few records through the real router and prints normalized output; --save writes fixtures.4 */5import { createRouter, createCrawlContext, getConnectorMeta } from '@rareindex/connectors';6import { saveFixture } from '@rareindex/connectors/testing';7import createConnector from './index.js';89const save = process.argv.includes('--save');10const meta = getConnectorMeta('discogs');11const connector = createConnector(meta);12const router = createRouter({});13const ctx = createCrawlContext({ router, meta, options: { mode: 'probe', limit: 4, seeds: ['Nirvana Nevermind'] } });14let n = 0;15for await (const raw of connector.crawl(ctx)) {16  const out = await connector.normalize({ ...raw, externalId: raw.externalId ?? null, fetchedAt: raw.fetchedAt ?? new Date() });17  console.log(`raw ${raw.kind} ${raw.externalId} → ${out.length} records`);18  for (const r of out.slice(0, 2)) console.log('  ', JSON.stringify(r).slice(0, 400));19  if (save && n < 2) {20    saveFixture('discogs', raw.kind === 'catalog_item' ? 'nevermind-versions' : 'nevermind-release-stats', {21      raw: { url: raw.url, externalId: raw.externalId ?? null, kind: raw.kind, engine: raw.engine, fetchedAt: raw.fetchedAt ?? new Date(), payload: raw.payload },22      expect: raw.kind === 'catalog_item' ? { minCount: 5, kinds: ['catalog_item'], requiredFields: ['attributes.identifiers.discogs_release_id', 'attributes.name'] } : { minCount: 1, kinds: ['catalog_item', 'price_observation'] },23      note: 'Captured live from api.discogs.com',24    });25  }26  n++;27}28const lk = await connector.lookup('https://www.discogs.com/release/367084-Nirvana-Nevermind', ctx);29console.log('lookup →', lk.length, lk[0] ? JSON.stringify((await connector.normalize({ ...lk[0], externalId: lk[0].externalId ?? null, fetchedAt: lk[0].fetchedAt ?? new Date() }))[0]).slice(0, 300) : '');30console.log('engineStats', ctx.engineStats, 'anomalies', ctx.anomalies);31