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