R/prodtjsp.R

#' Download de PDF do TJSP
#' 
#' @export
download_pdfs <- function(path, d = NULL) {
  if(is.null(d)) {
    d <- monta_foro_ano_mes()
  }
  d <- dplyr::group_by(d, ano, mes, foro, value)
  l <- gsub('_[^_]+\\.pdf', '', list.files(path))
  d <- dplyr::do(d, arq = download_pdfs_ano_mes_foro(., path, l))
  d <- dplyr::ungroup(d)
  d <- tidyr::unnest(d, arq)
  d
}

#' @export
download_pdfs_ano_mes_foro <- function(x, path, l) {
  try({
    ano <- x$ano
    mes <- x$mes
    foro <- x$foro
    foro_cod <- x$value
    # l <- list.files(path)
    #a <- sprintf('%s_%s_%s',
    #             ano, sprintf('%02d', as.numeric(mes)), 
    #             gsub(' +', '-', tolower(foro)))
    #if(!any(stringr::str_detect(l, a))) {
      r <- lista_ano(ano)
      r <- lista_mes(r, ano, mes)
      r <- lista_foro(r, ano, mes, foro_cod, foro)
      nm <- rvest::html_text(rvest::html_nodes(rvest::html(r), '.rcbList > li'))[-1]
      arqs <- sapply(nm, download_pdf_ano_mes_foro, ano, mes, foro, path, r, l)
      return(arqs)
    #}
    #return('ja foi')
  })
  return('erro')
}

#' @export
download_pdf_ano_mes_foro <- function(unid, ano, mes, foro, path, r, l) {
  #cat('\n', ano, mes, foro, unid, '\n')
  u <- stringr::str_trim(tolower(gsub(' +', ' ', gsub('[^A-Z0-9 ]', ' ', unid))))
  u <- gsub(' +', '-', u)
  arq <- sprintf('%s/%s_%s_%s_%s_%s.pdf',
                 path, ano,
                 sprintf('%02d', as.numeric(mes)),
                 gsub(' +', '-', tolower(foro)),
                 u,
                 sprintf('%08d', as.integer(runif(1, 0, 99999999))))
  aux <- gsub('.+//|_[^_]+\\.pdf', '', arq)
  if(!aux %in% l) {
    cat('\n', aux, '\n')
    r <- lista_unid(r, ano, mes, foro, unid)
    r <- baixa_pdf(r, ano, mes, foro, unid)
    writeBin(httr::content(r, 'raw'), arq)
  }
  return(arq)
}

#' @export
pega_foro <- function(n, full = FALSE) {
  link2 <- 'http://www.tjsp.jus.br/Institucional/CanaisComunicacao/Transparencia/Produtividade/WebServices/Foro.asmx/ListarForosParaRadComboBox'
  nomes <- httr::POST(link2, httr::content_type_json(), httr::accept_json(), 
                      body = sprintf('{context: {Text: "", NumberOfItems: %d}}', n))
  l <- jsonlite::fromJSON(httr::content(nomes, 'text'))
  if(full) return(l)
  d <- l$d$Items
  d$Attributes <- NULL
  return(d)
}

#' @export
pega_foros <- function() {
  maximo <- lista_comarca(0, TRUE)$d$Message
  maximo <- as.numeric(gsub('[^0-9]', '', strsplit(maximo, 'total de ')[[1]][2]))
  d <- dplyr::bind_rows(lapply(seq(0, maximo, 10), lista_comarca))
  d
}

#' @export
pega_magistrado <- function(n, full = FALSE) {
  link2 <- 'http://www.tjsp.jus.br/Institucional/CanaisComunicacao/Transparencia/Produtividade/WebServices/Magistrado.asmx/ListarMagistradosParaRadComboBox'
  nomes <- httr::POST(link2, httr::content_type_json(), httr::accept_json(), 
                      body = sprintf('{context: {Text: "", NumberOfItems: %d}}', n))
  l <- jsonlite::fromJSON(httr::content(nomes, 'text'))
  if(full) return(l)
  d <- l$d$Items
  d$Attributes <- NULL
  return(d)
}

