-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmap_generator.py
100 lines (83 loc) · 3.05 KB
/
map_generator.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import pandas as pd
import io
from PIL import Image, ImageDraw, ImageFont
import json
import urllib3
import os
if __name__ == "__main__":
print('Fetching Data...')
print('India Data')
http = urllib3.PoolManager()
r = http.request('GET', 'https://api.covid19india.org/data.json')
data = json.loads(r.data.decode('utf-8'))
newdata = {
"success": "true",
"data":{
"summary":{},
"regional":[]
}
}
states = data["statewise"]
for state in states:
if(state["state"] == "Total"):
tt = {}
tt["total"] = state["confirmed"]
tt["discharged"] = state["recovered"]
tt["deaths"] = state["deaths"]
newdata["data"]["summary"] = tt
else:
st = {}
st["loc"] = state["state"]
st["confirmedCases"] = state["confirmed"]
st["discharged"] = state["recovered"]
st["deaths"] = state["deaths"]
newdata["data"]["regional"].append(st)
# Getting the Summary Stats
total = int(newdata['data']['summary']['total'])
recovered = int(newdata['data']['summary']['discharged'])
death = int(newdata['data']['summary']['deaths'])
active = int(total - (recovered + death))
summ = [total, active, recovered, death]
## World Data
http = urllib3.PoolManager()
r = http.request('GET', 'https://coronavirus-19-api.herokuapp.com/all')
data = json.loads(r.data.decode('utf-8'))
w_t = data['cases']
w_d = data['deaths']
w_r = data['recovered']
w_a = w_t - (w_r + w_d)
w = [w_t,w_a,w_r,w_d]
new = pd.DataFrame.from_dict(newdata['data']['regional'])
print('Data Fetched')
print('Reading Points File....')
points_file = pd.read_csv('via_export_csv.csv')
states = list(points_file.region_id)
cx = []
cy = []
print('Generating the Image....')
for i in range(len(states)):
cx.append(json.loads(points_file.region_shape_attributes[i])['cx'])
cy.append(json.loads(points_file.region_shape_attributes[i])['cy'])
os.rename("./NEW 2.png", "./Posts/NEW 2.png")
back = Image.open('./Posts/NEW 2.png')
draw = ImageDraw.Draw(back)
font = ImageFont.truetype("Fonts/Rajdhani-Bold.ttf", 27)
for i,st in enumerate(states[:-4]):
count = new.loc[new['loc'] == st]['confirmedCases'].values
count = int(count[0])
if count !=0:
draw.text((cx[i], cy[i]), str(count), font=font, fill = 'blue')
font = ImageFont.truetype("Fonts/Rajdhani-Bold.ttf", 30)
j = 0
for i in range(37,41):
# National Stat
draw.text((cx[i]+5, cy[i]), str(summ[j]), font=font, fill = 'red')
# World Stat
draw.text((cx[i]+115, cy[i]), str(w[j]), font=font, fill = 'red')
j+=1
lang = ['english', 'tamil', 'telugu', 'bengali', 'malayalam', 'gujarati', 'kannada', 'hindi', 'marathi']
for lan in lang:
back = back.convert("RGB")
back.save('./Posts/'+lan+'.jpg')
os.rename("./Posts/NEW 2.png", "./NEW 2.png")
print('Image Generated')