#' Baixar inteiro teor da decisão do Carf
#'
#' @param df tibble com acordao, contribuinte, processo e data_sessao
#' @param diretorio Se não informado, o atual
#'
#' @return Baixa o pdf assim nomeado data_hora_acordao_processo.pdf
#' @export
#'
#' @examples
#' \dontrun{
#' baixar_pdf_carf(df)
#' }
baixar_pdf_carf <- function(df = NULL, diretorio = "."){
httr::set_config(httr::config(ssl_verifypeer = FALSE))
df <- df %>%
dplyr::select(acordao,processo, contribuinte,data_sessao) %>%
dplyr::mutate_at(1:2,list(~stringr::str_remove_all(.,"\\D+"))) %>%
dplyr::mutate_at(1:3,list(~stringr::str_squish(.)))
data_final <- df$data_sessao %>% format("%m/%Y")
data_inicial <- df$data_sessao %>%
`-`(365) %>% ## Isso pode não ser exato.
format("%m/%Y")
purrr::pwalk(list(a = df$acordao, b = df$processo, c = df$contribuinte, d = data_inicial, e = data_final), function(a,b,c,d,e){
## URL consulta
url1<- "https://carf.fazenda.gov.br/sincon/public/pages/ConsultarJurisprudencia/consultarJurisprudenciaCarf.jsf"
## Primeira resposta
r1<- httr::RETRY("GET",url1)
## ViewState
viewState<-r1 %>%
httr::content(as="text") %>%
xml2::read_html() %>%
xml2::xml_find_first("//*[@id='javax.faces.ViewState']") %>%
xml2::xml_attr("value")
body <-
list(
AJAXREQUEST = "_viewRoot",
consultaJurisprudenciaForm = "consultaJurisprudenciaForm",
uniqueToken = "",
dataInicialInputDate = d,
dataInicialInputCurrentDate = d,
dataFinalInputDate = e,
dataFinalInputCurrentDate = e,
campo_pesquisa1 = "3",
valor_pesquisa1 = a,
campo_pesquisa2 = "2",
valor_pesquisa2 = c,
campo_pesquisa3 = "1",
valor_pesquisa3 = "",
javax.faces.ViewState = viewState,
j_id51 = "j_id51",
` ` = "")
r2 <- httr::RETRY("POST",url1,body=body,encode='form',httr::timeout(30))
## Segundo ViewState
viewState<-r2 %>%
httr::content(as="text") %>%
xml2::read_html() %>%
xml2::xml_find_first("//*[@id='javax.faces.ViewState']") %>%
xml2::xml_attr("value")
body2<-list(
formAcordaos = "formAcordaos",
uniqueToken = "",
javax.faces.ViewState = viewState,
`tblJurisprudencia:0:numDecisao` = "tblJurisprudencia:0:numDecisao"
)
## Terceira resquisição
url2<-"https://carf.fazenda.gov.br/sincon/public/pages/ConsultarJurisprudencia/listaJurisprudenciaCarf.jsf"
r3 <- httr::RETRY("POST",url2,body=body2,encode="form",httr::timeout(30))
## Quarta requisição
conteudo <- r3 %>%
httr::content("text") %>%
xml2::read_html()
formAcordaos <- conteudo %>%
xml2::xml_find_all("//a[contains(@id,'formAcordaos:j')]") %>%
xml2::xml_attr("id")
viewState<-conteudo %>%
xml2::xml_find_first("//*[@id='javax.faces.ViewState']") %>%
xml2::xml_attr("value")
body3<-list(
formAcordaos = "formAcordaos",
uniqueToken = "",
`javax.faces.ViewState` = viewState,
`formAcordaos:_idcl` = formAcordaos
)
url3 <- "https://carf.fazenda.gov.br/sincon/public/pages/ConsultarJurisprudencia/listaJurisprudencia.jsf"
arquivo <- paste0("_",a,"_",b,".pdf")
httr::RETRY("POST",url3,body=body3,encode="form",
httr::timeout(30),
httr::write_disk(file.path(diretorio,
Sys.time() %>%
stringr::str_replace_all("\\D+", "_") %>%
stringr::str_replace("$", arquivo))))
})
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.