Select Git revision
lies_aktuellen_stand.R
lies_aktuellen_stand.R 14.84 KiB
# lies_aktuellen_stand.R
#
# Enthält die Funktion zum Lesen der aktuellen Daten.
#---- Hilfsfunktionen ----
hole_daten <- function(stand_url,a_directory = "daten", copy=TRUE) {
#' Schreibt das Dataframe mit den zuletzt geholten Stimmbezirks-Daten
#' als Sicherungskopie in das angegebene Verzeichnis
#'
if (!dir.exists(a_directory)) {
dir.create(a_directory)
}
if (copy) {
fname = paste0(a_directory,"/",
str_replace_all(now(),"\\:","") %>% str_sub(1,15),
".csv")
} else {
fname = "livedaten/tmp.csv"
if (file.exists(fname)) { file.remove(fname)}
}
# Bei Internet-Adresse: Daten aus dem Netz in den lokalen Ordner kopieren
if (str_detect(stand_url,"^http")) {
check = tryCatch(
{
# Einmal Daten einlesen
utils::download.file(stand_url,fname)
},
warning = function(w) {teams_warning(w,title=paste0(wahl_name,": Daten von ",stand_url," kopieren"))},
error = function(e) {teams_warning(e,title=paste0(wahl_name,": Kann Daten nicht von ",stand_url,
" kopieren nach ",fname))}
)
} else {
R.utils::copyFile(stand_url,fname)
}
# Jetzt vom lokalen Laufwerk einlesen
check = tryCatch(
{
tmp_df <-read_csv2(fname,
locale = locale(date_names = "de",
decimal_mark = ",",
grouping_mark = "."),
col_types=list(
`Wahlkreis gewonnen: Name` = col_character(),
`Wahlkreis gewonnen: Vorname` = col_character(),
`Wahlkreis gewonnen: Titel` = col_character(),
`Wahlkreis gewonnen: Wahlvorschlag` = col_character(),
`Letzte Änderung` = col_character(),
freigegeben = col_double(),
`Nummer aufnehmender Wahlbezirk` = col_character(),
`Name aufnehmender Wahlbezirk` = col_character(),
`Aufnahme Wahlbezirk` = col_double()
),
trim_ws = TRUE,
skip =1)
},
warning = function(w) {teams_warning(w,title=paste0(wahl_name,": Datenakquise - Warnung beim Einlesen von ",fname))},
error = function(e) {teams_warning(e,title=paste0(wahl_name,": Datenakquise - Fehler beim Einlesen von ",fname))}
)
if (file.exists("livedaten/tmp.csv")) { file.remove("livedaten/tmp.csv")}
return(tmp_df)
}
hole_letztes_df <- function(a_directory = "daten") {
#' Schaut im angegebenen Verzeichnis nach der zuletzt angelegten Datei
#' und holt die Daten zurück in ein df
if (!dir.exists(a_directory)) return(tibble())
# Die zuletzt geschriebene Datei finden und einlesen
neuester_file <- list.files(a_directory, full.names=TRUE) %>%
file.info() %>%