Add Python tool scaffold for PokeDB data import
Set up tools/import-pokedb/ with CLI, JSON loader, and output models. Replaces the Go/PokeAPI approach with local PokeDB.org JSON processing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,17 +1,22 @@
|
||||
---
|
||||
# nuzlocke-tracker-bs05
|
||||
title: Build PokeDB.org data import tool
|
||||
status: draft
|
||||
type: task
|
||||
status: in-progress
|
||||
type: feature
|
||||
priority: normal
|
||||
created_at: 2026-02-10T14:04:11Z
|
||||
updated_at: 2026-02-10T14:31:08Z
|
||||
updated_at: 2026-02-11T08:44:03Z
|
||||
parent: nuzlocke-tracker-rzu4
|
||||
blocking:
|
||||
- nuzlocke-tracker-spx3
|
||||
---
|
||||
|
||||
Build a Go tool that converts PokeDB.org's JSON data export into our existing seed JSON format. This replaces PokeAPI as the single source of truth for ALL games (Gen 1-9).
|
||||
Build a standalone Python tool that converts PokeDB.org's JSON data export into our existing seed JSON format. This replaces PokeAPI as the single source of truth for ALL games (Gen 1-9).
|
||||
|
||||
Python was chosen over Go because:
|
||||
- The backend is already Python, so the team is familiar with it
|
||||
- We're processing local JSON files — no need for Go's concurrency
|
||||
- Remains a standalone tool in `tools/import-pokedb/`, not part of the backend
|
||||
|
||||
## Data source
|
||||
|
||||
@@ -64,26 +69,15 @@ Each encounter record has:
|
||||
- `visible` — overworld vs hidden encounter
|
||||
- Max Raid and Tera Raid fields for special encounters
|
||||
|
||||
## Implementation approach
|
||||
## Subtasks
|
||||
|
||||
### Checklist
|
||||
- [ ] Set up project structure in `tools/import-pokedb/`
|
||||
- [ ] Download and cache PokeDB JSON export files
|
||||
- [ ] Parse PokeDB encounters, locations, location_areas, versions, pokemon_forms
|
||||
- [ ] Build lookup maps: pokemon_form_identifier → pokeapi_id (using existing `pokemon.json`)
|
||||
- [ ] Build lookup maps: location_area_identifier → location name + region
|
||||
- [ ] Filter encounters by target game version
|
||||
- [ ] Map PokeDB encounter methods to our seed format methods (73 → simplified set)
|
||||
- [ ] Parse level strings ("2 - 4" → min_level: 2, max_level: 4)
|
||||
- [ ] Handle rate variants per game generation:
|
||||
- For now, flatten time/weather/season rates into `encounter_rate` (use the max or average)
|
||||
- Preserve raw variant data for future use (see nuzlocke-tracker-oqfo)
|
||||
- [ ] Group encounters by location area → route output
|
||||
- [ ] Apply route ordering (use existing route_order.json or generate from location data)
|
||||
- [ ] Output in existing `{game}.json` seed format
|
||||
- [ ] Generate seed data for ALL games, replacing PokeAPI as the single source of truth
|
||||
- [ ] Compare output against existing PokeAPI-sourced data to validate accuracy
|
||||
- [ ] Run for all games and verify output
|
||||
Work is broken into child task beans:
|
||||
|
||||
- [ ] **Set up Python tool scaffold** — project structure, CLI entry point, PokeDB JSON file loading
|
||||
- [ ] **Build reference data mappings** — pokemon_form → pokeapi_id, location_area → name/region, encounter method mapping
|
||||
- [ ] **Core encounter processing** — filter by game version, parse levels, handle rate variants, group by location area
|
||||
- [ ] **Output seed JSON** — produce per-game JSON in existing format, integrate route ordering + special encounters
|
||||
- [ ] **Validation & full generation** — compare against existing data, run for all games, fix discrepancies
|
||||
|
||||
## Encounter method mapping (draft)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user