-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathcovid.py
69 lines (53 loc) · 1.93 KB
/
covid.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
import requests
import json
def main():
ENDPOINT = "https://api.coronavirus.data.gov.uk/v1/data"
AREA_TYPE = "nation"
AREA_NAME = "england"
AREA_CODE = "K02000001"
filters = [
f"areaType={ AREA_TYPE }",
f"areaName={ AREA_NAME }"
#f"areaCode={ AREA_CODE }"
]
structure = {
"date": "date",
"name": "areaName",
"code": "areaCode",
"covidOccupiedMVBeds": "covidOccupiedMVBeds",
"hospitalCases": "hospitalCases",
"casesDaily": "newCasesByPublishDate",
"casesBySpecimenDate": "newCasesBySpecimenDate",
"casesCumulative": "cumCasesByPublishDate",
"deathsDaily": "newDeathsByDeathDate",
"deathsCumulative": "cumDeathsByDeathDate",
}
api_params = {
"filters": str.join(";", filters),
"structure": json.dumps(structure, separators=(",", ":"))
}
response = requests.get(ENDPOINT, params=api_params, timeout=10)
if response.status_code >= 400:
raise RuntimeError(f'Request failed: { response.text }')
# import debugpy
# debugpy.listen(5678)
# debugpy.wait_for_client()
# breakpoint()
response_data = response.json()["data"]
collection = {}
for data in response_data:
collection[data["date"]] = {
"cases": data["casesDaily"],
"casesBySpecimen": data["casesBySpecimenDate"],
"deaths": data["deathsDaily"],
"hospitalCases": data["hospitalCases"],
"covidOccupiedMVBeds": data["covidOccupiedMVBeds"]
}
csv = "date, cases, cases by specimen date, deaths, hospital cases, occupied ITU beds\n"
for data in response_data:
csv = csv + \
f"{data['date']}, {data['casesDaily']}, {data['casesBySpecimenDate']}, {data['deathsDaily']}, {data['hospitalCases']}, {data['covidOccupiedMVBeds']}\n"
csv = csv.replace("None", "0")
print(csv)
if __name__ == "__main__":
main()