Add 13 new Fandom wiki sources and integration tests

Expand franchise wiki mappings to cover Uma Musume, Fire Emblem,
Senran Kagura, Vocaloid, Dragon Ball, League of Legends, Street Fighter,
Sonic, Spy x Family, Zelda, The Witcher, Metroid, and Pokemon. Also
expand Final Fantasy aliases to cover all numbered titles I–XVI with
both arabic and roman numeral variants.

Adds parametrized integration tests that verify each wiki endpoint
returns valid CharacterData with a description and Fandom source URL.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Aodhan Collins
2026-03-19 21:41:53 +00:00
parent a4d95fac8a
commit d4d6788d26
5 changed files with 172 additions and 9 deletions

View File

@@ -25,15 +25,102 @@ HEADERS = {
# Map franchise keywords -> Fandom community subdomain
FRANCHISE_WIKIS: dict[str, str] = {
"final fantasy": "finalfantasy",
"final fantasy i": "finalfantasy",
"final fantasy 1": "finalfantasy",
"ffi": "finalfantasy",
"ff1": "finalfantasy",
"final fantasy ii": "finalfantasy",
"final fantasy 2": "finalfantasy",
"ffii": "finalfantasy",
"ff2": "finalfantasy",
"final fantasy iii": "finalfantasy",
"final fantasy 3": "finalfantasy",
"ffiii": "finalfantasy",
"ff3": "finalfantasy",
"final fantasy iv": "finalfantasy",
"final fantasy 4": "finalfantasy",
"ffiv": "finalfantasy",
"ff4": "finalfantasy",
"final fantasy v": "finalfantasy",
"final fantasy 5": "finalfantasy",
"ffv": "finalfantasy",
"ff5": "finalfantasy",
"final fantasy vi": "finalfantasy",
"final fantasy 6": "finalfantasy",
"ffvi": "finalfantasy",
"ff6": "finalfantasy",
"final fantasy vii": "finalfantasy",
"final fantasy 7": "finalfantasy",
"ff7": "finalfantasy",
"ffvii": "finalfantasy",
"final fantasy": "finalfantasy",
"ff7": "finalfantasy",
"final fantasy viii": "finalfantasy",
"final fantasy 8": "finalfantasy",
"ffviii": "finalfantasy",
"ff8": "finalfantasy",
"final fantasy ix": "finalfantasy",
"final fantasy 9": "finalfantasy",
"ffix": "finalfantasy",
"ff9": "finalfantasy",
"final fantasy x": "finalfantasy",
"final fantasy 10": "finalfantasy",
"ffx": "finalfantasy",
"ff10": "finalfantasy",
"final fantasy xi": "finalfantasy",
"final fantasy 11": "finalfantasy",
"ffxi": "finalfantasy",
"ff11": "finalfantasy",
"final fantasy xii": "finalfantasy",
"final fantasy 12": "finalfantasy",
"ffxii": "finalfantasy",
"ff12": "finalfantasy",
"final fantasy xiii": "finalfantasy",
"final fantasy 13": "finalfantasy",
"ffxiii": "finalfantasy",
"ff13": "finalfantasy",
"final fantasy xiv": "finalfantasy",
"final fantasy 14": "finalfantasy",
"ffxiv": "finalfantasy",
"ff14": "finalfantasy",
"final fantasy xv": "finalfantasy",
"final fantasy 15": "finalfantasy",
"ffxv": "finalfantasy",
"ff15": "finalfantasy",
"final fantasy xvi": "finalfantasy",
"final fantasy 16": "finalfantasy",
"ffxvi": "finalfantasy",
"ff16": "finalfantasy",
"super mario": "mario",
"mario": "mario",
"little witch academia": "little-witch-academia",
"lwa": "little-witch-academia",
"uma musume": "umamusume",
"umamusume": "umamusume",
"uma musume pretty derby": "umamusume",
"fire emblem": "fireemblem",
"senran kagura": "senrankagura",
"vocaloid": "vocaloid",
"dragon ball": "dragonball",
"dragon ball z": "dragonball",
"dbz": "dragonball",
"dragon ball super": "dragonball",
"dbs": "dragonball",
"league of legends": "leagueoflegends",
"lol": "leagueoflegends",
"street fighter": "streetfighter",
"sonic": "sonic",
"sonic the hedgehog": "sonic",
"spy x family": "spy-x-family",
"spy family": "spy-x-family",
"spyxfamily": "spy-x-family",
"zelda": "zelda",
"the legend of zelda": "zelda",
"legend of zelda": "zelda",
"witcher": "witcher",
"the witcher": "witcher",
"metroid": "metroid",
"pokemon": "pokemon",
"pokémon": "pokemon",
}
# Section title keywords -> model field