-
Notifications
You must be signed in to change notification settings - Fork 1
/
data.py
63 lines (41 loc) · 1.16 KB
/
data.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
import json
import requests
from pokemon import Pokemon
API_URL = 'http://pokeapi.co'
POKEMON_API = '/api/v1/pokemon/'
pokemon_cache = {}
def query(uri):
response = requests.get(API_URL + uri)
if response.status_code == 200:
return json.loads(response.text)
return None
def load_pokemon(query):
query = query.lower()
pokemon = load_from_cache(query)
try:
if pokemon is None:
data = load_from_json(query)
pokemon = Pokemon(data)
if pokemon is None:
data = load_from_api(query)
pokemon = Pokemon(data)
return pokemon
except:
return None
def load_from_cache(key):
if key.isdigit():
key = int(key)
return pokemon_cache.get(key)
def load_from_json(key):
try:
if key.isdigit():
with open('./static/data/pokemon/id/' + str(key) + '.json') as file:
return json.load(file)
else:
with open('./static/data/pokemon/name/' + key + '.json') as file:
return json.load(file)
except:
pass
return None
def load_from_api(id):
return query(POKEMON_API + id)