parse_pointsbet_data <- function(pointsbet_data, sport = NULL, prop = FALSE, game_lines = FALSE, exclude_live = TRUE, exclude_alts = FALSE) {
# loop through the pointsbet events to extract props
output_list <- list()
for (game_event in pointsbet_data) {
# nuke live games if specified, which is the default
if (exclude_live) {
status <- game_event$isLive
if (status == TRUE) next
}
# check for fixed odds markets, skip if they're not there
if (!'fixedOddsMarkets' %in% names(game_event)) next
fixed_odds_markets <- game_event$fixedOddsMarkets
event_names <- fixed_odds_markets$eventName
# get game lines
if (game_lines == TRUE) {
output_list[[length(output_list) + 1]] <-
parse_pb_game_lines(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names, exclude_alts = exclude_alts)
}
# now extract correct props
if (prop %in% c('first team to score', 'ftts')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Who Scores Point 1')
}
if (prop %in% c('first shot points')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = '1st Field Goal')
}
if (prop %in% c('game made first fg')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Will the First Attempted Field Goal be Made?')
}
if (prop %in% c('game go to overtime', 'game go to ot')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Will There Be Overtime?')
}
if (prop %in% c('first player to score', 'fpts')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'First Basket')
}
# TODO: this is a relic of pb's power hour before gamestarts; if thats necessary again we'll update fpts with section
# if (prop %in% c('first player to score', 'fpts')) {
# power_hour <- try(parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
# prop_regex = '^Power Hour First Basket$'))
# if ('try-error' %in% class(power_hour) | nrow(power_hour) == 0) {
# output_list[[length(output_list) + 1]] <-
# parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
# prop_regex = '^First Basket$')
# } else {
# output_list[[length(output_list) + 1]] <- power_hour
# }
# }
if (prop %in% c('player pts alt', 'player points alt')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Pick Your Own Points')
}
if (prop %in% c('player pts ou', 'player points ou')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = '[a-z] Points Over/Under$')
}
if (prop %in% c('player rebs alt', 'player rebounds alt')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Pick Your Own Rebounds')
}
if (prop %in% c('player rebs ou', 'player rebounds ou')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = '[a-z] Rebounds Over/Under$')
}
if (prop %in% c('player asts alt', 'player assists alt')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Pick Your Own Assists')
}
if (prop %in% c('player asts ou', 'player assists ou')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = '[a-z] Assists Over/Under$')
}
if (prop %in% c('player 3pts alt', 'player three-pointers alt')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Pick Your Own Made Threes')
}
if (prop %in% c('player 3pts ou', 'player three-pointers ou')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = '[a-z] Threes Over/Under$')
}
if (prop %in% c('player to hit home run', 'player to hit hr')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Player To Hit [Aa] Home Run')
}
if (prop %in% c('player strikeouts ou')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Strikeouts Over/Under$')
}
if (prop %in% c('player strikeouts alt')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Pick Your Own - Pitcher Strikeouts')
}
if (prop %in% c('player total bases alt')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Pick Your Own - Player Total Bases')
}
if (prop %in% c('player hits alt')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Pick Your Own - Player Hits')
}
if (prop %in% c('player pts+reb+ast ou')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Pts \\+ Rebs \\+ Asts Over/Under')
}
if (prop %in% c('player pts+reb ou')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Points \\+ Rebounds Over/Under')
}
if (prop %in% c('player pts+ast ou')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Points \\+ Assists Over/Under')
}
if (prop %in% c('player reb+ast ou')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Assists \\+ Rebounds Over/Under')
}
if (prop %in% c('player double double')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Double-Double')
}
if (prop %in% c('player triple double')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Triple-Double')
}
if (prop %in% c('player first td')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = '^First Touchdown Scorer$')
}
if (prop %in% c('player any td')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = '^Anytime Touchdown Scorer$')
}
if (prop %in% c('player pass atts ou')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Pass Attempts$')
}
if (prop %in% c('player pass yds ou')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Passing Yards$')
}
if (prop %in% c('player pass yds tiers')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Quarterback To Get')
}
if (prop %in% c('player pass tds ou')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Passing Touchdowns$')
}
if (prop %in% c('player rec yds ou')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Receiving Yards$')
}
if (prop %in% c('player rush yds ou')) {
output_list[[length(output_list) + 1]] <-
parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names,
prop_regex = 'Rushing Yards$')
}
}
# if output_list is empty, error, else return as a data.frame
if (!'output_list' %in% ls()) stop('no pointsbet ', prop, ' props returned')
if (length(output_list) == 0 & game_lines == FALSE) stop('no pointsbet ', prop, ' props returned')
if (length(output_list) == 0 & game_lines == TRUE) stop('no pointsbet game lines returned')
output_df <- dplyr::bind_rows(output_list)
return(output_df)
}
parse_pb_prop <- function(game_event, fixed_odds_markets, event_names, prop_name = NULL, prop_regex = NULL) {
if (!is.null(prop_name)) {
elements <- which(event_names == prop_name)
} else {
elements <- which(grepl(prop_regex, event_names))
}
selected_markets <- fixed_odds_markets[elements, ]
outcomes <- selected_markets$outcomes
output_df <- as.data.frame(outcomes)
if (nrow(output_df) == 0) return()
output_df$matchup <- game_event$name
output_df$tipoff <- game_event$startsAt
return(output_df)
}
parse_pb_game_lines <- function(game_event, fixed_odds_markets, event_names, exclude_alts) {
if (exclude_alts) {
game_lines <- c('Point Spread', 'Moneyline', 'Total')
} else {
game_lines <- c('Point Spread', 'Moneyline', 'Total', 'Pick Your Own Line', 'Alternate Totals')
}
main_output_list <- list()
for (i in game_lines) {
mo <- try(parse_pb_prop(game_event = game_event, fixed_odds_markets = fixed_odds_markets, event_names = event_names, prop_name = i))
if ('try-error' %in% class(mo)) next
main_output_list[[length(main_output_list) + 1]] <- mo
}
output_df <- dplyr::bind_rows(main_output_list)
return(output_df)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.