Skip to content

Instantly share code, notes, and snippets.

@Ronald-TR
Created March 10, 2020 01:41
Show Gist options
  • Save Ronald-TR/3b8b040d5aeee73bfed7b3cd41876a53 to your computer and use it in GitHub Desktop.
Save Ronald-TR/3b8b040d5aeee73bfed7b3cd41876a53 to your computer and use it in GitHub Desktop.
import requests
import csv
import json
from datetime import datetime
import locale
locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8')
def extract_cpf_mesano(row):
cpf = row['CPF'].strip()
mes_ano = row['Mês / Ano de pagamento'].strip()
if not cpf or not mes_ano:
return None, None
fmt_mes_ano = datetime.strptime(mes_ano, '%b %Y').strftime('%Y%m')
return cpf, fmt_mes_ano
def extract_codigo_07(rubricas):
if len(rubricas) != 0:
cod = [i for i in rubricas if i['codigo'] == '07'][0]
return cod['valorFormatado']
return ''
_f = open('new.csv', 'r')
reader = csv.DictReader(_f)
# url = 'http://www.transparencia.gov.br/api-de-dados/servidores?cpf={cpf}'
url = 'http://www.transparencia.gov.br/api-de-dados/servidores/remuneracao/?cpf={cpf}&mesAno={mes_ano}'
file = open('results_transparencia.csv', 'w+')
csvWriter = csv.DictWriter(file, fieldnames=['cpf', 'nome', 'salario_bruto', 'valor_formatado', 'status'])
csvWriter.writeheader()
results = {}
relactory = {}
try:
for row in reader:
mes_ano = row['ANO_MES']
cpf = row['CPF']
resp = requests.get(url.format(cpf=cpf, mes_ano=mes_ano))
relactory[cpf] = {
'status': resp.status_code,
'content': resp.json()
}
nome = ''
sal = ''
cod = ''
if len(resp.json()) != 0 and resp.status_code == 200:
nome = resp.json()[0]['servidor']['pessoa']['nome']
if len(resp.json()[0]['remuneracoesDTO']) != 0:
sal = resp.json()[0]['remuneracoesDTO'][0]['remuneracaoBasicaBruta']
cod = extract_codigo_07(resp.json()[0]['remuneracoesDTO'][0]['rubricas'])
csvWriter.writerow({'cpf': cpf, 'nome': nome, 'status': resp.status_code, 'valor_formatado': cod, 'salario_bruto': sal})
except:
with open('relactory.json', 'w+') as _f:
_f.write(json.dumps(relactory))
raise
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment