knitr::opts_chunk$set(eval=FALSE)

Download

r <- download_rfb('~/data-raw/decryptr/rfb', n = 65)
tirar_duplicados <- function(arqs) {
  which_dupe <- arqs %>% 
    basename() %>% 
    stringr::str_extract('[a-z0-9]+') %>% 
    tibble::enframe() %>% 
    janitor::get_dupes(value) %>% 
    dplyr::distinct(value) %>% 
    dplyr::pull() %>% 
    glue::collapse('|')
  arqs[!stringr::str_detect(basename(arqs), which_dupe)]
}

'~/data-raw/decryptr/rfb' %>% 
  dir(full.names = TRUE) %>% 
  tirar_duplicados() %>% 
  read_captcha() %>% 
  classify()
library(decryptr)
classify_dbc_one <- function(arq, user, pass) {
  base64 <- arq %>% 
    readr::read_file_raw() %>% 
    base64enc::base64encode() %>% 
    sprintf(fmt = 'base64:%s', .)
  captcha_data <- list(username = user, password = pass, captchafile = base64)
  url_captcha <- 'http://api.dbcapi.me/api/captcha'
  r_captcha <- httr::POST(url_captcha, body = captcha_data)
  if (httr::status_code(r_captcha) == 200) {
    ct <- httr::content(r_captcha)
    arq_captcha <- decryptr::read_captcha(arq)
    if (ct$is_correct) {
      decryptr::classify(arq_captcha, answer = ct$text)
    } else {
      decryptr::classify(arq_captcha, answer = sprintf('%s_WRONG', ct$text))
    }
  }
  invisible(TRUE)
}
classify_dbc <- function(arqs, user, pass) {
  n <- length(arqs)
  safe_classify_dbc_one <- purrr::possibly(classify_dbc_one, FALSE)
  p <- progress::progress_bar$new(total = n)
  result <- purrr::map_lgl(arqs, ~{
    result <- safe_classify_dbc_one(.x, user, pass)
    p$tick()
    result
  })
  result
}
library(decryptr)
x <- file.rename(arqs, sprintf('%s/%s', dirname(arqs), tolower(basename(arqs))))

arqs <- '~/decryptr/captchaReceitaData/inst/img' %>% 
  dir(full.names = TRUE, pattern = '_[a-z0-9A-Z]+\\.png$')

library(decryptr)
dest_dir <- '~/decryptr/captchaReceitaData/inst/img'
classified_captchas <- dest_dir %>% 
  dir(full.names = TRUE, pattern = '_') %>% 
  magrittr::extract(file.size(.) > 0) %>% 
  stringr::str_subset('_[a-z0-9A-Z]{6}\\.png$') %>% 
  read_captcha()

prepared_rfb <- prepare(classified_captchas)
saveRDS(prepared_rfb, '~/decryptr/decryptr/vignettes/prepared_rfb.rds')


marceloturim/decryptr documentation built on May 14, 2019, 5:26 p.m.