← back to Govarbitrage

scripts/import-publicsurplus-free.ts

30 lines

// FREE Public Surplus import via server-rendered category HTML. $0, no browser.
// Usage: npx tsx scripts/import-publicsurplus-free.ts [limit]

import { fetchPublicSurplusFree } from "../src/importers/publicsurplus-free";
import { ingestMany } from "../src/importers/ingest";
import { prisma } from "../src/lib/db";

async function main() {
  const limit = Number(process.argv[2] || 100);
  console.log(
    `[${new Date().toISOString()}] Fetching ${limit} Public Surplus listings via /sms/browse/cataucs HTML (FREE)…`,
  );
  const rows = await fetchPublicSurplusFree({ limit });
  console.log(`Fetched ${rows.length}. Ingesting…`);
  const results = await ingestMany(rows, { useAI: false });
  const created = results.filter((r) => r.ok && r.created).length;
  const updated = results.filter((r) => r.ok && !r.created).length;
  const failed = results.filter((r) => !r.ok).length;
  console.log(
    `Done: ${created} created, ${updated} updated, ${failed} failed. Cost: $0.`,
  );
  await prisma.$disconnect();
}

main().catch(async (e) => {
  console.error("[import-publicsurplus-free] ERROR:", e.message);
  await prisma.$disconnect();
  process.exit(1);
});