From 764cd0a4267da9d6009ab97aa43c6b0415dd228f Mon Sep 17 00:00:00 2001 From: wlangera Date: Tue, 27 Feb 2024 14:17:54 +0100 Subject: [PATCH 1/3] download from google drive if necessary --- .../bookdown/mas_uitrol_vlaanderen/index.Rmd | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/source/bookdown/mas_uitrol_vlaanderen/index.Rmd b/source/bookdown/mas_uitrol_vlaanderen/index.Rmd index 9ff6ac8..d61d0ed 100644 --- a/source/bookdown/mas_uitrol_vlaanderen/index.Rmd +++ b/source/bookdown/mas_uitrol_vlaanderen/index.Rmd @@ -109,3 +109,32 @@ if (interactive()) { ) } ``` + +```{r googledrive, include = FALSE} +# authenticatie google drive +library(googledrive) +googledrive::drive_auth(email = "*@inbo.be") + +# source functie om figuren te downloaden van google drive +source("../../R/include_from_drive.R") + +# google drive verwijzing naar figuren +sdf <- shared_drive_find("PRJ_MBAG") %>% + drive_ls(pattern = "4a_mas", type = "folder") %>% + drive_ls(pattern = "rapporten", type = "folder") %>% + drive_ls(pattern = "mas_uitrol_vlaanderen", type = "folder") %>% + drive_ls(pattern = "media", type = "folder") + +figs <- sdf %>% + drive_ls(recursive = TRUE, type = c("pdf", "jpg", "png")) %>% + drive_reveal(what = "webViewLink") %>% + drive_reveal(what = "webContentLink") %>% + drive_reveal(what = "path") %>% + drive_reveal(what = "fileExtension") + +# get figures from google drive +# set overwrite = TRUE if necessary! +for (file_name in figs$name) { + include_from_drive(name = file_name, figures = figs, overwrite = FALSE) +} +``` From cb2aedb5df1f27412fccae75ced88a6b14561c76 Mon Sep 17 00:00:00 2001 From: wlangera Date: Tue, 27 Feb 2024 14:18:09 +0100 Subject: [PATCH 2/3] function to download figures from drive --- source/R/include_from_drive.R | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 source/R/include_from_drive.R diff --git a/source/R/include_from_drive.R b/source/R/include_from_drive.R new file mode 100644 index 0000000..2bdc183 --- /dev/null +++ b/source/R/include_from_drive.R @@ -0,0 +1,27 @@ +# Functie om bestanden van google drive te downloaden (voor rapporten) +include_from_drive <- function(name, figures = figs, overwrite = FALSE, ...) { + common_part <- fs::path_common(figures$path) + the_fig <- figures[figures$name == name, ] + full_path <- the_fig$path + rel_path <- fs::path_rel(full_path, common_part) + local_path <- fs::path("media", rel_path) + # maak de folderstructuur als deze nog niet bestaat + fs::dir_create(fs::path_dir(local_path)) + # met overwrite = FALSE, zal de functie een error geven als de file al bestaat + # daarom twee gevallen toelaten: + # 1: overwrite = TRUE + if (overwrite) { + df <- drive_download( + file = the_fig, + path = local_path, + overwrite = overwrite) + } + # 2: bestand bestaat nog niet, download het + if (!file.exists(local_path)) { + df <- drive_download( + file = the_fig, + path = local_path, + overwrite = overwrite) + } + knitr::include_graphics(local_path, ...) +} From cf1d2629f27e00ad85f741dcb05dad4bfd3ce85a Mon Sep 17 00:00:00 2001 From: wlangera Date: Tue, 27 Feb 2024 14:19:26 +0100 Subject: [PATCH 3/3] loop if multiple files with same name --- source/R/include_from_drive.R | 39 +++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/source/R/include_from_drive.R b/source/R/include_from_drive.R index 2bdc183..9775a7f 100644 --- a/source/R/include_from_drive.R +++ b/source/R/include_from_drive.R @@ -5,23 +5,26 @@ include_from_drive <- function(name, figures = figs, overwrite = FALSE, ...) { full_path <- the_fig$path rel_path <- fs::path_rel(full_path, common_part) local_path <- fs::path("media", rel_path) - # maak de folderstructuur als deze nog niet bestaat - fs::dir_create(fs::path_dir(local_path)) - # met overwrite = FALSE, zal de functie een error geven als de file al bestaat - # daarom twee gevallen toelaten: - # 1: overwrite = TRUE - if (overwrite) { - df <- drive_download( - file = the_fig, - path = local_path, - overwrite = overwrite) + + # loop indien meerdere bestanden met zelfde naam maar in andere folders + for (i in seq_along(local_path)) { + # maak de folderstructuur als deze nog niet bestaat + fs::dir_create(fs::path_dir(local_path[i])) + # met overwrite = FALSE, zal de functie een error geven als de file al bestaat + # daarom twee gevallen toelaten: + # 1: overwrite = TRUE + if (overwrite) { + df <- drive_download( + file = the_fig[i, ], + path = local_path[i], + overwrite = overwrite) + } + # 2: bestand bestaat nog niet, download het + if (!file.exists(local_path[i])) { + df <- drive_download( + file = the_fig[i, ], + path = local_path[i], + overwrite = overwrite) + } } - # 2: bestand bestaat nog niet, download het - if (!file.exists(local_path)) { - df <- drive_download( - file = the_fig, - path = local_path, - overwrite = overwrite) - } - knitr::include_graphics(local_path, ...) }