Skip to content

Instantly share code, notes, and snippets.

@gabrielzanlorenssi
Last active November 6, 2022 22:23
Show Gist options
  • Save gabrielzanlorenssi/9a93c16ed2ca73c782c15a11cfd00591 to your computer and use it in GitHub Desktop.
Save gabrielzanlorenssi/9a93c16ed2ca73c782c15a11cfd00591 to your computer and use it in GitHub Desktop.
# Pacotes -----------------------------------------------------------------
library(tidyverse)
library(jsonlite)
# Configuracao dos municipios ---------------------------------------------
urlm = "https://resultados.tse.jus.br/oficial/ele2022/544/config/mun-e000544-cm.json"
muni_tse <- fromJSON(urlm,
simplifyDataFrame = TRUE) %>%
.[['abr']] %>%
unnest('mu', names_repair="universal") %>%
select(-c, -z) %>%
set_names("uf", "estado", "tse", "ibge7", "nm")
# Por municipio -----------------------------------------------------------
#-- codigo do pleito
pleito = 544 # 1t !! (usar esse para testar) !!
# pleito = 545 # 2t !! (usar esse no dia 30/10) !!
cargo = "0001" # presidente
arquivo = "-v"
#-- url das paginas que vamos usar
url_muni = paste0("https://resultados.tse.jus.br/oficial/ele2022/", # url padrao
pleito, # codigo do turno
"/dados/", # dados consolidados
str_to_lower(muni_tse$uf), # indentificacao do estado
"/", str_to_lower(muni_tse$uf), # identificacao do estado
muni_tse$tse, # codigo do tse do municipio
paste0("-c", cargo), # cargo
paste0("-e000", pleito), # pleito
arquivo, # tipo de arquivo
".json")
# para evitar quedas do servidor do tse
rate <- rate_backoff(pause_base = 0.1, pause_min = 0.005, max_times = 100)
# funcao para rodar o fromJSON e ir avisando em que passo está
fs <- function(x,y) {
x<-fromJSON(x, simplifyDataFrame = T)
print(y)
return(x)}
# rodar insistentemente e nao parar com erros
insistent <- insistently(fs,
rate,
quiet = FALSE)
# map com a funcao criada. argumento y no imap é o iterando (1, 2, 3...)
municipios <- imap(url_muni, insistent)
# juntar todos os dados
dados <- municipios %>%
bind_rows() %>%
.[["abr"]] %>%
unnest(cand, names_repair="universal") %>%
filter(tpabr == "MU") |>
left_join(muni_tse, by=c("cdabr" = "tse")) %>%
mutate(votos = as.numeric(vap)) %>%
rename(ncand = n) %>%
select(cdabr, ncand, votos)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment