Skip to content

Commit

Permalink
parse e tidy das tpus (mas ele ainda nao esta baixando as tpus)
Browse files Browse the repository at this point in the history
  • Loading branch information
rcfeliz committed Mar 24, 2023
1 parent ead49cb commit e5fe49c
Show file tree
Hide file tree
Showing 2 changed files with 238 additions and 5 deletions.
65 changes: 61 additions & 4 deletions R/sgt.R
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# sgt_atuais

download_sgt_atual <- function(tipo, path = "data-raw/sgt_atual") {
sgt_atual_download <- function(tipo, path = "data-raw/sgt_atual") {
u_sgt <- glue::glue("https://www.cnj.jus.br/sgt/versoes.php?tipo_tabela={tipo}")
file <- glue::glue("{path}/sgt_{tipo}.html")
r_sgt <- httr::GET(u_sgt, httr::write_disk(file, overwrite = TRUE))
}

parse_sgt_atual <- function(file) {
sgt_atual_parse <- function(file) {

html <- xml2::read_html(file)
table <- html |>
Expand Down Expand Up @@ -46,15 +46,15 @@ parse_sgt_atual <- function(file) {

# sgt_anterior

download_sgt_anterior <- function(tipo, path = "data-raw/sgt_anterior") {
sgt_anterior_download <- function(tipo, path = "data-raw/sgt_anterior") {

u_sgt <- glue::glue("https://www.cnj.jus.br/sgt/versoes_anteriores.php?tipo_tabela={tipo}")
file <- glue::glue("{path}/sgt_{tipo}.html")
r_sgt <- httr::GET(u_sgt, httr::write_disk(file, overwrite = TRUE))

}

parse_sgt_anterior <- function(file) {
sgt_anterior_parse <- function(file) {

html <- xml2::read_html(file)
table <- html |>
Expand Down Expand Up @@ -91,3 +91,60 @@ parse_sgt_anterior <- function(file) {

return(da)
}

sgt_tidy <- function(da) {
da |>
dplyr::mutate(
tipo_abbr = tipo,
tipo = dplyr::case_when(
tipo == "A" ~ "Assuntos",
tipo == "C" ~ "Classes",
tipo == "M" ~ "Movimentos"
),
justica_abbr = dplyr::case_when(
justica == "Justiça do Trabalho" ~ "JT",
justica == "Justiça Federal" ~ "JF",
justica == "Justiça Estadual" ~ "JEs",
justica == "Justiça Eleitoral" ~ "JEl",
justica == "Justiça Militar" ~ "JM",
justica == "Superiores" ~ "S",
),
tabela = stringr::str_squish(tabela),
tabela_abbr = dplyr::case_when(
tabela == "Trabalho 1° Grau" ~ "1",
tabela == "Trabalho 2° Grau" ~ "2",
tabela == "Trabalho TST" ~ "S",
tabela == "Federal 1° Grau" ~ "1",
tabela == "Federal 2° Grau" ~ "2",
tabela == "Federal Juizado Especial" ~ "JEC",
tabela == "Federal Turmas Recursais" ~ "TR",
tabela == "Federal Turma Nacional de Uniformização" ~ "TNU",
tabela == "Federal Turma Regional de Uniformização" ~ "TRU",
tabela == "Estadual 1° Grau" ~ "1",
tabela == "Estadual 2° Grau" ~ "2",
tabela == "Estadual Juizado Especial" ~ "JEC",
tabela == "Estadual Turmas Recursais de Uniformização" ~ "TRU",
tabela == "Juizados Especiais Fazenda Pública" ~ "JECFP",
tabela == "Turma Estadual de Uniformização" ~ "TEU",
tabela == "Militar da União 1º" ~ "U1",
tabela == "Militar da União STM" ~ "STM",
tabela == "Militar Estadual 1º" ~ "E1",
tabela == "Militar Estadual TJM" ~ "TJM",
tabela == "Eleitoral Zonas Eleitorais" ~ "ZE",
tabela == "Eleitoral TRE" ~ "TRE",
tabela == "Eleitoral TSE" ~ "TSE",
justica == "Superiores" ~ tabela
),
data_versao = lubridate::dmy(data_versao),
sigla = paste0(tipo_abbr, "_", justica_abbr, tabela_abbr, "_", data_versao)
) |>
dplyr::select(
sigla,
tipo,
tipo_abbr,
data_versao,
justica,
tabela,
link
)
}
178 changes: 177 additions & 1 deletion R/tpu.R
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
download_tpu <- function(sig, path = "data-raw/tpu") {
tpu_download <- function(sig, path = "data-raw/tpu") {
load("data/sgt_atual.rda")

u_tpu <- sgt_atual |>
Expand All @@ -9,3 +9,179 @@ download_tpu <- function(sig, path = "data-raw/tpu") {

r_tpu <- httr::GET(u_tpu, httr::write_disk(file, overwrite = TRUE))
}

tpu_parse <- function(file) {
# pega todos os assuntos de nível 2 a 6
html <- xml2::read_html(file) |>
xml2::xml_find_first("//table") |>
xml2::xml_find_all(".//tr[contains(@style, 'background-color')]")

da_sem_assunto1 <- purrr::map(html, function(html) {
tibble::tibble(
assunto1 = NA_character_,
assunto2 = html |>
xml2::xml_find_all("./td[1]") |>
xml2::xml_text(trim=TRUE),
assunto3 = html |>
xml2::xml_find_all("./td[2]") |>
xml2::xml_text(trim=TRUE),
assunto4 = html |>
xml2::xml_find_all("./td[3]") |>
xml2::xml_text(trim=TRUE),
assunto5 = html |>
xml2::xml_find_all("./td[4]") |>
xml2::xml_text(trim=TRUE),
assunto6 = html |>
xml2::xml_find_all("./td[5]") |>
xml2::xml_text(trim=TRUE),
codigo = html |>
xml2::xml_find_all("./td[6]") |>
xml2::xml_text(trim=TRUE),
codigo_pai = html |>
xml2::xml_find_all("./td[7]") |>
xml2::xml_text(trim=TRUE),
dispositivo_legal = html |>
xml2::xml_find_all("./td[8]") |>
xml2::xml_text(trim=TRUE),
artigo = html |>
xml2::xml_find_all("./td[9]") |>
xml2::xml_text(trim=TRUE),
alteracoes = html |>
xml2::xml_find_all("./td[10]") |>
xml2::xml_text(trim=TRUE),
glossario = html |>
xml2::xml_find_all("./td[11]") |>
xml2::xml_text(trim=TRUE),
dt_publicacao = html |>
xml2::xml_find_all("./td[12]") |>
xml2::xml_text(trim=TRUE),
dt_alteracao = html |>
xml2::xml_find_all("./td[13]") |>
xml2::xml_text(trim=TRUE),
dt_inativacao = html |>
xml2::xml_find_all("./td[14]") |>
xml2::xml_text(trim=TRUE),
dt_reativacao = html |>
xml2::xml_find_all("./td[15]") |>
xml2::xml_text(trim=TRUE)
)
}) |>
dplyr::bind_rows() |>
dplyr::mutate(id = dplyr::row_number()*2)

# pega todos assuntos de nível 1
assunto1_sem_id <- tibble::tibble(
txt = xml2::read_html(file) |>
xml2::xml_find_first("//table") |>
xml2::xml_find_all("./td[contains(@style, 'background-color:#4c83c8')]") |>
xml2::xml_text(trim=TRUE)
) |>
dplyr::mutate(
txt = ifelse(txt == "", NA_character_, txt),
assunto1 = !stringr::str_detect(txt, "[a-z]|[0-9]")
)

n_id <- assunto1_sem_id |>
dplyr::count(assunto1) |>
dplyr::filter(assunto1) |>
dplyr::pull(n)

n_col <- da_sem_assunto1 |>
dplyr::select(!dplyr::contains("assunto")) |>
ncol()

da_assunto1 <- assunto1_sem_id |>
dplyr::mutate(
id = ifelse(assunto1, 1:n_ids, NA_integer_)
) |>
tidyr::fill(id, .direction="down") |>
dplyr::group_by(id) |>
dplyr::mutate(
colname = 1:n_col,
colname = dplyr::case_when(
colname == 1 ~ "assunto1",
colname == 2 ~ "codigo",
colname == 3 ~ "codigo_pai",
colname == 4 ~ "dispositivo_legal",
colname == 5 ~ "artigo",
colname == 6 ~ "alteracoes",
colname == 7 ~ "glossario",
colname == 8 ~ "dt_publicacao",
colname == 9 ~ "dt_alteracao",
colname == 10 ~ "dt_inativacao",
colname == 11 ~ "dt_reativacao"
)
) |>
dplyr::ungroup() |>
dplyr::select(txt, id, colname) |>
tidyr::pivot_wider(values_from = txt, names_from = colname) |>
dplyr::transmute(
assunto1,
assunto2 = "",
assunto3 = "",
assunto4 = "",
assunto5 = "",
assunto6 = "",
codigo,
codigo_pai,
dispositivo_legal,
artigo,
alteracoes,
glossario,
dt_publicacao,
dt_alteracao,
dt_inativacao,
dt_reativacao
)

# insere os assuntos de nivel 1 junto dos demais assuntos
da <- da_sem_assunto1
for(cod in da_assunto1$codigo) {
posicao_assunto1 <- da |>
dplyr::mutate(
assunto1_acima = codigo_pai == cod
) |>
dplyr::filter(assunto1_acima) |>
dplyr::pull(id) |>
min() - 1L

row <- da_assunto1 |>
dplyr::filter(codigo == cod) |>
dplyr::mutate(id = posicao_assunto1)

da <- da |>
dplyr::bind_rows(row) |>
dplyr::arrange(id) |>
dplyr::select(-id)
}
return(da)
}

tpu_tidy <- function(da) {
da |>
dplyr::mutate(
dplyr::across(
everything(),
~ifelse(.x == "", NA_character_, .x)
),
dplyr::across(
dplyr::contains("codigo"),
~as.integer(.x)
),
dplyr::across(
dplyr::starts_with("dt_"),
~ifelse(.x == "0000-00-00 00:00:00", NA_character_, .x)
),
dplyr::across(
dplyr::starts_with("dt_"),
~lubridate::ymd_hms(.x)
)
) |>
tidyr::fill(dplyr::contains("assunto"), .direction="down") |>
dplyr::mutate(
dplyr::across(
dplyr::contains("assunto"),
~tidyr::replace_na(.x, "-")
)
)
}

0 comments on commit e5fe49c

Please sign in to comment.