Replies: 8 comments
|
Hi, we don't plan to add such functionality to the v2 API. What's your use case?
Like this? |
|
Yes something similar, my goal at the moment is to get the stats of a Pokémon (attack, defense, ...) from its French name. Is there any workaround that I could use ? |
|
Hmm, the best idea would be to have an offline list of french pokemon names and their corresponding ID. Maybe you can build that list using a one-time script:
Surely the solution above is the fastest. Otherwise you could get the ID of a pokemon from his name using the GraphQL query here: #235 (comment) . You can pull its stats in the same GQL query like below: query searchForPokemonInFrench {
pokemon_v2_pokemonspecies(
where: {
pokemon_v2_pokemonspeciesnames: {
pokemon_v2_language: { name: { _eq: "fr" } }
name: { _regex: "Bulbizarre" }
}
}
) {
pokemon_v2_pokemonspeciesnames(
where: { pokemon_v2_language: { name: { _eq: "fr" } } }
) {
name
}
id
pokemon_v2_pokemons {
pokemon_v2_pokemonstats {
base_stat
pokemon_v2_stat {
name
}
}
}
}
} |
|
I recommend keeping an offline list as Naramism has suggested. I scraped a list down with 200ms delays for all Pokemon, Items, Moves and Abilities to get their ID and keep all language entries so you can search through them. Takes a while to download but worth it. Putting the search term into a regex and looking up by a specific language key is performing quite well at this size. Of course, that introduces the burden on your end to update this list every so often. And your cold-start times might be a bit higher if you need to load this data in each time. Feel free to use the .json files I scraped at https://github.com/helblingjoel/pokewiki/tree/main/src/data where there should also be a scraper.js file if you choose to update this. I can't think of a quicker way to do this. |
I did the same for types and GraphQL is soooo fast compared to endpoint API! |
|
I simplified it a bit: query searchForPokemonInFrench ($lang: String, $name: String) {
pokemon_v2_pokemonspecies(
where: {
pokemon_v2_pokemonspeciesnames: {
pokemon_v2_language: { name: { _eq: $lang } }
name: { _regex: $name }
}
}
) {
pokemon_v2_pokemonspeciesnames(
where: { pokemon_v2_language: { name: { _eq: $lang } } }
) {
name
}
id
}
}{
"lang": "de",
"name": "Bis"
} |
|
Thank you, I was using |
|
Here is my solution in python for obtaining a mapping of localized names to their canonical names used by pokeapi's endpoints. Similar to @Naramsim's offline list suggestion and @helblinglilly's scraper.js https://github.com/acxz/pokeshell/blob/master/scripts/create_pokemon_identifiers.py @helblinglilly's output wasn't in the format that I needed as I needed a simple mapping. i.e. I wanted to simply do: input_name = "フシギダネ"
pokemon_identifiers = {...}
# Get name that pokeapi endpoints understand
canonical_name = pokemon_identifiers[input_name]
# Get response
...Here is the output of the above script: https://github.com/acxz/pokeshell/blob/master/share/pokemon_identifiers.json I also attached the file directly here, so you don't have to run the script for your purposes: Subset of the output file: {
"1": "bulbasaur",
"bulbasaur": "bulbasaur",
"フシギダネ": "bulbasaur",
"fushigidane": "bulbasaur",
"이상해씨": "bulbasaur",
"妙蛙種子": "bulbasaur",
"bulbizarre": "bulbasaur",
"bisasam": "bulbasaur",
"2": "ivysaur",
"ivysaur": "ivysaur",
"フシギソウ": "ivysaur"
}You can use this very easily by loading this json file as a dictionary in python and then passing your input through this dictionary to get the name that pokeapi's endpoint does understand. Hopefully this helps anyone coming across this issue. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Hey there!
I would like to be able to access details about a Pokémon based on its name in a specific language. It seems the info exists as you return it in the response of
https://pokeapi.co/api/v2/pokemon-species/{id or name}/. My use case is to get stats about a Pokémon by their name in a given language, so exactly what is returned byhttps://pokeapi.co/api/v2/ability/{id or name}/.Could it be possible to add a parameter to this endpoint to be able to pass the language that corresponds to the name of the Pokémon that is supplied ? Happy to help if I can
All reactions