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%
3.3 KB · 48 lines markdown
Rendered Raw Blame History
1# KanZen Games connector (`kanzen-games`)23- Source: https://www.kanzengames.com · dealer · CA · CAD · Shopify storefront4- Acquisition: public `/collections/<handle>/products.json?limit=250&page=N` (shared `ShopifyStoreConnector` adapter wrapped by `MarketPinnedShopifyConnector`, which adds a `localization=CA` cookie so Shopify Markets never geo-converts prices; no store-specific code)5- Records: `listing` (asking prices, one per variant; out-of-stock variants → `ended`)6- Refresh: every 12 h (ACTIVE→NORMAL boundary, large catalogue) · history: none (listings only)78Toronto TCG shop with a dedicated PSA "slabs" collection (Japanese Pokémon heavy), Lorcana/Gundam/Digimon singles and sealed product.910## Collections → taxonomy11| collection handle | category | brand / franchise / series |12|---|---|---|13| `slabs` | `pokemon` | Pokémon |14| `graded-card-in-stock` | `pokemon` | Pokémon |15| `ebay-pokemon-singles` | `pokemon` | Pokémon |16| `pokemon-tcg-mega-evolution` | `pokemon` | Pokémon |17| `japanese-sealed` | `pokemon` | Pokémon |18| `magic-the-gathering` | `magic_the_gathering` | Magic: The Gathering |19| `disney-lorcana-singles-1` | `disney_lorcana` | Disney Lorcana |20| `gundam-singles-all` | `other_tcg` | Gundam Card Game |21| `digimon-single` | `digimon_tcg` | Digimon |22| `digimon-sealed` | `digimon_tcg` | Digimon |23| `one-piece-tcg-singles-all` | `one_piece_card_game` | One Piece |24| `dragon-ball-tcg` | `dragon_ball_tcg` | Dragon Ball Super |25| `hololive-tcg-sealed` | `other_tcg` | hololive |26| `football-sealed` | `football_cards` | — |27| `basketball-sealed-all` | `basketball_cards` | — |2829Rules (first match wins, applied to "title | product_type | tags | collection"):30- `\bone piece\b|\bOP\d{2}\b` → `one_piece_card_game` (franchise One Piece)31- `\bmagic\b|\bmtg\b` → `magic_the_gathering` (franchise Magic: The Gathering)32- `yu-?gi-?oh` → `yugioh` (franchise Yu-Gi-Oh!)33- `\blorcana\b` → `disney_lorcana` (franchise Disney Lorcana)34- `\bdigimon\b` → `digimon_tcg` (franchise Digimon)35- `\bdragon ball\b` → `dragon_ball_tcg` (franchise Dragon Ball Super)36- `\bweiss\b` → `weiss_schwarz` (franchise Weiß Schwarz)3738Excluded (regex): `gift card|sleeves?|deck box|binder|playmat|toploader|top loader|storage box|dice|tokens? only|bundle of|mystery|buylist|submission|event ticket|\bentry\b|tournament|store credit|pre-?release event|supplies|card savers?|\brepack|bulk lot|\blot of\b|\bpaints?\b|primer|brushes|online (pack|code)|digital code|code card|unused digital|ptcgo|ptcg live`3940Title pattern: `^(?:PSA|BGS|CGC|TAG|ACE|SGC)\s*[\d.]+\s*-\s*(?<name>.+?)\s*-\s*(?<set>.+?)\s*-\s*#(?<number>\S+)` (name / set / number)4142## Access & compliance43See `accessNotes` in meta.json: robots.txt verified 2026-09-08 (standard Shopify rules, products.json paths allowed), honest UA, 1 req / 1.5 s, listings only, no personal data. Not fetched: deck-box/sleeve/binder collections, "all products" umbrella collections, tournament entries.4445## Fixtures & tests46`data/fixtures/kanzen-games/` — live captures (`pnpm tsx connectors/api/_g3-shops-na-lib/capture.ts kanzen-games`), trimmed single-product payloads incl. a sold-out variant and a graded item.47`pnpm vitest run connectors/api/kanzen-games` · live probe: `pnpm tsx connectors/api/_g3-shops-na-lib/probe.ts kanzen-games`.48