#' 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)
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.