diff --git a/NAMESPACE b/NAMESPACE index 83d67aa..677b4c3 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -94,7 +94,7 @@ export(tjsp_ler_dispositivo) export(tjsp_ler_documentos) export(tjsp_ler_documentos_cd_processo) export(tjsp_ler_historico_classes) -export(tjsp_ler_intimacoes) +export(tjsp_ler_intimacoes_xml) export(tjsp_ler_movimentacao) export(tjsp_ler_partes) export(tjsp_ler_peticoes) diff --git a/R/tjsp_baixar_intimacoes.R b/R/tjsp_baixar_intimacoes.R index 1b2cb51..d9ba4dc 100644 --- a/R/tjsp_baixar_intimacoes.R +++ b/R/tjsp_baixar_intimacoes.R @@ -9,11 +9,11 @@ #' Se não informada, uda a data de hoje. #' @param situacao Opções: "cumprida", "pendente" ou "ambas". Padrão para "ambas". #' @param natureza_comunicacao Opções: "intimação", "citação" ou "ambas". Padrão para "ambas". -#' @param versao Pode ser csv ou html. Padrão para csv. +#' @param versao Pode ser csv ou xml. Padrão para csv. #' @param intervalo Padrão para trimestral, ou seja, máximo. #' @param diretorio Padrão ".", ou seja, o atual. #' -#' @return csv +#' @return xml #' @export #' tjsp_baixar_intimacoes <- function(cd_foro = "", @@ -23,7 +23,7 @@ tjsp_baixar_intimacoes <- function(cd_foro = "", dt_fim = "", situacao = "ambas", natureza_comunicacao = "ambas", - versao = c("csv","html"), + versao = c("xml","csv"), intervalo = "trimestral", diretorio = "."){ @@ -38,12 +38,12 @@ tjsp_baixar_intimacoes <- function(cd_foro = "", if(dt_inicio == ""){ - dt_inicio <- Sys.Date() |> format("%d/%m/%Y") + dt_inicio <- (Sys.Date() - 1) |> format("%d/%m/%Y") } if(dt_fim == ""){ - dt_fim <- Sys.Date() |> format("%d/%m/%Y") + dt_fim <- (Sys.Date() -1) |> format("%d/%m/%Y") } cd_tipo_ato <- switch(natureza_comunicacao, @@ -58,13 +58,13 @@ tjsp_baixar_intimacoes <- function(cd_foro = "", csv = "https://esaj.tjsp.jus.br/intimacoesweb/exportarAtosRecebidosParaCsv.do", - html = "https://esaj.tjsp.jus.br/intimacoesweb/consultarAtosRecebidos.do" + xml= "https://esaj.tjsp.jus.br/intimacoesweb/consultarAtosRecebidos.do" ) e <- switch(versao, csv = ".csv", - html = ".html" + xml = ".xml" ) cd_usuario <- Sys.getenv("ESAJ_CD_USUARIO") @@ -75,16 +75,10 @@ tjsp_baixar_intimacoes <- function(cd_foro = "", purrr::walk2(datas$data_inicial, datas$data_final, ~{ + di <- .x + df <- .y - i <- lubridate::dmy(.x) |> - stringr::str_replace_all("\\D","_") - - f <- lubridate::dmy(.y) |> - stringr::str_replace_all("\\D","_") - - arquivo <- file.path(diretorio,paste0("foro_", cd_foro,"_inicio_",i,"_fim_",f,e)) - - body <- + corpo <- list( conversationId = "", entity.cdUsuario = cd_usuario, @@ -107,8 +101,8 @@ tjsp_baixar_intimacoes <- function(cd_foro = "", entity.nmVaraOrigem = "", entity.cdVaraOrigem = "", dadosConsulta.flArea = "", - dadosConsulta.dtInicioPeriodo = .x, - dadosConsulta.dtFimPeriodo = .x, + dadosConsulta.dtInicioPeriodo = di, + dadosConsulta.dtFimPeriodo = df, entity.nuProcessoFormat = "", entity.cdProcesso = "", dadosConsulta.formaCienciaIntimacao = "", @@ -116,6 +110,110 @@ tjsp_baixar_intimacoes <- function(cd_foro = "", entity.ato.flCumprido = ato_fl_cumprido ) - httr::POST(url1, body = body, encode = "form", httr::write_disk(arquivo, overwrite = T)) + r1 <- httr::POST(url1, body = corpo, encode = "form") |> + httr::content() + + + dividir <- `/` + + paginas <- r1 |> + xml2::xml_find_first("//*[@id='textQtLinhasRow']/following-sibling::text()") |> + xml2::xml_text() |> + stringr::str_remove_all("\\D+") |> + as.integer() |> + dividir(20) |> + ceiling() + + i <- lubridate::dmy(di) |> + stringr::str_replace_all("\\D","_") + + f <- lubridate::dmy(df) |> + stringr::str_replace_all("\\D","_") + + purrr::walk(0:paginas, ~{ + + p <- .x + + arquivo <- file.path(diretorio,paste0('pagina_',p,"_foro_", cd_foro,"_inicio_",i,"_fim_",f,e)) + + q <- structure( + list( + scheme = "https", + hostname = "esaj.tjsp.jus.br", + port = NULL, + path = "intimacoesweb/AjaxServlet.ajax", + query = list( + component = "gridPaginada", + filterPaginationID = "/intimacoesweb_gridAtosUsuario", + beanClass = "br.com.softplan.intimacoes.comum.AtoUsuario", + objectPaginationHandler = "br.com.softplan.saj.intimacoesweb.grid.ConsultaAtosRecebidosPaginationHandler", + ejbClass = "", + ejbMethod = "", + pageSize = "20", + page = .x, + currentPage = "0", + paramSize = "0", + orderBy = "null", + orderByDirection = "null", + column0Type = "null", + column0 = "cdAto", + column1Type = "null", + column1 = "cdUsuario", + column2Type = "null", + column2 = "ato.cdProcesso", + column3Type = "null", + column3 = "ato.cdForo", + column4Type = "null", + column4 = "ato.especialidade.cdEspecialidade", + column5Type = "null", + column5 = "ato.cargo.cdCargo", + column6Type = "null", + column6 = "ato.flCumprido", + column7Type = "null", + column7 = "ato.cdTipoAto", + column8Type = "null", + column8 = "intimacaoAutomatica", + column9Type = "null", + column9 = "dtLeitura", + column10Type = "null", + column10 = "ato.dtInclusao", + column11Type = "null", + column11 = "dtIntimacao", + column12Type = "null", + column12 = "nuDiasPrazo", + column13Type = "null", + column13 = "ato.nuProcessoFormat", + column14Type = "null", + column14 = "classeEAssuntoPrincipaisFormatado", + column15Type = "null", + column15 = "usuarioIntimacao.nmUsuario", + column16Type = "null", + column16 = "ato.deTipoMvProcesso", + column17Type = "null", + column17 = "ato.especialidade.nmEspecialidade", + column18Type = "null", + column18 = "ato.cargo.deCargo", + column19Type = "null", + column19 = "ato.tarjasJson", + columnsSize = "20", + objSerializado = "null" + ), + params = NULL, + fragment = NULL, + username = NULL, + password = NULL + ), + class = "url" + ) + + + q$query$page <- p + + parseada <- httr::build_url(q) + + httr::GET(parseada, httr::write_disk(arquivo, overwrite = T)) + +}) + }) } diff --git a/R/tjsp_ler_intimacoes.R b/R/tjsp_ler_intimacoes.R deleted file mode 100644 index 6d53d05..0000000 --- a/R/tjsp_ler_intimacoes.R +++ /dev/null @@ -1,29 +0,0 @@ -#' Lê csv baixado com tjsp_baixar_intimacoes -#' -#' @param arquivos Vetor de arquivos -#' @param diretorio Alternativamente, informar diretório. -#' -#' @return Tibble -#' @export -#' -tjsp_ler_intimacoes <- function(arquivos = NULL, diretorio = "."){ - - if(is.null(arquivos)){ - - arquivos <- list.files(diretorio, full.names = TRUE, pattern = "csv$") - - } - - - purrr::map_dfr(arquivos, purrr::possibly(~{ - - s<- .x |> - readr::read_delim(delim = ";", - escape_double = FALSE, - locale = readr::locale(encoding = "ISO-8859-1"), - trim_ws = TRUE) |> - janitor::clean_names() |> - tibble::add_column(arquivo = .x, .before = 1) - - }, NULL)) -} diff --git a/R/tjsp_ler_intimacoes_xml.R b/R/tjsp_ler_intimacoes_xml.R new file mode 100644 index 0000000..243e824 --- /dev/null +++ b/R/tjsp_ler_intimacoes_xml.R @@ -0,0 +1,67 @@ +#' Ler intimações em xml +#' +#' @param arquivos Vetor de arquivos +#' @param diretorio Diretório como alternativa. +#' +#' @return tibble +#' @export +#' +tjsp_ler_intimacoes_xml <- function(arquivos = NULL, diretorio = "."){ + + if(is.null(arquivos)){ + + arquivos <- list.files(diretorio, full.names = TRUE, pattern = "xml$") + } + +purrr::map_dfr(arquivos, purrr::possibly(~{ + + x <- .x |> + xml2::read_html() |> + xml2::xml_find_all("//e") + + df1 <- purrr::map_dfr(x, ~{ + + e <- .x |> + xml2::xml_find_first(".") |> + xml2::xml_attr("i") + + n <- .x |> + xml2::xml_find_all(".//r") |> + xml2::xml_attr("n") + + v <- .x|> + xml2::xml_find_all(".//r") |> + xml2::xml_attr("v") + + tibble::tibble(e, n, v) + + }) |> + dplyr::mutate(n = snakecase::to_snake_case(n, transliterations = "Latin-ASCII")) |> + tidyr::pivot_wider(names_from = n, values_from = v) |> + tibble::add_column(arquivo = basename(.x), .before = 1) + + + df2 <- purrr::map2_dfr(df1$e, df1$ato_tarjas_json, purrr::possibly(~{ + + .y |> + jsonlite::fromJSON() |> + dplyr::pull(deTarja) |> + stringr::str_c(collapse = "|") |> + tibble::tibble(tarjas = _) |> + tibble::add_column(e = .x) + }, NULL)) + + df1 |> + dplyr::left_join(df2, by = dplyr::join_by("e")) |> + dplyr::relocate(tarjas, .before = ato_tarjas_json) |> + dplyr::mutate(ato_tarjas_json = NULL) |> + dplyr::mutate(hora_coleta = Sys.time()) + + +},NULL), .progress = TRUE) + +} + + + + diff --git a/man/tjsp_baixar_intimacoes.Rd b/man/tjsp_baixar_intimacoes.Rd index 2f17908..e886abb 100644 --- a/man/tjsp_baixar_intimacoes.Rd +++ b/man/tjsp_baixar_intimacoes.Rd @@ -12,7 +12,7 @@ tjsp_baixar_intimacoes( dt_fim = "", situacao = "ambas", natureza_comunicacao = "ambas", - versao = c("csv", "html"), + versao = c("xml", "csv"), intervalo = "trimestral", diretorio = "." ) @@ -34,14 +34,14 @@ Se não informada, uda a data de hoje.} \item{natureza_comunicacao}{Opções: "intimação", "citação" ou "ambas". Padrão para "ambas".} -\item{versao}{Pode ser csv ou html. Padrão para csv.} +\item{versao}{Pode ser csv ou xml. Padrão para csv.} \item{intervalo}{Padrão para trimestral, ou seja, máximo.} \item{diretorio}{Padrão ".", ou seja, o atual.} } \value{ -csv +xml } \description{ Coleta intimações do TJSP diff --git a/man/tjsp_ler_intimacoes.Rd b/man/tjsp_ler_intimacoes.Rd deleted file mode 100644 index 79a9d57..0000000 --- a/man/tjsp_ler_intimacoes.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/tjsp_ler_intimacoes.R -\name{tjsp_ler_intimacoes} -\alias{tjsp_ler_intimacoes} -\title{Lê csv baixado com tjsp_baixar_intimacoes} -\usage{ -tjsp_ler_intimacoes(arquivos = NULL, diretorio = ".") -} -\arguments{ -\item{arquivos}{Vetor de arquivos} - -\item{diretorio}{Alternativamente, informar diretório.} -} -\value{ -Tibble -} -\description{ -Lê csv baixado com tjsp_baixar_intimacoes -} diff --git a/man/tjsp_ler_intimacoes_xml.Rd b/man/tjsp_ler_intimacoes_xml.Rd new file mode 100644 index 0000000..7509548 --- /dev/null +++ b/man/tjsp_ler_intimacoes_xml.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/tjsp_ler_intimacoes_xml.R +\name{tjsp_ler_intimacoes_xml} +\alias{tjsp_ler_intimacoes_xml} +\title{Ler intimações em xml} +\usage{ +tjsp_ler_intimacoes_xml(arquivos = NULL, diretorio = ".") +} +\arguments{ +\item{arquivos}{Vetor de arquivos} + +\item{diretorio}{Diretório como alternativa.} +} +\value{ +tibble +} +\description{ +Ler intimações em xml +}