Validate and regenerate all seed data from PokeDB
- Regenerate seed JSON for all 37 games with more complete PokeDB data
- Add category field to games.json (original/enhanced/remake/sequel/spinoff)
- Include all 1350 pokemon in pokemon.json with types and local sprites
- Build reverse index for PokeDB form lookups (types/sprites for evolutions)
- Move sprites to frontend/public/sprites, reference as /sprites/{id}.webp
- Truncate Sw/Sh den names to fit DB VARCHAR(100) limit
- Deduplicate route names and merge unnamed child areas into parent routes
- Populate 7 previously empty games (Sw/Sh, BDSP, PLA, Sc/Vi)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -20,13 +20,18 @@ from .loader import load_pokedb_data, load_seed_config
|
||||
from .mappings import PokemonMapper, LocationMapper, build_version_map, map_encounter_method
|
||||
from .output import sort_routes, merge_special_encounters, write_game_json, write_games_json, write_pokemon_json
|
||||
from .processing import filter_encounters_for_game, process_encounters, build_routes
|
||||
from .sprites import download_sprites
|
||||
from .sprites import download_all_sprites, download_sprites
|
||||
|
||||
SEEDS_DIR_CANDIDATES = [
|
||||
Path("backend/src/app/seeds"), # from repo root
|
||||
Path("../../backend/src/app/seeds"), # from tools/import-pokedb/
|
||||
]
|
||||
|
||||
SPRITES_DIR_CANDIDATES = [
|
||||
Path("frontend/public/sprites"), # from repo root
|
||||
Path("../../frontend/public/sprites"), # from tools/import-pokedb/
|
||||
]
|
||||
|
||||
|
||||
def find_seeds_dir() -> Path:
|
||||
"""Locate the backend seeds directory."""
|
||||
@@ -37,6 +42,15 @@ def find_seeds_dir() -> Path:
|
||||
return Path("backend/src/app/seeds").resolve()
|
||||
|
||||
|
||||
def find_sprites_dir() -> Path:
|
||||
"""Locate the frontend sprites directory."""
|
||||
for candidate in SPRITES_DIR_CANDIDATES:
|
||||
if candidate.parent.exists():
|
||||
return candidate.resolve()
|
||||
# Fallback
|
||||
return Path("frontend/public/sprites").resolve()
|
||||
|
||||
|
||||
def build_parser() -> argparse.ArgumentParser:
|
||||
parser = argparse.ArgumentParser(
|
||||
prog="import-pokedb",
|
||||
@@ -204,12 +218,15 @@ def main(argv: list[str] | None = None) -> None:
|
||||
# Write per-game JSON
|
||||
write_game_json(routes, output_dir, game_slug)
|
||||
|
||||
# Download sprites for all encountered pokemon
|
||||
print("\nDownloading sprites...")
|
||||
sprites_dir = output_dir / "sprites"
|
||||
# Download sprites to frontend/public/sprites
|
||||
sprites_dir = find_sprites_dir()
|
||||
print(f"\nDownloading sprites to {sprites_dir}...")
|
||||
sprite_map = download_sprites(pokemon_mapper, all_encountered_form_ids, sprites_dir)
|
||||
print(f" Sprite map covers {len(sprite_map)} forms")
|
||||
|
||||
# Download sprites for ALL pokemon (including non-encountered evolutions etc.)
|
||||
all_sprite_ids = download_all_sprites(pokemon_mapper, sprites_dir)
|
||||
|
||||
# Write global JSON files
|
||||
print("\nWriting global data files...")
|
||||
write_games_json(config, output_dir)
|
||||
|
||||
Reference in New Issue
Block a user