R/get_draftkings_data.R

Defines functions get_draftkings_data

Documented in get_draftkings_data

#' get data from dk api
#'
#' @param sport chr
#' @param save_path chr
#' @param sleep_time num
#' @return list
#' @export
get_draftkings_data <- function(sport, save_path = NULL, sleep_time = 0) {

  # set the eventgroup based on the sport
  if (sport == 'mlb') eg <- 84240
  if (sport == 'nba') eg <- 42648
  if (sport == 'nfl') eg <- 88808
  if (sport == 'nhl') eg <- 42133

  # get the big ol' json from dk - this has all the nba markets
  main_URI <- paste0('https://sportsbook-us-il.draftkings.com//sites/US-IL-SB/api/v5/eventgroups/', eg)
  hdrs <- c(
    'User-Agent'='Chrome',
    'Accept'='*/*'
  )
  qry <- list(
    'format'='json'
  )

  # GET THAT DATA
  main_ret <- httr::GET(main_URI,
                        query = qry,
                        httr::add_headers(.headers = hdrs))
  main_content <- jsonlite::fromJSON(httr::content(main_ret, 'text', encoding = 'UTF-8'))

  # get a list of all the events that we could bet on for that sport
  eventGroup <- main_content$eventGroup
  events <- eventGroup$events
  event_ids <- unique(events$eventId)

  # loop through all the event ids and grab the event json
  event_list <- list()
  for (e in event_ids) {
    Sys.sleep(sleep_time)
    event_uri <- paste0('https://sportsbook-us-il.draftkings.com//sites/US-IL-SB/api/v3/event/', e)
    event_query <- list(
      format = list('json'))
    game_event <- get_content(event_uri, event_query)
    event_list[[as.character(e)]] <- game_event
  }
  if (!is.null(save_path)) {
    fn <- paste0(sport, '_draftkings_', 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
  return(event_list)
}
jimtheflash/betfinder documentation built on Dec. 6, 2023, 5:58 a.m.