R/telecharger_fichiers_onde_annuels.R

Defines functions telecharger_fichiers_onde_annuels

Documented in telecharger_fichiers_onde_annuels

#' Télécharger les fichiers
#'
#' Cette fonction permet de télécharger les fichiers compressés mis à disposition sur le portail des données ONDE,
#'     de les stocker dans un répertoire local et de les décompresser. Il sont nommés de façon à
#'     indiquer l'année à laquelle chacun correspond. Les métadonnées (en pdf) sont stockées dans le
#'     même répertoire.
#'
#' @param url La chaîne de caractères indiquant l'url où se trouvent les fichiers annuels à télécharger.
#' @param raw_data_dir La chaîne de caractère indiquant le chemin vers le répertoire où stocker les fichiers
#'     bruts compressés + décompressés.
#'
#' @return La fonction crée un répertoire local et y dépose les fichiers annuels compressés (extension .zip)
#'     et décompressés (extension .csv).
#' @export
#' @importFrom magrittr %>%
#' @importFrom xml2 read_html
#' @importFrom rvest html_attr html_nodes
#' @importFrom stringr str_subset str_split
#' @importFrom utils download.file unzip
#'
#' @examples
#' \dontrun{
#' url_onde <- paste0("https://onde.eaufrance.fr/content/",
#' "t%C3%A9l%C3%A9charger-les-donn%C3%A9es-des-campagnes-par-ann%C3%A9e")
#'
#' telecharger_fichiers_onde_annuels(url = url_onde, raw_data_dir = 'raw_data')
#' }
telecharger_fichiers_onde_annuels <- function(url,
                                              raw_data_dir = 'raw_data') {

  # liste des URL des fichiers zippés
  zip_urls <- read_html(url) %>%
    html_nodes("*") %>%
    html_attr("href") %>%
    stringr::str_subset(".zip")

  # création du répertoire de stockage s'il n'existe pas encore
   annual_onde_files_dir <- paste(raw_data_dir, "fichiers_onde_annuels_zippes", sep = '/')
   dir.create(raw_data_dir)
   dir.create(annual_onde_files_dir, showWarnings = FALSE)

   skip_with_message = simpleError('Did not work out')

  # boucle pour télécharger et dézipper les fichiers annuels
  for(url in zip_urls) {

    zipped_year_data_file_name <- str_split(url, pattern = "/") %>%
      unlist()

    zipped_year_data_file_name <- zipped_year_data_file_name[8]

    year_data_file_path <- paste(annual_onde_files_dir, zipped_year_data_file_name, sep = '/')
    tryCatch(download.file(url, destfile = year_data_file_path),
             error = function(e) skip_with_message)

    unzip(zipfile = year_data_file_path, exdir = annual_onde_files_dir)

  }

}
PascalIrz/ondetools documentation built on March 23, 2024, 5:34 a.m.