#' @export
pega_magistrados <- function() {
  maximo <- lista_magistrado(0, TRUE)$d$Message
  maximo <- as.numeric(gsub('[^0-9]', '', strsplit(maximo, 'total de ')[[1]][2]))
  d <- dplyr::bind_rows(lapply(seq(0, maximo, 10), lista_magistrado))
  d
}

#' Lista todos os foros, anos, e meses do TJSP
#' 
#' @export
monta_foro_ano_mes <- function() {
  data(foros)
  m <- expand.grid(2011:2015, 1:12, foros$Text)
  names(m) <- c('ano', 'mes', 'foro')
  m <- dplyr::filter(m, (ano %in% 2012:2014) | 
                       (ano == 2011 & mes >= 09) | 
                       (ano == 2015 & mes <= 02))
  m <- dplyr::arrange(m, ano, mes, foro)
  d <- data.frame(lapply(m, as.character), stringsAsFactors = FALSE)
  names(d) <- c('ano', 'mes', 'foro')
  d <- dplyr::inner_join(d, foros, c('foro' = 'Text'))
  names(d) <- tolower(names(d))
  d <- dplyr::tbl_df(d)
  d
}

#' @export
lista_mes <- function(r, ano, mes) {
  link <- 'http://www.tjsp.jus.br/Institucional/CanaisComunicacao/Transparencia/Produtividade/Default.aspx'
  vs <- rvest::html_attr(rvest::html_node(rvest::html(r), '#__VIEWSTATE'), 'value')
  ev <- rvest::html_attr(rvest::html_node(rvest::html(r), '#__EVENTVALIDATION'), 'value')
  vg <- rvest::html_attr(rvest::html_node(rvest::html(r), '#__VIEWSTATEGENERATOR'), 'value')
  dados <- list(
    '__EVENTTARGET' = 'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$ddlMes',
    '__EVENTARGUMENT' = '',
    '__LASTFOCUS' = '',
    '__VIEWSTATE' = vs,
    '__VIEWSTATEGENERATOR' = vg,
    '__EVENTVALIDATION' = ev,
    'ctl00$ctl00$Buscador1$txtCampoBusca_text' = 'Pesquisar',
    'ctl00$ctl00$Buscador1$txtCampoBusca' = '',
    'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$ddlAno' = ano,
    'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$ddlMes' = mes,
    'ctl00_ctl00_cphConteudoGeral_ContentPlaceHolder1_btnMagistrados_ClientState' = '',
    'ctl00_ctl00_cphConteudoGeral_ContentPlaceHolder1_btnUnidades_ClientState' = '',
    'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$rcbForoOuMagistrado' = 'Digite o nome do Foro...',
    'ctl00_ctl00_cphConteudoGeral_ContentPlaceHolder1_rcbForoOuMagistrado_ClientState' = '')
  r <- httr::POST(link, body = dados)
  return(r)
}

#' @export
lista_ano <- function(ano) {
  link <- 'http://www.tjsp.jus.br/Institucional/CanaisComunicacao/Transparencia/Produtividade/Default.aspx'
  r0 <- httr::GET(link)
  vs <- rvest::html_attr(rvest::html_node(rvest::html(r0), '#__VIEWSTATE'), 'value')
  ev <- rvest::html_attr(rvest::html_node(rvest::html(r0), '#__EVENTVALIDATION'), 'value')
  vg <- rvest::html_attr(rvest::html_node(rvest::html(r0), '#__VIEWSTATEGENERATOR'), 'value')
  dados <- list(
    '__EVENTTARGET' = 'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$ddlAno',
    '__EVENTARGUMENT' = '',
    '__LASTFOCUS' = '',
    '__VIEWSTATE' = vs,
    '__VIEWSTATEGENERATOR' = vg,
    '__EVENTVALIDATION' = ev,
    'ctl00$ctl00$Buscador1$txtCampoBusca_text' = 'Pesquisar',
    'ctl00$ctl00$Buscador1$txtCampoBusca' = '',
    'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$ddlAno' = ano,
    'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$ddlMes' = '0',
    'ctl00_ctl00_cphConteudoGeral_ContentPlaceHolder1_btnMagistrados_ClientState' = '',
    'ctl00_ctl00_cphConteudoGeral_ContentPlaceHolder1_btnUnidades_ClientState' = '',
    'ctl00_ctl00_cphConteudoGeral_ContentPlaceHolder1_rcbForoOuMagistrado_ClientState' = '')
  r <- httr::POST(link, body = dados)
  return(r)
}

