R/get_props.R

Defines functions get_props

Documented in get_props

#' Get lines and odds on prop bets for popular sports from popular betting sites
#'
#' @param site \code{character} book site; support 'fanduel'/'fd', 'draftkings'/'dk', 'pointsbet'/'pb', 'betrivers'/'br', 'barstool'/'bs', 'mgm', 'caesar'/'csr'
#' @param sport \code{character} sport, e.g. 'nba'
#' @param prop \code{character} name of prop, e.g. 'first team to score'; see details for available props
#' @param raw_data \code{data.frame} defaults to NULL, but you can pass your pre-existing data.frame to be parsed
#' @param save_path \code{character} path to save jsons, if not \code{NULL}
#' @details available props include: 'player points alt', 'player points ou', 'player points tiers', 'first team to score', 'first player to score'
#' @return \code{data.frame} tidy props with tidy columns
#' @name get_props
#' @export
get_props <- function(site, sport, prop, raw_data = NULL, save_path = NULL) {

  # fix case errors for users
  site <- tolower(site)
  sport <- tolower(sport)
  prop <- tolower(prop)

  # for each site, for each sport, call the specific site wrappers
  if (site %in% c('dk', 'draftkings')) {
    if (is.null(raw_data)) {
      dk_raw <- get_draftkings_data(sport = sport, save_path = save_path)
    } else {
      dk_raw <- raw_data
      }
    dk_parsed <- parse_draftkings_data(dk_raw, sport = sport, prop = prop)
    dk_tidy <- tidyup_draftkings_data(dk_parsed, sport = sport, prop = prop)
    output_df <- dk_tidy
    output_df$timestamp <- Sys.time()
    return(output_df)
  }

  # TODO: THIS SHIT GETS CONVOLUTED NOW WITH DIFFERENT TABS AND BETS
  if (site %in% c('fd', 'fanduel')) {
    if (is.null(raw_data)) {
      if (prop %in% c('skip tabs')) {
        fd_raw <- get_fanduel_data(sport = sport, save_path = save_path)
      } else {
        fd_raw <- get_fanduel_data(sport = sport, save_path = save_path, get_tabs = TRUE)
      }
    } else {
      fd_raw <- raw_data
    }
    fd_parsed <- parse_fanduel_data(fd_raw, sport = sport, prop = prop)
    fd_tidy <- tidyup_fanduel_data(fd_parsed, sport = sport, prop = prop)
    output_df <- fd_tidy
    output_df$timestamp <- Sys.time()
    return(output_df)
  }

  if (site %in% c('pb', 'pointsbet')) {
    if (is.null(raw_data)) {
      pb_raw <- get_pointsbet_data(sport = sport, save_path = save_path)
    } else {
      pb_raw <- raw_data
    }
    pb_parsed <- parse_pointsbet_data(pb_raw, prop = prop)
    pb_tidy <- tidyup_pointsbet_data(pb_parsed, sport = sport, prop = prop)
    output_df <- pb_tidy
    output_df$timestamp <- Sys.time()
    return(output_df)
  }

  if (site %in% c('br', 'betrivers')) {
    if (is.null(raw_data)) {
      br_raw <- get_betrivers_data(sport = sport, save_path = save_path)
    } else {
      br_raw <- raw_data
    }
    br_parsed <- parse_betrivers_data(br_raw, sport = sport, prop = prop)
    br_tidy <- tidyup_betrivers_data(br_parsed, sport = sport, prop = prop)
    output_df <- br_tidy
    output_df$timestamp <- Sys.time()
    return(output_df)
  }

  if (site %in% c('bs', 'barstool')) {
    if (is.null(raw_data)) {
      bs_raw <- get_barstool_data(sport = sport, save_path = save_path)
    } else {
      bs_raw <- raw_data
    }
    bs_parsed <- parse_barstool_data(bs_raw, sport = sport, prop = prop)
    bs_tidy <- tidyup_barstool_data(bs_parsed, sport = sport, prop = prop)
    output_df <- bs_tidy
    output_df$timestamp <- Sys.time()
    return(output_df)
  }

  if (site %in% c('mgm')) {
    if (is.null(raw_data)) {
      mgm_raw <- get_mgm_data(sport = sport, save_path = save_path)
    } else {
      mgm_raw <- raw_data
    }
    mgm_parsed <- parse_mgm_data(mgm_raw, sport = sport, prop = prop)
    mgm_tidy <- tidyup_mgm_data(mgm_parsed, sport = sport, prop = prop)
    output_df <- mgm_tidy
    output_df$timestamp <- Sys.time()
    return(output_df)
  }

  if (site %in% c('csr', 'caesars')) {
    if (is.null(raw_data)) {
      csr_raw <- get_caesars_data(sport = sport, save_path = save_path)
    } else {
      csr_raw <- raw_data
    }
    csr_parsed <- parse_caesars_data(csr_raw, sport = sport, prop = prop)
    csr_tidy <- tidyup_caesars_data(csr_parsed, sport = sport, prop = prop)
    output_df <- csr_tidy
    output_df$timestamp <- Sys.time()
    return(output_df)
  }
}
jimtheflash/betfinder documentation built on Dec. 6, 2023, 5:58 a.m.