import type { ConnectorMeta } from '@rareindex/connectors'; import { PriceChartingLikeConnector, parseProductPage as parsePage, type SiteOptions } from '../_lib/pc-core.js'; /** * SportsCardsPro connector (PriceCharting's sports-card site): per-set product pages with guide * values per grade and eBay completed sales per grade tab (Ungraded, Grade 1–9.5, PSA/BGS/CGC/SGC 10). * Plain HTTP receives a Cloudflare interstitial, so pages are fetched through Firecrawl (robots.txt * allows everything except /buy, /publish-offer, /stripe-connect). Same parser as PriceCharting. */ const BASE = 'https://www.sportscardspro.com'; export class SportsCardsProConnector extends PriceChartingLikeConnector { protected readonly siteOptions: SiteOptions = { base: BASE, site: 'sportscardspro', categoryPrefix: (cat) => `${cat}-`, // "basketball-cards" → consoles "basketball-cards-1986-fleer" }; override readonly urlPatterns = [/^https?:\/\/(www\.)?sportscardspro\.com\/game\/[^/]+\/[^/?#]+/i]; protected override minIntervalMs = 1200; } export default (meta: ConnectorMeta) => new SportsCardsProConnector(meta); export const parseProductPage = (html: string, url: string) => parsePage(html, url, 'sportscardspro');