#' @export
lista_foro <- function(r, ano, mes, cod, comarca) {
  link <- 'http://www.tjsp.jus.br/Institucional/CanaisComunicacao/Transparencia/Produtividade/Default.aspx'
  vs <- rvest::html_attr(rvest::html_node(rvest::html(r), '#__VIEWSTATE'), 'value')
  ev <- rvest::html_attr(rvest::html_node(rvest::html(r), '#__EVENTVALIDATION'), 'value')
  vg <- rvest::html_attr(rvest::html_node(rvest::html(r), '#__VIEWSTATEGENERATOR'), 'value')
  arg <- sprintf('{"logEntries":[],"value":"%s","text":"%s","enabled":true,"checkedIndices":[],"checkedItemsTextOverflows":false}', 
                 cod, comarca)
  dados <- list(
    '__EVENTTARGET' = 'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$rcbForoOuMagistrado',
    '__EVENTARGUMENT' = '{"Command":"Select","Index":1}',
    '__LASTFOCUS' = '',
    '__VIEWSTATE' = vs,
    '__VIEWSTATEGENERATOR' = vg,
    '__EVENTVALIDATION' = ev,
    'ctl00$ctl00$Buscador1$txtCampoBusca_text' = 'Pesquisar',
    'ctl00$ctl00$Buscador1$txtCampoBusca' = '',
    'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$ddlAno' = ano,
    'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$ddlMes' = mes,
    'ctl00_ctl00_cphConteudoGeral_ContentPlaceHolder1_btnMagistrados_ClientState' = '',
    'ctl00_ctl00_cphConteudoGeral_ContentPlaceHolder1_btnUnidades_ClientState' = '',
    'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$rcbForoOuMagistrado' = comarca,
    'ctl00_ctl00_cphConteudoGeral_ContentPlaceHolder1_rcbForoOuMagistrado_ClientState' = arg,
    'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$rcbUnidade' = 'Selecione a unidade...',
    'ctl00_ctl00_cphConteudoGeral_ContentPlaceHolder1_rcbUnidade_ClientState' = '')
  r <- httr::POST(link, body = dados)
  return(r)
}

