R/get_betrivers_data.R

Defines functions get_betrivers_data

Documented in get_betrivers_data

#' 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)
}
jimtheflash/betfinder documentation built on Dec. 6, 2023, 5:58 a.m.