Pārlūkot izejas kodu

fix gender diffs in showdown names

Kirk Trombley 2 gadi atpakaļ
vecāks
revīzija
9226d78e25
1 mainītis faili ar 17 papildinājumiem un 9 dzēšanām
  1. 17 9
      tools/download.py

+ 17 - 9
tools/download.py

@@ -191,16 +191,24 @@ async def load_pokedex(dex_file: str) -> dict:
   return dex
 
 
+SHOWDOWN_REPLACEMENTS = [
+  ("mega-", "mega"),  # charizard, mewtwo
+  ("paldea-", "paldea"),  # tauros
+  ("mr. ", "mr"),  # mr mime + mr rime
+  ("'d", "d"),  # farfetch'd and sirfetch'd
+  ("nidoran-m", "nidoranm"),  # nidoran is a special case
+  ("-f", "f"),  # gender diff forms
+  (re.compile(r"-m$"), ""),  # gender diff forms
+]
+
+
 def get_showdown_urls(form: Form) -> list[tuple[str, str]]:
-  name = form.name.lower().replace(
-    "mega-", "mega"  # charizard, mewtwo
-  ).replace(
-    "paldea-", "paldea"  # tauros
-  ).replace(
-    "mr. ", "mr"  # mr mime + mr rime
-  ).replace(
-    "'d", "d"  # farfetch'd and sirfetch'd
-  )
+  name = form.name.lower()
+  for pat, ins in SHOWDOWN_REPLACEMENTS:
+    if isinstance(pat, re.Pattern):
+      name = re.sub(pat, ins, name)
+    else:
+      name = name.replace(pat, ins)
   return [
     (f"https://play.pokemonshowdown.com/sprites/ani/{name}.gif", "gif"),
     (f"https://play.pokemonshowdown.com/sprites/ani-back/{name}.gif", "gif"),