#' @export
lista_unid <- function(r, ano, mes, comarca, unid) {
  link <- 'http://www.tjsp.jus.br/Institucional/CanaisComunicacao/Transparencia/Produtividade/Default.aspx'
  vs <- rvest::html_attr(rvest::html_node(rvest::html(r), '#__VIEWSTATE'), 'value')
  ev <- rvest::html_attr(rvest::html_node(rvest::html(r), '#__EVENTVALIDATION'), 'value')
  vg <- rvest::html_attr(rvest::html_node(rvest::html(r), '#__VIEWSTATEGENERATOR'), 'value')
  arg <- sprintf('{"logEntries":[],"value":"","text":"%s","enabled":true,"checkedIndices":[],"checkedItemsTextOverflows":false}', 
                 unid)
  dados <- list(
    '__EVENTTARGET' = 'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$rcbUnidade',
    '__EVENTARGUMENT' = '{"Command":"Select","Index":1}',
    '__LASTFOCUS' = '',
    '__VIEWSTATE' = vs,
    '__VIEWSTATEGENERATOR' = vg,
    '__EVENTVALIDATION' = ev,
    'ctl00$ctl00$Buscador1$txtCampoBusca_text' = 'Pesquisar',
    'ctl00$ctl00$Buscador1$txtCampoBusca' = '',
    'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$ddlAno' = ano,
    'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$ddlMes' = mes,
    'ctl00_ctl00_cphConteudoGeral_ContentPlaceHolder1_btnMagistrados_ClientState' = '',
    'ctl00_ctl00_cphConteudoGeral_ContentPlaceHolder1_btnUnidades_ClientState' = '',
    'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$rcbForoOuMagistrado' = comarca,
    'ctl00_ctl00_cphConteudoGeral_ContentPlaceHolder1_rcbForoOuMagistrado_ClientState' = '',
    'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$rcbUnidade' = unid,
    'ctl00_ctl00_cphConteudoGeral_ContentPlaceHolder1_rcbUnidade_ClientState' = arg)
  r <- httr::POST(link, body = dados)
  return(r)
}

#' @export
baixa_pdf <- function(r, ano, mes, comarca, unid) {
  link <- 'http://www.tjsp.jus.br/Institucional/CanaisComunicacao/Transparencia/Produtividade/Default.aspx'
  vs <- rvest::html_attr(rvest::html_node(rvest::html(r), '#__VIEWSTATE'), 'value')
  ev <- rvest::html_attr(rvest::html_node(rvest::html(r), '#__EVENTVALIDATION'), 'value')
  vg <- rvest::html_attr(rvest::html_node(rvest::html(r), '#__VIEWSTATEGENERATOR'), 'value')
  arg <- sprintf('{"logEntries":[],"value":"","text":"%s","enabled":true,"checkedIndices":[],"checkedItemsTextOverflows":false}', 
                 unid)
  dados <- list(
    '__EVENTTARGET' = 'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$rcbUnidade',
    '__EVENTARGUMENT' = '{"Command":"Select","Index":1}',
    '__LASTFOCUS' = '',
    '__VIEWSTATE' = vs,
    '__VIEWSTATEGENERATOR' = vg,
    '__EVENTVALIDATION' = ev,
    'ctl00$ctl00$Buscador1$txtCampoBusca_text' = 'Pesquisar',
    'ctl00$ctl00$Buscador1$txtCampoBusca' = '',
    'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$ddlAno' = ano,
    'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$ddlMes' = mes,
    'ctl00_ctl00_cphConteudoGeral_ContentPlaceHolder1_btnMagistrados_ClientState' = '',
    'ctl00_ctl00_cphConteudoGeral_ContentPlaceHolder1_btnUnidades_ClientState' = '',
    'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$rcbForoOuMagistrado' = comarca,
    'ctl00_ctl00_cphConteudoGeral_ContentPlaceHolder1_rcbForoOuMagistrado_ClientState' = '',
    'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$rcbUnidade' = unid,
    'ctl00_ctl00_cphConteudoGeral_ContentPlaceHolder1_rcbUnidade_ClientState' = '',
    'ctl00$ctl00$cphConteudoGeral$ContentPlaceHolder1$btnClicar' = 'Gerar relatório')
  r <- httr::POST(link, body = dados, httr::accept('application/pdf'))
  return(r)
}


#' PDF para texto
#' 
#' @export
pdf2txt <- function() {
  
}

#' Parse produtividade vara
#' 
#' @export
parse_prod_vara <- function(a) {
  
}

#' Parse produtividade varas
#' 
#' @export
parse_prod_varas <- function(l) {
  
}

#' Parse produtividade magistrado
#' 
#' @export
parse_prod_mag <- function(a) {
  
}


#' Parse produtividade magistrados
#' 
#' @export
parse_prod_mags <- function(l) {
  
}
jtrecenti/prodtjsp documentation built on May 20, 2019, 3:17 a.m.