R/read.R

Defines functions read_halo_gamertags read_halo_tournaments read_halo_teams read_halo_rosters read_halo_players read_halo_brackets read_gh_csv read_gh_rds rds_from_url export_csv import_csv import_bad_urls

Documented in read_halo_brackets read_halo_gamertags read_halo_players read_halo_rosters read_halo_teams read_halo_tournaments

#' @importFrom memoise memoise
.import_bad_urls <- memoise::memoise({function() {
  import_csv('data-raw/bad_urls.csv')
}})

import_bad_urls <- function(entity) {
  bad_urls <- .import_bad_urls()
  bad_urls %>% 
    dplyr::filter(.data$entity == !!entity) %>% 
    dplyr::select(-.data$entity)
}

import_csv <- function(..., .show_col_types = FALSE) {
  readr::read_csv(show_col_types = .show_col_types, ...)
}

export_csv <- function(..., .na = '') {
  readr::write_csv(na = .na, ...)
}

# Reference: https://github.com/nflverse/nflreadr/blob/main/R/from_url.R
rds_from_url <- function(url) {
  con <- base::url(url)
  on.exit(close(con))
  load <- try(readRDS(con), silent = TRUE)
  
  if (inherits(load, 'try-error')) {
    warning(paste0('Failed to `readRDS()` from <', url, '>'), call. = FALSE)
    return(tibble::tibble())
  }
  tibble::as_tibble(load)
}

base_gh_path <- 'https://github.com/tonyelhabr/halo-data/raw/master/data'
read_gh_rds <- function(x) {
  url <- sprintf('%s/%s.rds', base_gh_path, x)
  res <- url %>% rds_from_url()
  cli::cli_alert_success(
    sprintf('Imported data from %s.', url)
  )
  res
}

read_gh_csv <- function(x) {
  url <- sprintf('%s/%s.csv', base_gh_path, x)
  res <- url %>% import_csv()
  cli::cli_alert_success(
    sprintf('Imported data from %s.', url)
  )
  res
}

#' Read in professional Halo bracket data
#' 
#' @export
#' @source <https://liquipedia.net>
read_halo_brackets <- function() {
  read_gh_rds('brackets')
}

#' Read in professional Halo player data
#' 
#' @export
#' @source <https://liquipedia.net>
read_halo_players <- function() {
  read_gh_rds('players')
}

#' Read in professional Halo roster data
#' 
#' @export
#' @source <https://liquipedia.net>
read_halo_rosters <- function() {
  read_gh_csv('rosters')
}

#' Read in professional Halo team data
#' 
#' @export
#' @source <https://liquipedia.net>
read_halo_teams <- function() {
  read_gh_csv('teams')
}

#' Read in professional Halo tournament data
#' 
#' Note that this CSV may not cover all the tournaments implied by the brackets
#' 
#' @export
#' @source <https://liquipedia.net>
read_halo_tournaments <- function() {
  read_gh_csv('tournaments')
}

#' Read in professional Halo team data
#' 
#' @export
#' @source <https://halodatahive.com>
read_halo_gamertags <- function() {
  read_gh_csv('gamertags')
}
tonyelhabr/misterchiefdata documentation built on Jan. 2, 2022, 8:14 p.m.