This repository has been archived by the owner on Jul 31, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathfiliados-download-dados.py
43 lines (38 loc) · 1.69 KB
/
filiados-download-dados.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
# -*- coding: utf-8 -*-
import io
import os
import urlparse
import zipfile
import requests
import ckanapi
dadosgovbr = ckanapi.RemoteCKAN('http://dados.gov.br', user_agent='fatias/1.0 (+http://github.com/augusto-herrmann/fatias)')
dataset_filiados = dadosgovbr.action.package_show(id='filiados-partidos-politicos')
urls = [resource['url'] for resource in dataset_filiados['resources']]
if not os.path.exists('dados'):
print u'Criando diretório "dados"...'
os.mkdir('dados')
if not os.path.exists('dados/filiados'):
print u'Criando diretório "dados/filiados"...'
os.mkdir('dados/filiados')
for url in urls:
filename = os.path.basename(urlparse.urlparse(url).path)
if os.path.exists('dados/filiados/%s.csv' % filename.split('.')[0]):
print u'Pulando arquivo existente: %s' % filename
continue
print u'Baixando a url %s' % url
response = requests.get(url, stream=True)
if response.ok:
z = zipfile.ZipFile(io.BytesIO(response.content))
# queremos apenas o arquivo csv, e nao queremos o sub judice
planilhas = [name for name in z.namelist() if os.path.splitext(name)[-1] == '.csv' and not 'sub_jud' in name]
if not planilhas:
print u'Aviso: O arquivo %s não contém planilhas.' % filename
# pula para a proxima url
continue
path_planilha = planilhas[0] # le a primeira planilha
nome_planilha = os.path.basename(path_planilha)
with z.open(path_planilha) as p, open('dados/filiados/%s' % nome_planilha, 'w') as f:
print u'Gravando arquivo %s' % nome_planilha
f.write(p.read())
else:
print 'ERRO: Código %d ao acessar a url.' % response.status_code