Download badge and boss sprite images locally during export
The seed export command now downloads badge images and boss sprites from remote URLs and stores them in frontend/public/, rewriting the JSON URLs to local paths. Sprites are namespaced by game version (e.g. /boss-sprites/red/brock.png) so each generation can have its own sprite style. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -4,13 +4,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "flying",
|
||||
"badge_name": "Zephyr Badge",
|
||||
"badge_image_url": "https://archives.bulbagarden.net/media/upload/thumb/4/4a/Zephyr_Badge.png/35px-Zephyr_Badge.png",
|
||||
"badge_image_url": "/badges/zephyr-badge.png",
|
||||
"level_cap": 9,
|
||||
"order": 1,
|
||||
"after_route_name": "Violet City",
|
||||
"location": "Violet Gym",
|
||||
"section": "Main Story",
|
||||
"sprite_url": "https://archives.bulbagarden.net/media/upload/thumb/4/4a/Zephyr_Badge.png/35px-Zephyr_Badge.png",
|
||||
"sprite_url": "/boss-sprites/gold/falkner.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -18,13 +18,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "bug",
|
||||
"badge_name": "Hive Badge",
|
||||
"badge_image_url": "https://github.com/PokeAPI/sprites/blob/master/sprites/badges/10.png?raw=true",
|
||||
"badge_image_url": "/badges/hive-badge.png",
|
||||
"level_cap": 16,
|
||||
"order": 2,
|
||||
"after_route_name": "Slowpoke Well",
|
||||
"location": "Azalea Gym",
|
||||
"section": "Main Story",
|
||||
"sprite_url": "https://github.com/PokeAPI/sprites/blob/master/sprites/badges/10.png?raw=true",
|
||||
"sprite_url": "/boss-sprites/gold/bugsy.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -32,13 +32,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "normal",
|
||||
"badge_name": "Plain Badge",
|
||||
"badge_image_url": "https://github.com/PokeAPI/sprites/blob/master/sprites/badges/11.png?raw=true",
|
||||
"badge_image_url": "/badges/plain-badge.png",
|
||||
"level_cap": 20,
|
||||
"order": 3,
|
||||
"after_route_name": "Goldenrod City",
|
||||
"location": "Goldenrod Gym",
|
||||
"section": "Main Story",
|
||||
"sprite_url": "https://github.com/PokeAPI/sprites/blob/master/sprites/badges/11.png?raw=true",
|
||||
"sprite_url": "/boss-sprites/gold/whitney.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -46,13 +46,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "ghost",
|
||||
"badge_name": "Fog Badge",
|
||||
"badge_image_url": "https://github.com/PokeAPI/sprites/blob/master/sprites/badges/12.png?raw=true",
|
||||
"badge_image_url": "/badges/fog-badge.png",
|
||||
"level_cap": 25,
|
||||
"order": 4,
|
||||
"after_route_name": null,
|
||||
"location": "Ecruteak Gym",
|
||||
"section": "Main Story",
|
||||
"sprite_url": "https://github.com/PokeAPI/sprites/blob/master/sprites/badges/12.png?raw=true",
|
||||
"sprite_url": "/boss-sprites/gold/morty.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -60,13 +60,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "fighting",
|
||||
"badge_name": "Storm Badge",
|
||||
"badge_image_url": "https://github.com/PokeAPI/sprites/blob/master/sprites/badges/13.png?raw=true",
|
||||
"badge_image_url": "/badges/storm-badge.png",
|
||||
"level_cap": 30,
|
||||
"order": 5,
|
||||
"after_route_name": "Cianwood City",
|
||||
"location": "Cianwood Gym",
|
||||
"section": "Main Story",
|
||||
"sprite_url": "https://github.com/PokeAPI/sprites/blob/master/sprites/badges/13.png?raw=true",
|
||||
"sprite_url": "/boss-sprites/gold/chuck.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -74,13 +74,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "steel",
|
||||
"badge_name": "Mineral Badge",
|
||||
"badge_image_url": "https://github.com/PokeAPI/sprites/blob/master/sprites/badges/14.png?raw=true",
|
||||
"badge_image_url": "/badges/mineral-badge.png",
|
||||
"level_cap": 35,
|
||||
"order": 6,
|
||||
"after_route_name": "Cianwood City",
|
||||
"location": "Olivine Gym",
|
||||
"section": "Main Story",
|
||||
"sprite_url": "https://github.com/PokeAPI/sprites/blob/master/sprites/badges/14.png?raw=true",
|
||||
"sprite_url": "/boss-sprites/gold/jasmine.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -88,13 +88,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "ice",
|
||||
"badge_name": "Glacier Badge",
|
||||
"badge_image_url": "https://github.com/PokeAPI/sprites/blob/master/sprites/badges/15.png?raw=true",
|
||||
"badge_image_url": "/badges/glacier-badge.png",
|
||||
"level_cap": 31,
|
||||
"order": 7,
|
||||
"after_route_name": "Lake Of Rage",
|
||||
"location": "Mahogany Gym",
|
||||
"section": "Main Story",
|
||||
"sprite_url": "https://github.com/PokeAPI/sprites/blob/master/sprites/badges/15.png?raw=true",
|
||||
"sprite_url": "/boss-sprites/gold/pryce.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -102,13 +102,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "dragon",
|
||||
"badge_name": "Rising Badge",
|
||||
"badge_image_url": "https://archives.bulbagarden.net/media/upload/thumb/5/58/Rising_Badge.png/35px-Rising_Badge.png",
|
||||
"badge_image_url": "/badges/rising-badge.png",
|
||||
"level_cap": 40,
|
||||
"order": 8,
|
||||
"after_route_name": "Blackthorn City",
|
||||
"location": "Blackthorn Gym",
|
||||
"section": "Main Story",
|
||||
"sprite_url": "https://archives.bulbagarden.net/media/upload/thumb/5/58/Rising_Badge.png/35px-Rising_Badge.png",
|
||||
"sprite_url": "/boss-sprites/gold/clair.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -186,13 +186,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "electric",
|
||||
"badge_name": "Thunder Badge",
|
||||
"badge_image_url": "https://archives.bulbagarden.net/media/upload/thumb/a/a6/Thunder_Badge.png/35px-Thunder_Badge.png",
|
||||
"badge_image_url": "/badges/thunder-badge.png",
|
||||
"level_cap": 46,
|
||||
"order": 14,
|
||||
"after_route_name": "Vermilion City",
|
||||
"location": "Vermilion Gym",
|
||||
"section": "Endgame",
|
||||
"sprite_url": "https://archives.bulbagarden.net/media/upload/thumb/a/a6/Thunder_Badge.png/35px-Thunder_Badge.png",
|
||||
"sprite_url": "/boss-sprites/gold/lt-surge.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -200,13 +200,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "psychic",
|
||||
"badge_name": "Marsh Badge",
|
||||
"badge_image_url": "https://archives.bulbagarden.net/media/upload/thumb/6/6b/Marsh_Badge.png/35px-Marsh_Badge.png",
|
||||
"badge_image_url": "/badges/marsh-badge.png",
|
||||
"level_cap": 48,
|
||||
"order": 15,
|
||||
"after_route_name": "Route 6",
|
||||
"location": "Saffron Gym",
|
||||
"section": "Endgame",
|
||||
"sprite_url": "https://archives.bulbagarden.net/media/upload/thumb/6/6b/Marsh_Badge.png/35px-Marsh_Badge.png",
|
||||
"sprite_url": "/boss-sprites/gold/sabrina.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -214,13 +214,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "water",
|
||||
"badge_name": "Cascade Badge",
|
||||
"badge_image_url": "https://archives.bulbagarden.net/media/upload/thumb/9/9c/Cascade_Badge.png/35px-Cascade_Badge.png",
|
||||
"badge_image_url": "/badges/cascade-badge.png",
|
||||
"level_cap": 47,
|
||||
"order": 16,
|
||||
"after_route_name": "Cerulean City",
|
||||
"location": "Cerulean Gym",
|
||||
"section": "Endgame",
|
||||
"sprite_url": "https://archives.bulbagarden.net/media/upload/thumb/9/9c/Cascade_Badge.png/35px-Cascade_Badge.png",
|
||||
"sprite_url": "/boss-sprites/gold/misty.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -228,13 +228,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "grass",
|
||||
"badge_name": "Rainbow Badge",
|
||||
"badge_image_url": "https://archives.bulbagarden.net/media/upload/thumb/b/b5/Rainbow_Badge.png/35px-Rainbow_Badge.png",
|
||||
"badge_image_url": "/badges/rainbow-badge.png",
|
||||
"level_cap": 46,
|
||||
"order": 17,
|
||||
"after_route_name": "Route 7",
|
||||
"location": "Celadon Gym",
|
||||
"section": "Endgame",
|
||||
"sprite_url": "https://archives.bulbagarden.net/media/upload/thumb/b/b5/Rainbow_Badge.png/35px-Rainbow_Badge.png",
|
||||
"sprite_url": "/boss-sprites/gold/erika.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -242,13 +242,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "poison",
|
||||
"badge_name": "Soul Badge",
|
||||
"badge_image_url": "https://archives.bulbagarden.net/media/upload/thumb/7/7d/Soul_Badge.png/35px-Soul_Badge.png",
|
||||
"badge_image_url": "/badges/soul-badge.png",
|
||||
"level_cap": 39,
|
||||
"order": 18,
|
||||
"after_route_name": "Fuchsia City",
|
||||
"location": "Fuchsia Gym",
|
||||
"section": "Endgame",
|
||||
"sprite_url": "https://archives.bulbagarden.net/media/upload/thumb/7/7d/Soul_Badge.png/35px-Soul_Badge.png",
|
||||
"sprite_url": "/boss-sprites/gold/janine.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -256,13 +256,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "rock",
|
||||
"badge_name": "Boulder Badge",
|
||||
"badge_image_url": "https://archives.bulbagarden.net/media/upload/thumb/d/dd/Boulder_Badge.png/35px-Boulder_Badge.png",
|
||||
"badge_image_url": "/badges/boulder-badge.png",
|
||||
"level_cap": 44,
|
||||
"order": 19,
|
||||
"after_route_name": "Pewter City",
|
||||
"location": "Pewter Gym",
|
||||
"section": "Endgame",
|
||||
"sprite_url": "https://archives.bulbagarden.net/media/upload/thumb/d/dd/Boulder_Badge.png/35px-Boulder_Badge.png",
|
||||
"sprite_url": "/boss-sprites/gold/brock.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -270,13 +270,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "fire",
|
||||
"badge_name": "Volcano Badge",
|
||||
"badge_image_url": "https://archives.bulbagarden.net/media/upload/thumb/1/12/Volcano_Badge.png/35px-Volcano_Badge.png",
|
||||
"badge_image_url": "/badges/volcano-badge.png",
|
||||
"level_cap": 50,
|
||||
"order": 20,
|
||||
"after_route_name": "Cinnabar Island",
|
||||
"location": "Cinnabar Gym",
|
||||
"section": "Endgame",
|
||||
"sprite_url": "https://archives.bulbagarden.net/media/upload/thumb/1/12/Volcano_Badge.png/35px-Volcano_Badge.png",
|
||||
"sprite_url": "/boss-sprites/gold/blaine.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -284,13 +284,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": null,
|
||||
"badge_name": "Earth Badge",
|
||||
"badge_image_url": "https://archives.bulbagarden.net/media/upload/thumb/7/78/Earth_Badge.png/35px-Earth_Badge.png",
|
||||
"badge_image_url": "/badges/earth-badge.png",
|
||||
"level_cap": 58,
|
||||
"order": 21,
|
||||
"after_route_name": null,
|
||||
"location": "Viridian Gym",
|
||||
"section": "Endgame",
|
||||
"sprite_url": "https://archives.bulbagarden.net/media/upload/thumb/7/78/Earth_Badge.png/35px-Earth_Badge.png",
|
||||
"sprite_url": "/boss-sprites/gold/blue.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user