#' get data from br api
#'
#' @param sport chr
#' @param save_path chr
#' @param sleep_time num
#' @return list
#' @export
get_betrivers_data <- function(sport, save_path = NULL, sleep_time = 0) {
# set the group_id_code by sport
if (sport == 'mlb') group_id_code <- 1000093616
if (sport == 'nba') group_id_code <- 1000093652
if (sport == 'nfl') group_id_code <- 1000093656
# make the main sport query
main_URI <- 'https://il.betrivers.com/api/service/sportsbook/offering/listview/events'
hdrs <- c(
'User-Agent'='Chrome',
'Accept'='*/*'
)
# set the query params
main_query <- list('t'= '',
'pageNr'='1',
'cageCode'='847',
'groupId'=group_id_code,
'type'='prematch',
'pageSize'='20')
main_ret <- httr::GET(main_URI,
query = main_query,
httr::add_headers(.headers = hdrs))
main_content <- jsonlite::fromJSON(httr::content(main_ret, 'text', encoding = 'UTF-8'))
items <- main_content$items
event_ids <- unique(items$id)
if (length(event_ids) == 0) stop('no events for selected sport')
# loop through the event_ids and get event-level (game-specific) jsons
event_list <- list()
for (e in event_ids) {
# sleep to be nice
Sys.sleep(sleep_time)
# make the json string using the event_id, then grab the json
event_URI <- 'https://il.betrivers.com/api/service/sportsbook/offering/listview/details'
event_query <- list('t'='',
'cageCode'='847',
'eventId'=e)
event_ret <- httr::GET(event_URI,
query = event_query,
httr::add_headers(.headers = hdrs))
event_content <- jsonlite::fromJSON(httr::content(event_ret, 'text', encoding = 'UTF-8'))
event_list[[as.character(e)]] <- event_content
}
# save em if you got em
if (!is.null(save_path)) {
fn <- paste0(sport, '_betrivers_', e, '_', as.numeric(Sys.time()), '.json')
jsonlite::write_json(event_list, file.path(save_path, fn))
R.utils::gzip(file.path(save_path, fn), ext='gz')
}
# return as a list of lists (yikes!)
return(event_list)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.