-
Notifications
You must be signed in to change notification settings - Fork 1
/
moves.py
77 lines (65 loc) · 2.94 KB
/
moves.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import logging, requests, time, json
def retrieve_pokemon_move(pokemon_move_id:int, pokemon_name:str, number_move: int):
"""Gets the move name of a Pokemon based on the move ID using the PokeAPI."""
with open("./data/moves.json", "r") as file:
moves_data = json.load(file)
move = moves_data.get(str(pokemon_move_id))
if not move:
print(f"Pokemon:{pokemon_name}, move_id:{pokemon_move_id}, number_move:{number_move}")
def retrieve_pokemon_name(pokemon_id):
"""Gets the name of a Pokémon based on its ID using the PokeAPI."""
try:
pokeapi_url = f"https://pokeapi.co/api/v2/pokemon/{pokemon_id}"
response = requests.get(pokeapi_url)
response.raise_for_status()
data = response.json()
name = data.get("name")
return name
except requests.exceptions.RequestException as e:
logging.warning(f"Error fetching Pokémon name for ID {pokemon_id}: {e}")
except ValueError as e:
logging.error(f"Error decoding JSON response from PokeAPI: {e}")
return None
def fetch_pokemon_data_by_iv(iv):
"""Obtains Pokemon data from multiple sources based on IV and returns a combined list of Pokemon."""
total_data = []
urls = [
"https://vanpokemap.com/query2.php",
"https://nycpokemap.com/query2.php",
"https://londonpogomap.com/query2.php",
"https://sgpokemap.com/query2.php",
"https://sydneypogomap.com/query2.php",
]
headers = {
"https://vanpokemap.com/query2.php": {"Referer": "https://vanpokemap.com/"},
"https://nycpokemap.com/query2.php": {"Referer": "https://nycpokemap.com/"},
"https://londonpogomap.com/query2.php": {
"Referer": "https://londonpogomap.com/"
},
"https://sgpokemap.com/query2.php": {"Referer": "https://sgpokemap.com/"},
"https://sydneypogomap.com/query2.php": {
"Referer": "https://sydneypogomap.com/"
},
}
params = {
"mons": ",".join(str(i) for i in range(999)),
"minIV": str(iv),
"time": int(time.time()),
"since": 0,
}
for url in urls:
headers_for_url = headers.get(url, {})
try:
response = requests.get(url, params=params, headers=headers_for_url)
response.raise_for_status() # Si ocurre un error, lanzará una excepción
data = response.json()
for pokemon in data.get("pokemons", []):
pokemon_name =retrieve_pokemon_name(pokemon["pokemon_id"])
retrieve_pokemon_move(pokemon["move1"],pokemon_name,1)
retrieve_pokemon_move(pokemon["move2"],pokemon_name,2)
except requests.exceptions.RequestException as e:
logging.warning(f"Failed to fetch data from {url}: {e}")
except json.decoder.JSONDecodeError as e:
logging.error(f"Failed to decode JSON response from {url}: {e}")
for iv in range(100, 10, -10):
fetch_pokemon_data_by_iv(iv)