From bbb6aca967eec716784804c992b731c604f847ef Mon Sep 17 00:00:00 2001
From: Chase Manning <chase@manning.dev>
Date: Sat, 16 Sep 2023 18:20:22 +0100
Subject: [PATCH] :sparkles: add script to get evolutions
---
scripts/get-evolutions.js | 60 +++++++++++++++++++++++++++++++++++++++
1 file changed, 60 insertions(+)
create mode 100644 scripts/get-evolutions.js
diff --git a/scripts/get-evolutions.js b/scripts/get-evolutions.js
new file mode 100644
index 0000000..5f9ce1f
--- /dev/null
+++ b/scripts/get-evolutions.js
@@ -0,0 +1,60 @@
+const pokemon = require("./pokemon.json");
+const fs = require("fs");
+
+const BASE_URL = "https://pokeapi.co/api/v2/evolution-chain/";
+
+function getPokemonId(name) {
+ for (let i = 0; i < pokemon.length; i++) {
+ if (pokemon[i].name === name) return i + 1;
+ }
+ return null;
+}
+
+const downloadData = async () => {
+ // Read data
+ const output = JSON.parse(fs.readFileSync("data.json"));
+
+ for (let i = 1; i < 150; i++) {
+ console.log("Downloading", i);
+ const response = await fetch(`${BASE_URL}${i}`);
+ const data = await response.json();
+ const pokemonName = data.chain.species.name;
+ console.log(pokemonName);
+
+ const evolvesTo = data.chain.evolves_to.find(
+ (e) => e.evolution_details[0].trigger.name === "level-up"
+ );
+ if (!evolvesTo) continue;
+ const evolution = {
+ pokemon: getPokemonId(evolvesTo.species.name),
+ level: evolvesTo.evolution_details[0].min_level,
+ };
+ const pokemonId = getPokemonId(pokemonName);
+ if (pokemonId && evolution.pokemon) {
+ output[pokemonId].evolution = evolution;
+ }
+ const evolvesTo2 = evolvesTo.evolves_to.find(
+ (e) => e.evolution_details[0].trigger.name === "level-up"
+ );
+ console.log(evolvesTo2);
+ if (!evolvesTo2) continue;
+ console.log(evolvesTo2);
+ const evolution2 = {
+ pokemon: getPokemonId(evolvesTo2.species.name),
+ level: evolvesTo2.evolution_details[0].min_level,
+ };
+ console.log(evolution2);
+
+ if (evolution.pokemon && evolution2.pokemon) {
+ output[evolution.pokemon].evolution = evolution2;
+ }
+
+ console.log(`Downloaded ${i}`);
+ // wait one second
+ await new Promise((resolve) => setTimeout(resolve, 1000));
+ }
+
+ fs.writeFileSync("data.json", JSON.stringify(output));
+};
+
+downloadData();