const pokemon = require("./pokemon.json"); const fs = require("fs"); const downloadData = async () => { let output = {}; for (let i = 0; i < pokemon.length; i++) { const response = await fetch(pokemon[i].url); const data = await response.json(); const moves = []; for (let j = 0; j < data.moves.length; j++) { const name = data.moves[j].move.name; const versionDetails = data.moves[j].version_group_details.find( (move) => move.move_learn_method.name === "level-up" && move.version_group.name === "red-blue" ); if (versionDetails) { moves.push({ name, levelLearnedAt: versionDetails.level_learned_at, }); } } const poke = { baseExperience: data.base_experience, height: data.height, id: data.id, moves, name: data.name, images: { front: data.sprites.versions["generation-i"]["red-blue"].front_transparent, back: data.sprites.versions["generation-i"]["red-blue"] .back_transparent, }, baseStats: { hp: data.stats.filter((stat) => stat.stat.name === "hp")[0].base_stat, attack: data.stats.filter((stat) => stat.stat.name === "attack")[0] .base_stat, defense: data.stats.filter((stat) => stat.stat.name === "defense")[0] .base_stat, specialAttack: data.stats.filter( (stat) => stat.stat.name === "special-attack" )[0].base_stat, specialDefense: data.stats.filter( (stat) => stat.stat.name === "special-defense" )[0].base_stat, speed: data.stats.filter((stat) => stat.stat.name === "speed")[0] .base_stat, }, types: data.types.map((type) => type.type.name), }; output[i] = poke; console.log(`Downloaded ${poke.name}`); // wait one second await new Promise((resolve) => setTimeout(resolve, 1000)); } fs.writeFileSync("data.json", JSON.stringify(output)); }; downloadData();