#' @title Download PatentsView Data Files
#' @description Download one or more PatentsView raw files using urls from a meta data table
#' created by \code{pv_meta()}
#' @param url url of the file to download
#' @param dest destination for the files
#' @param timeout time window for download
#' @importFrom usethis ui_info
#' @importFrom usethis ui_value
#' @importFrom glue glue
#' @importFrom purrr safely
#' @importFrom purrr walk2
#' @importFrom purrr walk
#' @return
#' @export
#' @examples \dontrun{pv_download(grant_meta$url[1], dest = "grants", timeout = 600)}
pv_download <- function(url = NULL, dest = NULL, timeout = 600) {
if(!is.null(dest)) {
if (!dir.exists(dest)){
dir.create(dest)
ui_info("{ui_value(dest)} dir created")
} else {
ui_info("{ui_value(dest)} dir exists")
}
}
bname <- basename(url)
dest <- glue('{dest}/{bname}')
# safely code kindly provided by [Matt
# Herman](https://community.rstudio.com/t/download-multiple-files-using-download-file-function-while-skipping-broken-links-with-walk2/51222)
# in answer to a question on the RStudio community.
# create a variable sleep option
options(timeout = timeout)
safe_download <- safely(~ download.file(.x , .y, mode = "auto"))
if (!is.null(dest)) {
walk2(url, dest, safe_download)
} else {
walk(url, safe_download)
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.