-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscrap.py
72 lines (61 loc) · 2.4 KB
/
scrap.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
import requests
import statistics
from typing import Callable
from key import OPENWEATHER_API_KEY
class Day:
def __init__(self, date, temp, min_temp, max_temp, humidity_percentage, icon):
self.date = date
self.temp = temp
self.min_temp = min_temp
self.max_temp = max_temp
self.humidity_percentage = humidity_percentage
self.icon = icon
print(self.date, self.temp, self.min_temp, self.max_temp, self.humidity_percentage, self.icon)
def dump_api_response_body():
city = "Fianarantsoa"
url = 'http://api.openweathermap.org/data/2.5/forecast?q={}&appid={}&units=metric'.format(city, OPENWEATHER_API_KEY)
res = requests.get(url)
data = res.json()
all_date_information = {}
all_temp = []
all_min_temp = []
all_max_temp = []
all_humidity_percentage = []
up_next_state_daily = None
last_date = None
current_date = None
for i in range(len(data['list'])):
day = data['list'][i]
date = day['dt_txt'].split()[0]
if not last_date and not current_date:
last_date = date
current_date = date
if current_date != date:
information = Day(date=last_date,
temp=int(statistics.mean(all_temp)),
min_temp=int(min(all_min_temp)),
max_temp=int(max(all_max_temp)),
humidity_percentage=int(statistics.mean(all_humidity_percentage)),
icon=up_next_state_daily)
all_date_information[last_date] = information
all_temp = []
min_temp = []
max_temp = []
all_humidity_percentage = []
last_date = current_date
current_date = date
up_next_state_daily = None
all_temp.append(day['main']['temp'])
all_humidity_percentage.append(day['main']['humidity'])
all_min_temp.append(day['main']['temp_min'])
all_max_temp.append(day['main']['temp_max'])
if not up_next_state_daily:
up_next_state_daily = day['weather'][0]['icon']
information = Day(date=last_date,
temp=int(statistics.mean(all_temp)),
min_temp=int(min(all_min_temp)),
max_temp=int(max(all_max_temp)),
humidity_percentage=int(statistics.mean(all_humidity_percentage)),
icon=up_next_state_daily)
all_date_information[last_date] = information
return all_date_information