Skip to content

Instantly share code, notes, and snippets.

@bkmeneguello
Created March 17, 2020 12:59
Show Gist options
  • Save bkmeneguello/9e29fd3bf15f803c2d7189c86d2c1445 to your computer and use it in GitHub Desktop.
Save bkmeneguello/9e29fd3bf15f803c2d7189c86d2c1445 to your computer and use it in GitHub Desktop.
import sys
import requests
import json
import csv
from datetime import datetime
ufs = {
11: "RO",
12: "AC",
13: "AM",
14: "RR",
15: "PA",
16: "AP",
17: "TO",
21: "MA",
22: "PI",
23: "CE",
24: "RN",
25: "PB",
26: "PE",
27: "AL",
28: "SE",
29: "BA",
31: "MG",
32: "ES",
33: "RJ",
35: "SP",
41: "PR",
42: "SC",
43: "RS",
50: "MS",
51: "MT",
52: "GO",
53: "DF",
}
names = {
"AC": "Acre",
"AL": "Alagoas",
"AM": "Amazonas",
"AP": "Amapá",
"BA": "Bahia",
"CE": "Ceará",
"DF": "Distrito Federal",
"ES": "Espírito Santo",
"GO": "Goiás",
"MA": "Maranhão",
"MT": "Mato Grosso",
"MS": "Mato Grosso do Sul",
"MG": "Minas Gerais",
"PA": "Pará",
"PB": "Paraíba",
"PR": "Paraná",
"PE": "Pernambuco",
"PI": "Piauí",
"RJ": "Rio de Janeiro",
"RN": "Rio Grande do Norte",
"RO": "Rondônia",
"RS": "Rio Grande do Sul",
"RR": "Roraima",
"SC": "Santa Catarina",
"SE": "Sergipe",
"SP": "São Paulo",
"TO": "Tocantins",
}
geo = {
"AC": [-8.77, -70.55],
"AL": [-9.62, -36.82],
"AM": [-3.47, -65.10],
"AP": [1.41, -51.77],
"BA": [-13.29, -41.71],
"CE": [-5.20, -39.53],
"DF": [-15.83, -47.86],
"ES": [-19.19, -40.34],
"GO": [-15.98, -49.86],
"MA": [-5.42, -45.44],
"MT": [-12.64, -55.42],
"MS": [-20.51, -54.54],
"MG": [-18.10, -44.38],
"PA": [-3.79, -52.48],
"PB": [-7.28, -36.72],
"PR": [-24.89, -51.55],
"PE": [-8.38, -37.86],
"PI": [-6.60, -42.28],
"RJ": [-22.25, -42.66],
"RN": [-5.81, -36.59],
"RO": [-10.83, -63.34],
"RS": [-30.17, -53.50],
"RR": [1.99, -61.33],
"SC": [-27.45, -50.95],
"SE": [-10.57, -37.45],
"SP": [-22.19, -48.79],
"TO": [-9.46, -48.26]
}
response = requests.get('http://plataforma.saude.gov.br/novocoronavirus/resources/scripts/database.js')
if response.ok:
data = json.loads(response.text[13:])
br_data = data['brazil']
w = csv.writer(sys.stdout)
w.writerow(["Province/State", "Country/Region", "Last Update", "Confirmed", "Deaths", "Recovered", "Latitude", "Longitude"])
latest_br_data = br_data[-1] # time serie available
date = datetime.strptime(f"{latest_br_data['date']} {latest_br_data['time']}", "%d/%m/%Y %H:%M")
date = date.strftime("%Y-%m-%dT%H:%M:%S")
for value in latest_br_data['values']:
uf = ufs[value["uid"]]
lat, lon = geo[uf]
w.writerow([
names[uf],
"Brazil",
date,
value.get('cases', 0),
value.get('deaths', 0),
value.get('recovered', 0), #FIXME: doesn't exist in this database
lat,
lon
])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment