Skip to main content

CLI and web app to look up Pokemon cards across open data sources, fetch images and prices, and emit an .xlsx, PDF binder, set-completion checklist, and JSON report for card-show prep.

Project description

mgz-pkmn

CI Python 3.11+

🌐 Project site: https://mgz-pkmn.com · 🚀 Live demo: https://mgz-pkmn.onrender.com

A toolkit for prepping Pokemon card binders for a card show: take a list of cards, look each one up across three open data sources, download images, and write an .xlsx with embedded thumbnails, current market price, and 80 / 85 / 90 / 95 % negotiation comps. Optional PDF binder, condensed binder, set-completion checklist, and JSON report alongside.

Two ways to drive it:

  • CLI./pkmn lookup cards.txt produces xlsx + (optional) PDF + JSON; ./pkmn set-cards emits printable set ID cutouts.
  • Web UI — FastAPI backend in api/ and a React + Vite frontend in web/ put the same pipeline behind a live in-browser interface with streaming results and one-click export.

The tool tries sources in this order:

  1. pokemontcg.io — primary. Best coverage of English / international English releases, with TCGPlayer (USD) + Cardmarket (EUR) prices.
  2. TCGdex — multilingual fallback (en, ja, ko, zh-tw, zh-cn, de, fr, es, it, pt, …). Has Cardmarket prices for many cards.
  3. PriceCharting — opt-in via an explicit URL on the line. Ideal for region-exclusive products neither aggregator indexes (Chinese Gem Pack, etc.). Returns USD loose / new / graded prices.

Install

Requires Python 3.11+ and uv.

brew install uv                                   # macOS
curl -LsSf https://astral.sh/uv/install.sh | sh   # any platform

make install-cli          # CLI only — fastest
# or
make install              # CLI + API + web + pre-commit hook

Run make help for the full target list.

Quickstart

./pkmn lookup input/ --no-images \
  -o output/cards.xlsx \
  --pdf output/binder.pdf \
  --condensed-pdf output/binder-condensed.pdf \
  --checklist output/checklist.pdf \
  --report-json output/summary.json

./pkmn set-cards -o output/set-cards.pdf   # printable set ID cutouts (no input needed)

The bundled input/ directory ships four small example lists that exercise every input syntax and lookup mode the tool supports — including example-url-overrides.txt, which walks through the "paste a PriceCharting URL once and forget it" workflow. The tracked files in output/ were generated by exactly the command above. See the CLI reference for the full breakdown.

API key (optional but recommended)

The pokemontcg.io API works without a key (~1000 requests/day, 30/min) but a free key raises that to 20k/day. Grab one at https://dev.pokemontcg.io, then set it as an env var:

export POKEMONTCG_IO_API_KEY=your-key-here          # current shell
echo 'export POKEMONTCG_IO_API_KEY=your-key-here' >> ~/.zshrc   # persistent

Prefer the env var over --api-key — flags get saved to shell history.

Web UI

make install         # one-time setup
make dev-api         # Terminal 1 — API on :8000
make dev-web         # Terminal 2 — Vite dev server on :5173

Open http://localhost:5173. The Vite dev server proxies /api/* to the FastAPI server. Swagger UI lives at http://localhost:8000/docs.

Prefer not to install anything? The same UI is hosted at https://mgz-pkmn.onrender.com.

For deeper docs (endpoint reference, troubleshooting, architecture), see api/README.md and web/README.md.

License

Released under the MIT License.

Documentation

Reference docs live under docs/ and are mirrored to the GitHub Wiki on every push to main.

Topic Page
Every flag and pkmn invocation pattern CLI reference
Single-card + bulk top:N / All … syntax Input format
pokemontcg.io / TCGdex / PriceCharting layering Sources & coverage
Non-English / regional handling Languages
Spreadsheet + JSON report shape Outputs
Standard 3×3 + condensed 6×4 layouts PDF binder
Front-of-binder set checklist Checklist PDF
Disk cache + URL overrides Cache
Render / Docker / production recipe Deployment
Marketing site (Astro + Tailwind, Cloudflare Pages) site/README.md
Project layout, dev workflow, CI, release Contributing

Community

Questions, ideas, or want to share what you built? Open a thread in GitHub Discussions.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mgz_pkmn-1.0.1.tar.gz (713.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mgz_pkmn-1.0.1-py3-none-any.whl (64.6 kB view details)

Uploaded Python 3

File details

Details for the file mgz_pkmn-1.0.1.tar.gz.

File metadata

  • Download URL: mgz_pkmn-1.0.1.tar.gz
  • Upload date:
  • Size: 713.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mgz_pkmn-1.0.1.tar.gz
Algorithm Hash digest
SHA256 59769a990ac444db8d2ee14b41618eaaa22b40fe24bf73d1553e5508bb6983c9
MD5 2bea3be7136a22e667027ff0c82b3413
BLAKE2b-256 c34b38407f848a79939da9b72d9fca6b35378924bc3a385b8b78839605844622

See more details on using hashes here.

File details

Details for the file mgz_pkmn-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: mgz_pkmn-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 64.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mgz_pkmn-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4834f972d2dc21a94fb181111ffbf4c67ed9972ebfbf122bfea8abf71d3a20e3
MD5 b799dfed08325b0ee88d6e42813fdd96
BLAKE2b-256 b0302ce40e984bfb42df7c7c2c3cb0fdfe7ab769295267c6230a750a069c6a07

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page