From ec936fbfe305e1b8a2aa1b1274fdf274a17e8797 Mon Sep 17 00:00:00 2001 From: saiemgilani Date: Tue, 28 Mar 2023 10:35:44 -0400 Subject: [PATCH] `nba_scoreboardv3()` function added. hoopR loaders docs and tests added --- NAMESPACE | 1 + NEWS.md | 1 + R/load_mbb.R | 225 +++++++++++++++++++++- R/load_nba.R | 215 +++++++++++++++++++++ R/nba_data_pbp.R | 79 +++++--- R/nba_stats_cume.R | 2 +- R/nba_stats_pbp.R | 90 ++++++++- R/nba_stats_player.R | 2 +- R/nba_stats_scoreboard.R | 181 +++++++++++++++++ cran-comments.md | 1 + man/load_mbb_pbp.Rd | 61 +++++- man/load_mbb_player_box.Rd | 40 +++- man/load_mbb_schedule.Rd | 78 +++++++- man/load_mbb_team_box.Rd | 46 ++++- man/load_nba_pbp.Rd | 60 +++++- man/load_nba_player_box.Rd | 39 +++- man/load_nba_schedule.Rd | 69 ++++++- man/load_nba_team_box.Rd | 47 ++++- man/nba_data_pbp.Rd | 30 +-- man/nba_live_pbp.Rd | 2 +- man/nba_pbp.Rd | 4 +- man/nba_pbps.Rd | 45 ++++- man/nba_schedule.Rd | 1 + man/nba_scoreboard.Rd | 1 + man/nba_scoreboardv2.Rd | 1 + man/nba_scoreboardv3.Rd | 120 ++++++++++++ man/nba_todays_scoreboard.Rd | 1 + tests/testthat/test-load_mbb_pbp.R | 67 +++++++ tests/testthat/test-load_mbb_player_box.R | 46 +++++ tests/testthat/test-load_mbb_schedule.R | 84 ++++++++ tests/testthat/test-load_mbb_team_box.R | 52 +++++ tests/testthat/test-load_nba_pbp.R | 68 +++++++ tests/testthat/test-load_nba_player_box.R | 47 +++++ tests/testthat/test-load_nba_schedule.R | 77 ++++++++ tests/testthat/test-load_nba_team_box.R | 55 ++++++ tests/testthat/test-nba_data_pbp.R | 28 +-- tests/testthat/test-nba_pbp.R | 4 +- tests/testthat/test-nba_pbps.R | 4 +- tests/testthat/test-nba_scoreboardv3.R | 96 +++++++++ 39 files changed, 1987 insertions(+), 83 deletions(-) create mode 100644 man/nba_scoreboardv3.Rd create mode 100644 tests/testthat/test-load_mbb_pbp.R create mode 100644 tests/testthat/test-load_mbb_player_box.R create mode 100644 tests/testthat/test-load_mbb_schedule.R create mode 100644 tests/testthat/test-load_mbb_team_box.R create mode 100644 tests/testthat/test-load_nba_pbp.R create mode 100644 tests/testthat/test-load_nba_player_box.R create mode 100644 tests/testthat/test-load_nba_schedule.R create mode 100644 tests/testthat/test-load_nba_team_box.R create mode 100644 tests/testthat/test-nba_scoreboardv3.R diff --git a/NAMESPACE b/NAMESPACE index 28850009..63f9fe4a 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -192,6 +192,7 @@ export(nba_playoffpicture) export(nba_schedule) export(nba_scoreboard) export(nba_scoreboardv2) +export(nba_scoreboardv3) export(nba_shotchartdetail) export(nba_shotchartleaguewide) export(nba_shotchartlineupdetail) diff --git a/NEWS.md b/NEWS.md index 61c9b855..573908cc 100644 --- a/NEWS.md +++ b/NEWS.md @@ -8,6 +8,7 @@ ### **NBA Boxscore V3 (and V3-styled) Endpoints Added** +- ```nba_scoreboardv3()``` function added. - ```nba_boxscoretraditionalv3()``` function added. - ```nba_boxscoreadvancedv3()``` function added. - ```nba_boxscoremiscv3()``` function added. diff --git a/R/load_mbb.R b/R/load_mbb.R index 0fd0f3f4..2ceb57ae 100644 --- a/R/load_mbb.R +++ b/R/load_mbb.R @@ -12,12 +12,71 @@ NULL #' @param dbConnection A `DBIConnection` object, as returned by #' @param tablename The name of the play by play data table within the database #' @return Returns a tibble +#' +#' |col_name |types | +#' |:-------------------------------|:---------| +#' |id |numeric | +#' |sequence_number |character | +#' |type_id |character | +#' |type_text |character | +#' |text |character | +#' |away_score |integer | +#' |home_score |integer | +#' |period_number |integer | +#' |period_display_value |character | +#' |clock_display_value |character | +#' |scoring_play |logical | +#' |score_value |integer | +#' |team_id |character | +#' |participants_0_athlete_id |character | +#' |wallclock |character | +#' |shooting_play |logical | +#' |participants_1_athlete_id |character | +#' |season |integer | +#' |season_type |integer | +#' |away_team_id |integer | +#' |away_team_name |character | +#' |away_team_mascot |character | +#' |away_team_abbrev |character | +#' |away_team_name_alt |character | +#' |home_team_id |integer | +#' |home_team_name |character | +#' |home_team_mascot |character | +#' |home_team_abbrev |character | +#' |home_team_name_alt |character | +#' |home_team_spread |numeric | +#' |game_spread |numeric | +#' |home_favorite |logical | +#' |game_spread_available |logical | +#' |game_id |integer | +#' |qtr |integer | +#' |time |character | +#' |clock_minutes |character | +#' |clock_seconds |character | +#' |half |character | +#' |game_half |character | +#' |lag_qtr |numeric | +#' |lead_qtr |numeric | +#' |lag_game_half |character | +#' |lead_game_half |character | +#' |start_quarter_seconds_remaining |integer | +#' |start_half_seconds_remaining |integer | +#' |start_game_seconds_remaining |integer | +#' |game_play_number |integer | +#' |end_quarter_seconds_remaining |numeric | +#' |end_half_seconds_remaining |numeric | +#' |end_game_seconds_remaining |numeric | +#' |period |integer | +#' |coordinate_x |integer | +#' |coordinate_y |integer | +#' |media_id |character | +#' #' @import furrr #' @export #' @family hoopR Loader Functions #' @examples #' \donttest{ -#' load_mbb_pbp(seasons = most_recent_nba_season()) +#' load_mbb_pbp(seasons = most_recent_mbb_season()) #' } load_mbb_pbp <- function(seasons = most_recent_mbb_season(), ..., dbConnection = NULL, tablename = NULL) { @@ -63,11 +122,55 @@ NULL #' @param dbConnection A `DBIConnection` object, as returned by #' @param tablename The name of the play by play data table within the database #' @return Returns a tibble +#' +#' |col_name |types | +#' |:--------------------------------------------------------------|:---------| +#' |team_id |character | +#' |team_uid |character | +#' |team_slug |character | +#' |team_location |character | +#' |team_name |character | +#' |team_abbreviation |character | +#' |team_display_name |character | +#' |team_short_display_name |character | +#' |team_color |character | +#' |team_alternate_color |character | +#' |team_logo |character | +#' |field_goals_made_field_goals_attempted |character | +#' |field_goal_pct |character | +#' |three_point_field_goals_made_three_point_field_goals_attempted |character | +#' |three_point_field_goal_pct |character | +#' |free_throws_made_free_throws_attempted |character | +#' |free_throw_pct |character | +#' |total_rebounds |character | +#' |offensive_rebounds |character | +#' |defensive_rebounds |character | +#' |assists |character | +#' |steals |character | +#' |blocks |character | +#' |turnovers |character | +#' |team_turnovers |character | +#' |total_turnovers |character | +#' |technical_fouls |character | +#' |total_technical_fouls |character | +#' |flagrant_fouls |character | +#' |fouls |character | +#' |largest_lead |character | +#' |home_away |character | +#' |opponent_id |integer | +#' |opponent_name |character | +#' |opponent_mascot |character | +#' |opponent_abbrev |character | +#' |game_id |integer | +#' |season |integer | +#' |season_type |integer | +#' |game_date |Date | +#' #' @import furrr #' @export #' @family hoopR Loader Functions #' @examples \donttest{ -#' load_mbb_team_box(seasons = most_recent_nba_season()) +#' load_mbb_team_box(seasons = most_recent_mbb_season()) #' } load_mbb_team_box <- function(seasons = most_recent_mbb_season(), ..., dbConnection = NULL, tablename = NULL) { @@ -114,11 +217,49 @@ NULL #' @param dbConnection A `DBIConnection` object, as returned by #' @param tablename The name of the play by play data table within the database #' @return Returns a tibble +#' +#' |col_name |types | +#' |:-----------------------------|:---------| +#' |athlete_display_name |character | +#' |team_short_display_name |character | +#' |min |character | +#' |fg |character | +#' |fg3 |character | +#' |ft |character | +#' |oreb |character | +#' |dreb |character | +#' |reb |character | +#' |ast |character | +#' |stl |character | +#' |blk |character | +#' |to |character | +#' |pf |character | +#' |pts |character | +#' |starter |logical | +#' |ejected |logical | +#' |did_not_play |logical | +#' |active |logical | +#' |athlete_jersey |character | +#' |athlete_id |character | +#' |athlete_short_name |character | +#' |athlete_headshot_href |character | +#' |athlete_position_name |character | +#' |athlete_position_abbreviation |character | +#' |team_name |character | +#' |team_logo |character | +#' |team_id |character | +#' |team_abbreviation |character | +#' |team_color |character | +#' |game_id |integer | +#' |season |integer | +#' |season_type |integer | +#' |game_date |Date | +#' #' @import furrr #' @export #' @family hoopR Loader Functions #' @examples \donttest{ -#' load_mbb_player_box(seasons = most_recent_nba_season()) +#' load_mbb_player_box(seasons = most_recent_mbb_season()) #' } load_mbb_player_box <- function(seasons = most_recent_mbb_season(), ..., dbConnection = NULL, tablename = NULL) { @@ -164,11 +305,87 @@ NULL #' @param dbConnection A `DBIConnection` object, as returned by #' @param tablename The name of the play by play data table within the database #' @return Returns a tibble +#' +#' |col_name |types | +#' |:-------------------------|:---------| +#' |id |integer | +#' |uid |character | +#' |date |character | +#' |attendance |integer | +#' |time_valid |logical | +#' |neutral_site |logical | +#' |conference_competition |logical | +#' |recent |logical | +#' |start_date |character | +#' |notes_type |character | +#' |notes_headline |character | +#' |type_id |character | +#' |type_abbreviation |character | +#' |venue_id |character | +#' |venue_full_name |character | +#' |venue_address_city |character | +#' |venue_address_state |character | +#' |venue_capacity |integer | +#' |venue_indoor |logical | +#' |status_clock |numeric | +#' |status_display_clock |character | +#' |status_period |integer | +#' |status_type_id |character | +#' |status_type_name |character | +#' |status_type_state |character | +#' |status_type_completed |logical | +#' |status_type_description |character | +#' |status_type_detail |character | +#' |status_type_short_detail |character | +#' |format_regulation_periods |integer | +#' |home_id |character | +#' |home_uid |character | +#' |home_location |character | +#' |home_name |character | +#' |home_abbreviation |character | +#' |home_display_name |character | +#' |home_short_display_name |character | +#' |home_color |character | +#' |home_alternate_color |character | +#' |home_is_active |logical | +#' |home_venue_id |character | +#' |home_logo |character | +#' |home_conference_id |character | +#' |home_score |character | +#' |home_winner |logical | +#' |away_id |character | +#' |away_uid |character | +#' |away_location |character | +#' |away_name |character | +#' |away_abbreviation |character | +#' |away_display_name |character | +#' |away_short_display_name |character | +#' |away_color |character | +#' |away_alternate_color |character | +#' |away_is_active |logical | +#' |away_venue_id |character | +#' |away_logo |character | +#' |away_conference_id |character | +#' |away_score |character | +#' |away_winner |logical | +#' |game_id |integer | +#' |season |integer | +#' |season_type |integer | +#' |status_type_alt_detail |character | +#' |groups_id |character | +#' |groups_name |character | +#' |groups_short_name |character | +#' |groups_is_conference |logical | +#' |tournament_id |numeric | +#' |PBP |logical | +#' |team_box |logical | +#' |player_box |logical | +#' #' @import furrr #' @export #' @family hoopR Loader Functions #' @examples \donttest{ -#' load_mbb_schedule(seasons = most_recent_nba_season()) +#' load_mbb_schedule(seasons = most_recent_mbb_season()) #' } load_mbb_schedule <- function(seasons = most_recent_mbb_season(), ..., dbConnection = NULL, tablename = NULL) { diff --git a/R/load_nba.R b/R/load_nba.R index 5fd511f4..cf911b65 100644 --- a/R/load_nba.R +++ b/R/load_nba.R @@ -12,6 +12,66 @@ NULL #' @param dbConnection A `DBIConnection` object, as returned by #' @param tablename The name of the play by play data table within the database #' @return Returns a tibble +#' +#' |col_name |types | +#' |:-------------------------------|:---------| +#' |id |numeric | +#' |sequence_number |character | +#' |type_id |character | +#' |type_text |character | +#' |text |character | +#' |away_score |integer | +#' |home_score |integer | +#' |period_number |integer | +#' |period_display_value |character | +#' |clock_display_value |character | +#' |scoring_play |logical | +#' |score_value |integer | +#' |team_id |character | +#' |participants_0_athlete_id |character | +#' |participants_1_athlete_id |character | +#' |participants_2_athlete_id |character | +#' |wallclock |character | +#' |shooting_play |logical | +#' |coordinate_x |integer | +#' |coordinate_y |integer | +#' |season |integer | +#' |season_type |integer | +#' |away_team_id |integer | +#' |away_team_name |character | +#' |away_team_mascot |character | +#' |away_team_abbrev |character | +#' |away_team_name_alt |character | +#' |home_team_id |integer | +#' |home_team_name |character | +#' |home_team_mascot |character | +#' |home_team_abbrev |character | +#' |home_team_name_alt |character | +#' |home_team_spread |numeric | +#' |game_spread |numeric | +#' |home_favorite |logical | +#' |game_spread_available |logical | +#' |game_id |integer | +#' |qtr |integer | +#' |time |character | +#' |clock_minutes |integer | +#' |clock_seconds |numeric | +#' |half |character | +#' |game_half |character | +#' |lag_qtr |numeric | +#' |lead_qtr |numeric | +#' |lag_game_half |character | +#' |lead_game_half |character | +#' |start_quarter_seconds_remaining |integer | +#' |start_half_seconds_remaining |integer | +#' |start_game_seconds_remaining |integer | +#' |game_play_number |integer | +#' |end_quarter_seconds_remaining |numeric | +#' |end_half_seconds_remaining |numeric | +#' |end_game_seconds_remaining |numeric | +#' |period |integer | +#' |type_abbreviation |logical | +#' #' @import furrr #' @export #' @family hoopR Loader Functions @@ -66,6 +126,53 @@ NULL #' @param dbConnection A `DBIConnection` object, as returned by #' @param tablename The name of the play by play data table within the database #' @return Returns a tibble +#' +#' |col_name |types | +#' |:--------------------------------------------------------------|:---------| +#' |team_id |character | +#' |team_uid |character | +#' |team_slug |character | +#' |team_location |character | +#' |team_name |character | +#' |team_abbreviation |character | +#' |team_display_name |character | +#' |team_short_display_name |character | +#' |team_color |character | +#' |team_alternate_color |character | +#' |team_logo |character | +#' |field_goals_made_field_goals_attempted |character | +#' |field_goal_pct |character | +#' |three_point_field_goals_made_three_point_field_goals_attempted |character | +#' |three_point_field_goal_pct |character | +#' |free_throws_made_free_throws_attempted |character | +#' |free_throw_pct |character | +#' |total_rebounds |character | +#' |offensive_rebounds |character | +#' |defensive_rebounds |character | +#' |assists |character | +#' |steals |character | +#' |blocks |character | +#' |turnovers |character | +#' |team_turnovers |character | +#' |total_turnovers |character | +#' |technical_fouls |character | +#' |total_technical_fouls |character | +#' |flagrant_fouls |character | +#' |turnover_points |character | +#' |fast_break_points |character | +#' |points_in_paint |character | +#' |fouls |character | +#' |largest_lead |character | +#' |home_away |character | +#' |opponent_id |integer | +#' |opponent_name |character | +#' |opponent_mascot |character | +#' |opponent_abbrev |character | +#' |game_id |integer | +#' |season |integer | +#' |season_type |integer | +#' |game_date |Date | +#' #' @import furrr #' @export #' @family hoopR Loader Functions @@ -114,6 +221,45 @@ NULL #' @param dbConnection A `DBIConnection` object, as returned by #' @param tablename The name of the play by play data table within the database #' @return Returns a tibble +#' +#' |col_name |types | +#' |:-----------------------------|:---------| +#' |athlete_display_name |character | +#' |team_short_display_name |character | +#' |min |character | +#' |fg |character | +#' |fg3 |character | +#' |ft |character | +#' |oreb |character | +#' |dreb |character | +#' |reb |character | +#' |ast |character | +#' |stl |character | +#' |blk |character | +#' |to |character | +#' |pf |character | +#' |plus_minus |character | +#' |pts |character | +#' |starter |logical | +#' |ejected |logical | +#' |did_not_play |logical | +#' |active |logical | +#' |athlete_jersey |character | +#' |athlete_id |character | +#' |athlete_short_name |character | +#' |athlete_headshot_href |character | +#' |athlete_position_name |character | +#' |athlete_position_abbreviation |character | +#' |team_name |character | +#' |team_logo |character | +#' |team_id |character | +#' |team_abbreviation |character | +#' |team_color |character | +#' |game_id |integer | +#' |season |integer | +#' |season_type |integer | +#' |game_date |Date | +#' #' @import furrr #' @export #' @family hoopR Loader Functions @@ -165,6 +311,75 @@ NULL #' @param dbConnection A `DBIConnection` object, as returned by #' @param tablename The name of the play by play data table within the database #' @return Returns a tibble +#' +#' |col_name |types | +#' |:-------------------------|:---------| +#' |id |integer | +#' |uid |character | +#' |date |character | +#' |attendance |integer | +#' |time_valid |logical | +#' |neutral_site |logical | +#' |conference_competition |logical | +#' |recent |logical | +#' |start_date |character | +#' |notes_type |character | +#' |notes_headline |character | +#' |type_id |integer | +#' |type_abbreviation |character | +#' |venue_id |integer | +#' |venue_full_name |character | +#' |venue_address_city |character | +#' |venue_capacity |integer | +#' |venue_indoor |logical | +#' |status_clock |integer | +#' |status_display_clock |character | +#' |status_period |integer | +#' |status_type_id |integer | +#' |status_type_name |character | +#' |status_type_state |character | +#' |status_type_completed |logical | +#' |status_type_description |character | +#' |status_type_detail |character | +#' |status_type_short_detail |character | +#' |format_regulation_periods |integer | +#' |home_id |integer | +#' |home_uid |character | +#' |home_location |character | +#' |home_name |character | +#' |home_abbreviation |character | +#' |home_display_name |character | +#' |home_short_display_name |character | +#' |home_color |character | +#' |home_alternate_color |character | +#' |home_is_active |logical | +#' |home_venue_id |integer | +#' |home_logo |character | +#' |home_score |integer | +#' |home_winner |logical | +#' |away_id |integer | +#' |away_uid |character | +#' |away_location |character | +#' |away_name |character | +#' |away_abbreviation |character | +#' |away_display_name |character | +#' |away_short_display_name |character | +#' |away_color |character | +#' |away_alternate_color |character | +#' |away_is_active |logical | +#' |away_venue_id |integer | +#' |away_logo |character | +#' |away_score |integer | +#' |away_winner |logical | +#' |game_id |integer | +#' |season |integer | +#' |season_type |integer | +#' |venue_address_state |character | +#' |status_type_alt_detail |character | +#' |PBP |logical | +#' |team_box |logical | +#' |player_box |logical | +#' #' @import furrr #' @export #' @family hoopR Loader Functions diff --git a/R/nba_data_pbp.R b/R/nba_data_pbp.R index 1d5ec62b..2ba4e689 100644 --- a/R/nba_data_pbp.R +++ b/R/nba_data_pbp.R @@ -9,28 +9,30 @@ NULL #' @param ... Additional arguments passed to an underlying function like httr. #' @return Returns a tibble #' -#' |col_name |types | -#' |:--------|:---------| -#' |period |integer | period -#' |evt |integer | event number -#' |cl |character | clock -#' |de |character | description -#' |locX |integer | Location x-coordinate -#' |locY |integer | Location y-coordinate -#' |opt1 |integer | description value -#' |opt2 |integer | -#' |mtype |integer | event message action type "Message (i.e., action) Type" -#' |etype |integer | event message type "Event Type" -#' |opid |character | player_id_3 "Opposing player ID; e.g., player fouled" -#' |tid |integer | team_id "Team ID of player" -#' |pid |integer | player_id_1 "Player ID" -#' |hs |integer | home team score -#' |vs |integer | visiting team score -#' |epid |character | player_id_2 "Extra person ID; e.g., official's ID on foul call" -#' |oftid |integer | team_id_2 "Offensive team's ID" -#' |ord |integer | play order number -#' -#' Event Message Types (etype): +#' |col_name |types | +#' |:-----------------|:---------| +#' |game_id |character | +#' |league |character | +#' |period |integer | +#' |event_num |integer | +#' |clock |character | +#' |description |character | +#' |locX |integer | +#' |locY |integer | +#' |opt1 |integer | +#' |opt2 |integer | +#' |event_action_type |integer | +#' |event_type |integer | +#' |team_id |integer | +#' |offense_team_id |integer | +#' |player1_id |integer | +#' |player2_id |integer | +#' |player3_id |integer | +#' |home_score |integer | +#' |away_score |integer | +#' |order |integer | +#' +#' Event Message Types (event_type): #' #' 1 -> MAKE #' @@ -104,7 +106,38 @@ nba_data_pbp <- function(game_id = "0021900001", plays_df <- plays[[2]][[x]] %>% dplyr::mutate(period = x) %>% dplyr::select("period", tidyr::everything()) - }) %>% + }) + + plays_df <- plays_df %>% + dplyr::select(dplyr::any_of(c( + "period" = "period", + "event_num" = "evt", + "clock" = "cl", + "description" = "de", + "locX" = "locX", + "locY" = "locY", + "opt1" = "opt1", + "opt2" = "opt2", + "event_action_type" = "mtype", + "event_type" = "etype", + "team_id" = "tid", + "offense_team_id" = "oftid", + "player1_id" = "pid", + "player2_id" = "epid", + "player3_id" = "opid", + "home_score" = "hs", + "away_score" = "vs", + "order" = "ord"))) %>% + dplyr::mutate( + player2_id = as.integer(.data$player2_id), + player3_id = as.integer(.data$player3_id), + game_id = game_id, + league = dplyr::case_when( + substr(game_id,1,2) == '00' ~ 'NBA', + substr(game_id, 1, 2) == '10' ~ 'WNBA', + substr(game_id, 1, 2) == '20' ~ 'G-League', + TRUE ~ 'NBA')) %>% + dplyr::select("game_id", "league", tidyr::everything()) %>% make_hoopR_data("NBA Play-by-Play Information from NBA.com",Sys.time()) }, error = function(e) { diff --git a/R/nba_stats_cume.R b/R/nba_stats_cume.R index 0e6a3701..6694ae2f 100644 --- a/R/nba_stats_cume.R +++ b/R/nba_stats_cume.R @@ -389,7 +389,7 @@ nba_cumestatsteam <- function( tryCatch( expr = { - resp <- request_with_proxy(url = full_url, params = params) + resp <- request_with_proxy(url = full_url, params = params, ...) df_list <- nba_stats_map_result_sets(resp) diff --git a/R/nba_stats_pbp.R b/R/nba_stats_pbp.R index 62ec9509..ee1b3432 100644 --- a/R/nba_stats_pbp.R +++ b/R/nba_stats_pbp.R @@ -16,8 +16,8 @@ NULL #' |:-------------------------|:---------| #' |game_id |character | #' |event_num |character | -#' |event_msg_type |character | -#' |event_msg_action_type |character | +#' |event_type |character | +#' |event_action_type |character | #' |period |numeric | #' |minute_game |numeric | #' |time_remaining |numeric | @@ -113,8 +113,8 @@ nba_pbp <- function( "time_quarter" = "pctimestring", "score_margin" = "scoremargin", "event_num" = "eventnum", - "event_msg_type" = "eventmsgtype", - "event_msg_action_type" = "eventmsgactiontype", + "event_type" = "eventmsgtype", + "event_action_type" = "eventmsgactiontype", "home_description" = "homedescription", "neutral_description" = "neutraldescription", "visitor_description" = "visitordescription" @@ -188,6 +188,51 @@ NULL #' @param nest_data If TRUE returns nested data by game #' @param ... Additional arguments passed to an underlying function like httr. #' @return Returns a data frame: PlayByPlay +#' +#' |col_name |types | +#' |:-------------------------|:---------| +#' |game_id |character | +#' |event_num |character | +#' |event_type |character | +#' |event_action_type |character | +#' |period |numeric | +#' |minute_game |numeric | +#' |time_remaining |numeric | +#' |wc_time_string |character | +#' |time_quarter |character | +#' |minute_remaining_quarter |numeric | +#' |seconds_remaining_quarter |numeric | +#' |home_description |character | +#' |neutral_description |character | +#' |visitor_description |character | +#' |score |character | +#' |away_score |numeric | +#' |home_score |numeric | +#' |score_margin |character | +#' |person1type |character | +#' |player1_id |character | +#' |player1_name |character | +#' |player1_team_id |character | +#' |player1_team_city |character | +#' |player1_team_nickname |character | +#' |player1_team_abbreviation |character | +#' |person2type |character | +#' |player2_id |character | +#' |player2_name |character | +#' |player2_team_id |character | +#' |player2_team_city |character | +#' |player2_team_nickname |character | +#' |player2_team_abbreviation |character | +#' |person3type |character | +#' |player3_id |character | +#' |player3_name |character | +#' |player3_team_id |character | +#' |player3_team_city |character | +#' |player3_team_nickname |character | +#' |player3_team_abbreviation |character | +#' |video_available_flag |character | +#' |team_leading |character | +#' #' @export #' @family NBA PBP Functions #' @details @@ -312,7 +357,7 @@ NULL #' @family NBA Live Functions #' @details #' ```r -#' nba_live_pbp(game_id = '0022201086') +#' x<-nba_live_pbp(game_id = '0022201086') #' ``` nba_live_pbp <- function( game_id, @@ -331,7 +376,7 @@ nba_live_pbp <- function( tryCatch( expr = { - res <- rvest::session(url = full_url, ..., httr::timeout(60)) + res <- rvest::session(url = full_url, httr::timeout(60)) resp <- res$response %>% httr::content(as = "text", encoding = "UTF-8") %>% @@ -340,7 +385,38 @@ nba_live_pbp <- function( data <- resp %>% purrr::pluck("game") %>% purrr::pluck("actions") %>% - janitor::clean_names() %>% + janitor::clean_names() + + data <- data %>% + dplyr::rename(dplyr::any_of(c( + "period" = "period", + "event_num" = "action_number", + "clock" = "clock", + "description" = "description", + "locX" = "xLegacy", + "locY" = "yLegacy", + "action_type" = "action_type", + "sub_type" = "sub_type", + "descriptor" = "descriptor", + "shot_result" = "shot_result", + "shot_action_number" = "shot_action_number", + "qualifiers" = "qualifiers", + "team_id" = "team_id", + "player1_id" = "person_id", + "home_score" = "score_home", + "away_score" = "score_away", + "offense_team_id" = "possession", + "order" = "order_number"))) %>% + dplyr::mutate( + player2_id = dplyr::case_when( + !is.na(.data$assist_person_id) ~ .data$assist_person_id, + TRUE ~ NA_integer_), + player3_id = dplyr::case_when( + !is.na(.data$block_person_id) ~ .data$block_person_id, + !is.na(.data$steal_person_id) ~ .data$steal_person_id, + !is.na(.data$foul_drawn_person_id) ~ .data$foul_drawn_person_id, + TRUE ~ NA_integer_ + )) %>% make_hoopR_data("NBA Game Play-by-Play Information from NBA.com", Sys.time()) diff --git a/R/nba_stats_player.R b/R/nba_stats_player.R index bf6ecf90..526cb969 100644 --- a/R/nba_stats_player.R +++ b/R/nba_stats_player.R @@ -822,7 +822,7 @@ nba_playercareerstats <- function( tryCatch( expr = { - resp <- request_with_proxy(url = full_url, params = params) + resp <- request_with_proxy(url = full_url, params = params, ...) df_list <- nba_stats_map_result_sets(resp) diff --git a/R/nba_stats_scoreboard.R b/R/nba_stats_scoreboard.R index 1f9ea4e2..06fe0d62 100644 --- a/R/nba_stats_scoreboard.R +++ b/R/nba_stats_scoreboard.R @@ -541,6 +541,187 @@ nba_scoreboardv2 <- function( return(df_list) } +#' **Get NBA Stats API Scoreboard V3** +#' @name nba_scoreboardv3 +NULL +#' @title +#' **Get NBA Stats API Scoreboard V3** +#' @rdname nba_scoreboardv3 +#' @author Saiem Gilani +#' @param league_id League - default: '00'. Other options include '10': WNBA, '20': G-League +#' @param game_date Game Date +#' @param ... Additional arguments passed to an underlying function like httr. +#' @return Return a tibble with the following scoreboard data: +#' +#' |col_name |types | +#' |:------------------------------|:----------| +#' |game_id |character | +#' |game_code |character | +#' |game_status |integer | +#' |game_status_text |character | +#' |game_date |character | +#' |game_time_utc |character | +#' |game_et |character | +#' |home_team_id |integer | +#' |home_team_name |character | +#' |home_team_city |character | +#' |home_team_tricode |character | +#' |home_team_slug |character | +#' |away_team_id |integer | +#' |away_team_name |character | +#' |away_team_city |character | +#' |away_team_tricode |character | +#' |away_team_slug |character | +#' |period |integer | +#' |game_clock |character | +#' |regulation_periods |integer | +#' |series_game_number |character | +#' |series_text |character | +#' |if_necessary |logical | +#' |series_conference |character | +#' |po_round_desc |character | +#' |game_subtype |character | +#' |game_home_leaders_person_id |integer | +#' |game_home_leaders_name |character | +#' |game_home_leaders_player_slug |character | +#' |game_home_leaders_jersey_num |character | +#' |game_home_leaders_position |character | +#' |game_home_leaders_team_tricode |character | +#' |game_home_leaders_points |integer | +#' |game_home_leaders_rebounds |integer | +#' |game_home_leaders_assists |integer | +#' |game_away_leaders_person_id |integer | +#' |game_away_leaders_name |character | +#' |game_away_leaders_player_slug |character | +#' |game_away_leaders_jersey_num |character | +#' |game_away_leaders_position |character | +#' |game_away_leaders_team_tricode |character | +#' |game_away_leaders_points |integer | +#' |game_away_leaders_rebounds |integer | +#' |game_away_leaders_assists |integer | +#' |team_home_leaders_person_id |integer | +#' |team_home_leaders_name |character | +#' |team_home_leaders_player_slug |character | +#' |team_home_leaders_jersey_num |character | +#' |team_home_leaders_position |character | +#' |team_home_leaders_team_tricode |character | +#' |team_home_leaders_points |numeric | +#' |team_home_leaders_rebounds |numeric | +#' |team_home_leaders_assists |numeric | +#' |team_away_leaders_person_id |integer | +#' |team_away_leaders_name |character | +#' |team_away_leaders_player_slug |character | +#' |team_away_leaders_jersey_num |character | +#' |team_away_leaders_position |character | +#' |team_away_leaders_team_tricode |character | +#' |team_away_leaders_points |numeric | +#' |team_away_leaders_rebounds |numeric | +#' |team_away_leaders_assists |numeric | +#' |team_season_leaders_flag |integer | +#' |home_wins |integer | +#' |home_losses |integer | +#' |home_score |integer | +#' |home_seed |integer | +#' |home_in_bonus |logical | +#' |home_timeouts_remaining |integer | +#' |home_periods |list | +#' |away_wins |integer | +#' |away_losses |integer | +#' |away_score |integer | +#' |away_seed |integer | +#' |away_in_bonus |logical | +#' |away_timeouts_remaining |integer | +#' |away_periods |list | +#' |league_id |character | +#' |league |character | +#' |broadcasters |data.frame | +#' +#' @importFrom jsonlite fromJSON toJSON +#' @importFrom dplyr filter select rename bind_cols bind_rows as_tibble +#' @import rvest +#' @export +#' @family NBA Schedule Functions +#' @details +#' ```r +#' nba_scoreboardv3(league_id = '00', game_date = '2023-03-26') +#' ``` +nba_scoreboardv3 <- function( + league_id = '00', + game_date = '2023-03-26', + ...){ + + version <- "scoreboardv3" + full_url <- nba_endpoint(version) + + params <- list( + LeagueID = league_id, + GameDate = game_date + ) + + tryCatch( + expr = { + + resp <- request_with_proxy(url = full_url, params = params, ...) + + scoreboard <- resp %>% + purrr::pluck("scoreboard") + + games <- scoreboard %>% + purrr::pluck("games") %>% + tidyr::unnest("homeTeam", names_sep = '_') %>% + tidyr::unnest("awayTeam", names_sep = '_') %>% + tidyr::unnest("gameLeaders", names_sep = '_') %>% + tidyr::unnest("gameLeaders_homeLeaders", names_sep = '_') %>% + tidyr::unnest("gameLeaders_awayLeaders", names_sep = '_') %>% + tidyr::unnest("teamLeaders", names_sep = '_') %>% + tidyr::unnest("teamLeaders_homeLeaders", names_sep = '_') %>% + tidyr::unnest("teamLeaders_awayLeaders", names_sep = '_') + + + colnames(games) <- gsub("gameLeaders","game", colnames(games)) + colnames(games) <- gsub("teamLeaders","team", colnames(games)) + colnames(games) <- gsub("homeTeam","home", colnames(games)) + colnames(games) <- gsub("awayTeam","away", colnames(games)) + + + + games <- games %>% + janitor::clean_names() %>% + dplyr::mutate( + game_date = game_date, + league_id = league_id, + league = dplyr::case_when( + league_id == '00' ~ 'NBA', + league_id == '10' ~ 'WNBA', + league_id == '20' ~ 'G-League', + TRUE ~ 'NBA')) %>% + dplyr::select( + "game_id", + "game_code", + "game_status", + "game_status_text", + "game_date", + "game_time_utc", + "game_et", + dplyr::starts_with("home_team"), + dplyr::starts_with("away_team"), + tidyr::everything()) %>% + dplyr::relocate("broadcasters", .after = dplyr::last_col()) %>% + make_hoopR_data("NBA Scoreboard V3 Information from NBA.com", Sys.time()) + + }, + error = function(e) { + message(glue::glue("{Sys.time()}: Invalid arguments or no scoreboard v3 data for {game_date} available!")) + }, + warning = function(w) { + }, + finally = { + } + ) + return(games) +} + + #' **Get NBA Stats API Today's Scoreboard** #' @name nba_todays_scoreboard NULL diff --git a/cran-comments.md b/cran-comments.md index 07094760..ee7624ae 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -7,6 +7,7 @@ This is a minor release that adds the following: - ```nba_live_pbp()``` function added. - ```nba_live_boxscore()``` function added. - ```nba_todays_scoreboard()``` function added. +- ```nba_scoreboardv3()``` function added. - ```nba_boxscoretraditionalv3()``` function added. - ```nba_boxscoreadvancedv3()``` function added. - ```nba_boxscoremiscv3()``` function added. diff --git a/man/load_mbb_pbp.Rd b/man/load_mbb_pbp.Rd index 34d9bc76..2d829e4e 100644 --- a/man/load_mbb_pbp.Rd +++ b/man/load_mbb_pbp.Rd @@ -22,7 +22,64 @@ the season data into a database (used by \code{update_mbb_db()}).} \item{tablename}{The name of the play by play data table within the database} } \value{ -Returns a tibble +Returns a tibble\tabular{ll}{ + col_name \tab types \cr + id \tab numeric \cr + sequence_number \tab character \cr + type_id \tab character \cr + type_text \tab character \cr + text \tab character \cr + away_score \tab integer \cr + home_score \tab integer \cr + period_number \tab integer \cr + period_display_value \tab character \cr + clock_display_value \tab character \cr + scoring_play \tab logical \cr + score_value \tab integer \cr + team_id \tab character \cr + participants_0_athlete_id \tab character \cr + wallclock \tab character \cr + shooting_play \tab logical \cr + participants_1_athlete_id \tab character \cr + season \tab integer \cr + season_type \tab integer \cr + away_team_id \tab integer \cr + away_team_name \tab character \cr + away_team_mascot \tab character \cr + away_team_abbrev \tab character \cr + away_team_name_alt \tab character \cr + home_team_id \tab integer \cr + home_team_name \tab character \cr + home_team_mascot \tab character \cr + home_team_abbrev \tab character \cr + home_team_name_alt \tab character \cr + home_team_spread \tab numeric \cr + game_spread \tab numeric \cr + home_favorite \tab logical \cr + game_spread_available \tab logical \cr + game_id \tab integer \cr + qtr \tab integer \cr + time \tab character \cr + clock_minutes \tab character \cr + clock_seconds \tab character \cr + half \tab character \cr + game_half \tab character \cr + lag_qtr \tab numeric \cr + lead_qtr \tab numeric \cr + lag_game_half \tab character \cr + lead_game_half \tab character \cr + start_quarter_seconds_remaining \tab integer \cr + start_half_seconds_remaining \tab integer \cr + start_game_seconds_remaining \tab integer \cr + game_play_number \tab integer \cr + end_quarter_seconds_remaining \tab numeric \cr + end_half_seconds_remaining \tab numeric \cr + end_game_seconds_remaining \tab numeric \cr + period \tab integer \cr + coordinate_x \tab integer \cr + coordinate_y \tab integer \cr + media_id \tab character \cr +} } \description{ helper that loads multiple seasons from the data repo either into memory @@ -30,7 +87,7 @@ or writes it into a db using some forwarded arguments in the dots } \examples{ \donttest{ - load_mbb_pbp(seasons = most_recent_nba_season()) + load_mbb_pbp(seasons = most_recent_mbb_season()) } } \seealso{ diff --git a/man/load_mbb_player_box.Rd b/man/load_mbb_player_box.Rd index c838aa36..86998725 100644 --- a/man/load_mbb_player_box.Rd +++ b/man/load_mbb_player_box.Rd @@ -22,7 +22,43 @@ the season data into a database (used by \code{update_mbb_db()}).} \item{tablename}{The name of the play by play data table within the database} } \value{ -Returns a tibble +Returns a tibble\tabular{ll}{ + col_name \tab types \cr + athlete_display_name \tab character \cr + team_short_display_name \tab character \cr + min \tab character \cr + fg \tab character \cr + fg3 \tab character \cr + ft \tab character \cr + oreb \tab character \cr + dreb \tab character \cr + reb \tab character \cr + ast \tab character \cr + stl \tab character \cr + blk \tab character \cr + to \tab character \cr + pf \tab character \cr + pts \tab character \cr + starter \tab logical \cr + ejected \tab logical \cr + did_not_play \tab logical \cr + active \tab logical \cr + athlete_jersey \tab character \cr + athlete_id \tab character \cr + athlete_short_name \tab character \cr + athlete_headshot_href \tab character \cr + athlete_position_name \tab character \cr + athlete_position_abbreviation \tab character \cr + team_name \tab character \cr + team_logo \tab character \cr + team_id \tab character \cr + team_abbreviation \tab character \cr + team_color \tab character \cr + game_id \tab integer \cr + season \tab integer \cr + season_type \tab integer \cr + game_date \tab Date \cr +} } \description{ helper that loads multiple seasons from the data repo either into memory @@ -30,7 +66,7 @@ or writes it into a db using some forwarded arguments in the dots } \examples{ \donttest{ - load_mbb_player_box(seasons = most_recent_nba_season()) + load_mbb_player_box(seasons = most_recent_mbb_season()) } } \seealso{ diff --git a/man/load_mbb_schedule.Rd b/man/load_mbb_schedule.Rd index ca9510a3..bed43159 100644 --- a/man/load_mbb_schedule.Rd +++ b/man/load_mbb_schedule.Rd @@ -22,7 +22,81 @@ the season data into a database (used by \code{update_mbb_db()}).} \item{tablename}{The name of the play by play data table within the database} } \value{ -Returns a tibble +Returns a tibble\tabular{ll}{ + col_name \tab types \cr + id \tab integer \cr + uid \tab character \cr + date \tab character \cr + attendance \tab integer \cr + time_valid \tab logical \cr + neutral_site \tab logical \cr + conference_competition \tab logical \cr + recent \tab logical \cr + start_date \tab character \cr + notes_type \tab character \cr + notes_headline \tab character \cr + type_id \tab character \cr + type_abbreviation \tab character \cr + venue_id \tab character \cr + venue_full_name \tab character \cr + venue_address_city \tab character \cr + venue_address_state \tab character \cr + venue_capacity \tab integer \cr + venue_indoor \tab logical \cr + status_clock \tab numeric \cr + status_display_clock \tab character \cr + status_period \tab integer \cr + status_type_id \tab character \cr + status_type_name \tab character \cr + status_type_state \tab character \cr + status_type_completed \tab logical \cr + status_type_description \tab character \cr + status_type_detail \tab character \cr + status_type_short_detail \tab character \cr + format_regulation_periods \tab integer \cr + home_id \tab character \cr + home_uid \tab character \cr + home_location \tab character \cr + home_name \tab character \cr + home_abbreviation \tab character \cr + home_display_name \tab character \cr + home_short_display_name \tab character \cr + home_color \tab character \cr + home_alternate_color \tab character \cr + home_is_active \tab logical \cr + home_venue_id \tab character \cr + home_logo \tab character \cr + home_conference_id \tab character \cr + home_score \tab character \cr + home_winner \tab logical \cr + away_id \tab character \cr + away_uid \tab character \cr + away_location \tab character \cr + away_name \tab character \cr + away_abbreviation \tab character \cr + away_display_name \tab character \cr + away_short_display_name \tab character \cr + away_color \tab character \cr + away_alternate_color \tab character \cr + away_is_active \tab logical \cr + away_venue_id \tab character \cr + away_logo \tab character \cr + away_conference_id \tab character \cr + away_score \tab character \cr + away_winner \tab logical \cr + game_id \tab integer \cr + season \tab integer \cr + season_type \tab integer \cr + status_type_alt_detail \tab character \cr + groups_id \tab character \cr + groups_name \tab character \cr + groups_short_name \tab character \cr + groups_is_conference \tab logical \cr + tournament_id \tab numeric \cr + PBP \tab logical \cr + team_box \tab logical \cr + player_box \tab logical \cr +} } \description{ helper that loads multiple seasons from the data repo either into memory @@ -30,7 +104,7 @@ or writes it into a db using some forwarded arguments in the dots } \examples{ \donttest{ - load_mbb_schedule(seasons = most_recent_nba_season()) + load_mbb_schedule(seasons = most_recent_mbb_season()) } } \seealso{ diff --git a/man/load_mbb_team_box.Rd b/man/load_mbb_team_box.Rd index c12eff16..4fdcc8d4 100644 --- a/man/load_mbb_team_box.Rd +++ b/man/load_mbb_team_box.Rd @@ -22,7 +22,49 @@ the season data into a database (used by \code{update_mbb_db()}).} \item{tablename}{The name of the play by play data table within the database} } \value{ -Returns a tibble +Returns a tibble\tabular{ll}{ + col_name \tab types \cr + team_id \tab character \cr + team_uid \tab character \cr + team_slug \tab character \cr + team_location \tab character \cr + team_name \tab character \cr + team_abbreviation \tab character \cr + team_display_name \tab character \cr + team_short_display_name \tab character \cr + team_color \tab character \cr + team_alternate_color \tab character \cr + team_logo \tab character \cr + field_goals_made_field_goals_attempted \tab character \cr + field_goal_pct \tab character \cr + three_point_field_goals_made_three_point_field_goals_attempted \tab character \cr + three_point_field_goal_pct \tab character \cr + free_throws_made_free_throws_attempted \tab character \cr + free_throw_pct \tab character \cr + total_rebounds \tab character \cr + offensive_rebounds \tab character \cr + defensive_rebounds \tab character \cr + assists \tab character \cr + steals \tab character \cr + blocks \tab character \cr + turnovers \tab character \cr + team_turnovers \tab character \cr + total_turnovers \tab character \cr + technical_fouls \tab character \cr + total_technical_fouls \tab character \cr + flagrant_fouls \tab character \cr + fouls \tab character \cr + largest_lead \tab character \cr + home_away \tab character \cr + opponent_id \tab integer \cr + opponent_name \tab character \cr + opponent_mascot \tab character \cr + opponent_abbrev \tab character \cr + game_id \tab integer \cr + season \tab integer \cr + season_type \tab integer \cr + game_date \tab Date \cr +} } \description{ helper that loads multiple seasons from the data repo either into memory @@ -30,7 +72,7 @@ or writes it into a db using some forwarded arguments in the dots } \examples{ \donttest{ - load_mbb_team_box(seasons = most_recent_nba_season()) + load_mbb_team_box(seasons = most_recent_mbb_season()) } } \seealso{ diff --git a/man/load_nba_pbp.Rd b/man/load_nba_pbp.Rd index 8c50328b..50b1cbef 100644 --- a/man/load_nba_pbp.Rd +++ b/man/load_nba_pbp.Rd @@ -22,7 +22,65 @@ the season data into a database (used by \code{update_nba_db()}).} \item{tablename}{The name of the play by play data table within the database} } \value{ -Returns a tibble +Returns a tibble\tabular{ll}{ + col_name \tab types \cr + id \tab numeric \cr + sequence_number \tab character \cr + type_id \tab character \cr + type_text \tab character \cr + text \tab character \cr + away_score \tab integer \cr + home_score \tab integer \cr + period_number \tab integer \cr + period_display_value \tab character \cr + clock_display_value \tab character \cr + scoring_play \tab logical \cr + score_value \tab integer \cr + team_id \tab character \cr + participants_0_athlete_id \tab character \cr + participants_1_athlete_id \tab character \cr + participants_2_athlete_id \tab character \cr + wallclock \tab character \cr + shooting_play \tab logical \cr + coordinate_x \tab integer \cr + coordinate_y \tab integer \cr + season \tab integer \cr + season_type \tab integer \cr + away_team_id \tab integer \cr + away_team_name \tab character \cr + away_team_mascot \tab character \cr + away_team_abbrev \tab character \cr + away_team_name_alt \tab character \cr + home_team_id \tab integer \cr + home_team_name \tab character \cr + home_team_mascot \tab character \cr + home_team_abbrev \tab character \cr + home_team_name_alt \tab character \cr + home_team_spread \tab numeric \cr + game_spread \tab numeric \cr + home_favorite \tab logical \cr + game_spread_available \tab logical \cr + game_id \tab integer \cr + qtr \tab integer \cr + time \tab character \cr + clock_minutes \tab integer \cr + clock_seconds \tab numeric \cr + half \tab character \cr + game_half \tab character \cr + lag_qtr \tab numeric \cr + lead_qtr \tab numeric \cr + lag_game_half \tab character \cr + lead_game_half \tab character \cr + start_quarter_seconds_remaining \tab integer \cr + start_half_seconds_remaining \tab integer \cr + start_game_seconds_remaining \tab integer \cr + game_play_number \tab integer \cr + end_quarter_seconds_remaining \tab numeric \cr + end_half_seconds_remaining \tab numeric \cr + end_game_seconds_remaining \tab numeric \cr + period \tab integer \cr + type_abbreviation \tab logical \cr +} } \description{ helper that loads multiple seasons from the data repo either into memory diff --git a/man/load_nba_player_box.Rd b/man/load_nba_player_box.Rd index 7796096a..25c460cf 100644 --- a/man/load_nba_player_box.Rd +++ b/man/load_nba_player_box.Rd @@ -22,7 +22,44 @@ the season data into a database (used by \code{update_nba_db()}).} \item{tablename}{The name of the play by play data table within the database} } \value{ -Returns a tibble +Returns a tibble\tabular{ll}{ + col_name \tab types \cr + athlete_display_name \tab character \cr + team_short_display_name \tab character \cr + min \tab character \cr + fg \tab character \cr + fg3 \tab character \cr + ft \tab character \cr + oreb \tab character \cr + dreb \tab character \cr + reb \tab character \cr + ast \tab character \cr + stl \tab character \cr + blk \tab character \cr + to \tab character \cr + pf \tab character \cr + plus_minus \tab character \cr + pts \tab character \cr + starter \tab logical \cr + ejected \tab logical \cr + did_not_play \tab logical \cr + active \tab logical \cr + athlete_jersey \tab character \cr + athlete_id \tab character \cr + athlete_short_name \tab character \cr + athlete_headshot_href \tab character \cr + athlete_position_name \tab character \cr + athlete_position_abbreviation \tab character \cr + team_name \tab character \cr + team_logo \tab character \cr + team_id \tab character \cr + team_abbreviation \tab character \cr + team_color \tab character \cr + game_id \tab integer \cr + season \tab integer \cr + season_type \tab integer \cr + game_date \tab Date \cr +} } \description{ helper that loads multiple seasons from the data repo either into memory diff --git a/man/load_nba_schedule.Rd b/man/load_nba_schedule.Rd index 35cbed56..89a425ae 100644 --- a/man/load_nba_schedule.Rd +++ b/man/load_nba_schedule.Rd @@ -22,7 +22,74 @@ the season data into a database (used by \code{update_nba_db()}).} \item{tablename}{The name of the play by play data table within the database} } \value{ -Returns a tibble +Returns a tibble\tabular{ll}{ + col_name \tab types \cr + id \tab integer \cr + uid \tab character \cr + date \tab character \cr + attendance \tab integer \cr + time_valid \tab logical \cr + neutral_site \tab logical \cr + conference_competition \tab logical \cr + recent \tab logical \cr + start_date \tab character \cr + notes_type \tab character \cr + notes_headline \tab character \cr + type_id \tab integer \cr + type_abbreviation \tab character \cr + venue_id \tab integer \cr + venue_full_name \tab character \cr + venue_address_city \tab character \cr + venue_capacity \tab integer \cr + venue_indoor \tab logical \cr + status_clock \tab integer \cr + status_display_clock \tab character \cr + status_period \tab integer \cr + status_type_id \tab integer \cr + status_type_name \tab character \cr + status_type_state \tab character \cr + status_type_completed \tab logical \cr + status_type_description \tab character \cr + status_type_detail \tab character \cr + status_type_short_detail \tab character \cr + format_regulation_periods \tab integer \cr + home_id \tab integer \cr + home_uid \tab character \cr + home_location \tab character \cr + home_name \tab character \cr + home_abbreviation \tab character \cr + home_display_name \tab character \cr + home_short_display_name \tab character \cr + home_color \tab character \cr + home_alternate_color \tab character \cr + home_is_active \tab logical \cr + home_venue_id \tab integer \cr + home_logo \tab character \cr + home_score \tab integer \cr + home_winner \tab logical \cr + away_id \tab integer \cr + away_uid \tab character \cr + away_location \tab character \cr + away_name \tab character \cr + away_abbreviation \tab character \cr + away_display_name \tab character \cr + away_short_display_name \tab character \cr + away_color \tab character \cr + away_alternate_color \tab character \cr + away_is_active \tab logical \cr + away_venue_id \tab integer \cr + away_logo \tab character \cr + away_score \tab integer \cr + away_winner \tab logical \cr + game_id \tab integer \cr + season \tab integer \cr + season_type \tab integer \cr + venue_address_state \tab character \cr + status_type_alt_detail \tab character \cr + PBP \tab logical \cr + team_box \tab logical \cr + player_box \tab logical \cr +} } \description{ helper that loads multiple seasons from the data repo either into memory diff --git a/man/load_nba_team_box.Rd b/man/load_nba_team_box.Rd index 71e88a79..14ab0895 100644 --- a/man/load_nba_team_box.Rd +++ b/man/load_nba_team_box.Rd @@ -22,7 +22,52 @@ the season data into a database (used by \code{update_nba_db()}).} \item{tablename}{The name of the play by play data table within the database} } \value{ -Returns a tibble +Returns a tibble\tabular{ll}{ + col_name \tab types \cr + team_id \tab character \cr + team_uid \tab character \cr + team_slug \tab character \cr + team_location \tab character \cr + team_name \tab character \cr + team_abbreviation \tab character \cr + team_display_name \tab character \cr + team_short_display_name \tab character \cr + team_color \tab character \cr + team_alternate_color \tab character \cr + team_logo \tab character \cr + field_goals_made_field_goals_attempted \tab character \cr + field_goal_pct \tab character \cr + three_point_field_goals_made_three_point_field_goals_attempted \tab character \cr + three_point_field_goal_pct \tab character \cr + free_throws_made_free_throws_attempted \tab character \cr + free_throw_pct \tab character \cr + total_rebounds \tab character \cr + offensive_rebounds \tab character \cr + defensive_rebounds \tab character \cr + assists \tab character \cr + steals \tab character \cr + blocks \tab character \cr + turnovers \tab character \cr + team_turnovers \tab character \cr + total_turnovers \tab character \cr + technical_fouls \tab character \cr + total_technical_fouls \tab character \cr + flagrant_fouls \tab character \cr + turnover_points \tab character \cr + fast_break_points \tab character \cr + points_in_paint \tab character \cr + fouls \tab character \cr + largest_lead \tab character \cr + home_away \tab character \cr + opponent_id \tab integer \cr + opponent_name \tab character \cr + opponent_mascot \tab character \cr + opponent_abbrev \tab character \cr + game_id \tab integer \cr + season \tab integer \cr + season_type \tab integer \cr + game_date \tab Date \cr +} } \description{ helper that loads multiple seasons from the data repo either into memory diff --git a/man/nba_data_pbp.Rd b/man/nba_data_pbp.Rd index a0d5cd73..82ba2efe 100644 --- a/man/nba_data_pbp.Rd +++ b/man/nba_data_pbp.Rd @@ -14,28 +14,30 @@ nba_data_pbp(game_id = "0021900001", ...) \value{ Returns a tibble\tabular{ll}{ col_name \tab types \cr + game_id \tab character \cr + league \tab character \cr period \tab integer \cr - evt \tab integer \cr - cl \tab character \cr - de \tab character \cr + event_num \tab integer \cr + clock \tab character \cr + description \tab character \cr locX \tab integer \cr locY \tab integer \cr opt1 \tab integer \cr opt2 \tab integer \cr - mtype \tab integer \cr - etype \tab integer \cr - opid \tab character \cr - tid \tab integer \cr - pid \tab integer \cr - hs \tab integer \cr - vs \tab integer \cr - epid \tab character \cr - oftid \tab integer \cr - ord \tab integer \cr + event_action_type \tab integer \cr + event_type \tab integer \cr + team_id \tab integer \cr + offense_team_id \tab integer \cr + player1_id \tab integer \cr + player2_id \tab integer \cr + player3_id \tab integer \cr + home_score \tab integer \cr + away_score \tab integer \cr + order \tab integer \cr } -Event Message Types (etype): +Event Message Types (event_type): 1 -> MAKE diff --git a/man/nba_live_pbp.Rd b/man/nba_live_pbp.Rd index 759ffd7b..209e99a5 100644 --- a/man/nba_live_pbp.Rd +++ b/man/nba_live_pbp.Rd @@ -78,7 +78,7 @@ Returns a data frame: PlayByPlay\tabular{ll}{ \strong{Get NBA Stats API Live play-by-play} } \details{ -\if{html}{\out{
}}\preformatted{ nba_live_pbp(game_id = '0022201086') +\if{html}{\out{
}}\preformatted{ x<-nba_live_pbp(game_id = '0022201086') }\if{html}{\out{
}} } \seealso{ diff --git a/man/nba_pbp.Rd b/man/nba_pbp.Rd index fd4b433d..15a37ffb 100644 --- a/man/nba_pbp.Rd +++ b/man/nba_pbp.Rd @@ -20,8 +20,8 @@ Returns a data frame: PlayByPlay\tabular{ll}{ col_name \tab types \cr game_id \tab character \cr event_num \tab character \cr - event_msg_type \tab character \cr - event_msg_action_type \tab character \cr + event_type \tab character \cr + event_action_type \tab character \cr period \tab numeric \cr minute_game \tab numeric \cr time_remaining \tab numeric \cr diff --git a/man/nba_pbps.Rd b/man/nba_pbps.Rd index 5b98ddda..9a36d789 100644 --- a/man/nba_pbps.Rd +++ b/man/nba_pbps.Rd @@ -16,7 +16,50 @@ nba_pbps(game_ids = NULL, version = "v2", nest_data = FALSE, ...) \item{...}{Additional arguments passed to an underlying function like httr.} } \value{ -Returns a data frame: PlayByPlay +Returns a data frame: PlayByPlay\tabular{ll}{ + col_name \tab types \cr + game_id \tab character \cr + event_num \tab character \cr + event_type \tab character \cr + event_action_type \tab character \cr + period \tab numeric \cr + minute_game \tab numeric \cr + time_remaining \tab numeric \cr + wc_time_string \tab character \cr + time_quarter \tab character \cr + minute_remaining_quarter \tab numeric \cr + seconds_remaining_quarter \tab numeric \cr + home_description \tab character \cr + neutral_description \tab character \cr + visitor_description \tab character \cr + score \tab character \cr + away_score \tab numeric \cr + home_score \tab numeric \cr + score_margin \tab character \cr + person1type \tab character \cr + player1_id \tab character \cr + player1_name \tab character \cr + player1_team_id \tab character \cr + player1_team_city \tab character \cr + player1_team_nickname \tab character \cr + player1_team_abbreviation \tab character \cr + person2type \tab character \cr + player2_id \tab character \cr + player2_name \tab character \cr + player2_team_id \tab character \cr + player2_team_city \tab character \cr + player2_team_nickname \tab character \cr + player2_team_abbreviation \tab character \cr + person3type \tab character \cr + player3_id \tab character \cr + player3_name \tab character \cr + player3_team_id \tab character \cr + player3_team_city \tab character \cr + player3_team_nickname \tab character \cr + player3_team_abbreviation \tab character \cr + video_available_flag \tab character \cr + team_leading \tab character \cr +} } \description{ \strong{Get NBA Stats API play-by-play (Multiple Games)} diff --git a/man/nba_schedule.Rd b/man/nba_schedule.Rd index cdd2d502..e23db34c 100644 --- a/man/nba_schedule.Rd +++ b/man/nba_schedule.Rd @@ -82,6 +82,7 @@ Returns a tibble with the following columns:\tabular{ll}{ \seealso{ Other NBA Schedule Functions: \code{\link{nba_scoreboardv2}()}, +\code{\link{nba_scoreboardv3}()}, \code{\link{nba_scoreboard}()}, \code{\link{nba_todays_scoreboard}()} } diff --git a/man/nba_scoreboard.Rd b/man/nba_scoreboard.Rd index ab9d307c..69d52ef8 100644 --- a/man/nba_scoreboard.Rd +++ b/man/nba_scoreboard.Rd @@ -154,6 +154,7 @@ GameHeader, LastMeeting, LineScore, SeriesStandings, WestConfStandingsByDay Other NBA Schedule Functions: \code{\link{nba_schedule}()}, \code{\link{nba_scoreboardv2}()}, +\code{\link{nba_scoreboardv3}()}, \code{\link{nba_todays_scoreboard}()} } \author{ diff --git a/man/nba_scoreboardv2.Rd b/man/nba_scoreboardv2.Rd index e6a21e14..dfe0cd01 100644 --- a/man/nba_scoreboardv2.Rd +++ b/man/nba_scoreboardv2.Rd @@ -188,6 +188,7 @@ TicketLinks, WestConfStandingsByDay, WinProbability \seealso{ Other NBA Schedule Functions: \code{\link{nba_schedule}()}, +\code{\link{nba_scoreboardv3}()}, \code{\link{nba_scoreboard}()}, \code{\link{nba_todays_scoreboard}()} } diff --git a/man/nba_scoreboardv3.Rd b/man/nba_scoreboardv3.Rd new file mode 100644 index 00000000..41aa0bb6 --- /dev/null +++ b/man/nba_scoreboardv3.Rd @@ -0,0 +1,120 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/nba_stats_scoreboard.R +\name{nba_scoreboardv3} +\alias{nba_scoreboardv3} +\title{\strong{Get NBA Stats API Scoreboard V3}} +\usage{ +nba_scoreboardv3(league_id = "00", game_date = "2023-03-26", ...) +} +\arguments{ +\item{league_id}{League - default: '00'. Other options include '10': WNBA, '20': G-League} + +\item{game_date}{Game Date} + +\item{...}{Additional arguments passed to an underlying function like httr.} +} +\value{ +Return a tibble with the following scoreboard data:\tabular{ll}{ + col_name \tab types \cr + game_id \tab character \cr + game_code \tab character \cr + game_status \tab integer \cr + game_status_text \tab character \cr + game_date \tab character \cr + game_time_utc \tab character \cr + game_et \tab character \cr + home_team_id \tab integer \cr + home_team_name \tab character \cr + home_team_city \tab character \cr + home_team_tricode \tab character \cr + home_team_slug \tab character \cr + away_team_id \tab integer \cr + away_team_name \tab character \cr + away_team_city \tab character \cr + away_team_tricode \tab character \cr + away_team_slug \tab character \cr + period \tab integer \cr + game_clock \tab character \cr + regulation_periods \tab integer \cr + series_game_number \tab character \cr + series_text \tab character \cr + if_necessary \tab logical \cr + series_conference \tab character \cr + po_round_desc \tab character \cr + game_subtype \tab character \cr + game_home_leaders_person_id \tab integer \cr + game_home_leaders_name \tab character \cr + game_home_leaders_player_slug \tab character \cr + game_home_leaders_jersey_num \tab character \cr + game_home_leaders_position \tab character \cr + game_home_leaders_team_tricode \tab character \cr + game_home_leaders_points \tab integer \cr + game_home_leaders_rebounds \tab integer \cr + game_home_leaders_assists \tab integer \cr + game_away_leaders_person_id \tab integer \cr + game_away_leaders_name \tab character \cr + game_away_leaders_player_slug \tab character \cr + game_away_leaders_jersey_num \tab character \cr + game_away_leaders_position \tab character \cr + game_away_leaders_team_tricode \tab character \cr + game_away_leaders_points \tab integer \cr + game_away_leaders_rebounds \tab integer \cr + game_away_leaders_assists \tab integer \cr + team_home_leaders_person_id \tab integer \cr + team_home_leaders_name \tab character \cr + team_home_leaders_player_slug \tab character \cr + team_home_leaders_jersey_num \tab character \cr + team_home_leaders_position \tab character \cr + team_home_leaders_team_tricode \tab character \cr + team_home_leaders_points \tab numeric \cr + team_home_leaders_rebounds \tab numeric \cr + team_home_leaders_assists \tab numeric \cr + team_away_leaders_person_id \tab integer \cr + team_away_leaders_name \tab character \cr + team_away_leaders_player_slug \tab character \cr + team_away_leaders_jersey_num \tab character \cr + team_away_leaders_position \tab character \cr + team_away_leaders_team_tricode \tab character \cr + team_away_leaders_points \tab numeric \cr + team_away_leaders_rebounds \tab numeric \cr + team_away_leaders_assists \tab numeric \cr + team_season_leaders_flag \tab integer \cr + home_wins \tab integer \cr + home_losses \tab integer \cr + home_score \tab integer \cr + home_seed \tab integer \cr + home_in_bonus \tab logical \cr + home_timeouts_remaining \tab integer \cr + home_periods \tab list \cr + away_wins \tab integer \cr + away_losses \tab integer \cr + away_score \tab integer \cr + away_seed \tab integer \cr + away_in_bonus \tab logical \cr + away_timeouts_remaining \tab integer \cr + away_periods \tab list \cr + league_id \tab character \cr + league \tab character \cr + broadcasters \tab data.frame \cr +} +} +\description{ +\strong{Get NBA Stats API Scoreboard V3} + +\strong{Get NBA Stats API Scoreboard V3} +} +\details{ +\if{html}{\out{
}}\preformatted{ nba_scoreboardv3(league_id = '00', game_date = '2023-03-26') +}\if{html}{\out{
}} +} +\seealso{ +Other NBA Schedule Functions: +\code{\link{nba_schedule}()}, +\code{\link{nba_scoreboardv2}()}, +\code{\link{nba_scoreboard}()}, +\code{\link{nba_todays_scoreboard}()} +} +\author{ +Saiem Gilani +} +\concept{NBA Schedule Functions} diff --git a/man/nba_todays_scoreboard.Rd b/man/nba_todays_scoreboard.Rd index 0765f1e1..d459db63 100644 --- a/man/nba_todays_scoreboard.Rd +++ b/man/nba_todays_scoreboard.Rd @@ -85,6 +85,7 @@ Return a data frame with the following columns:\tabular{ll}{ Other NBA Schedule Functions: \code{\link{nba_schedule}()}, \code{\link{nba_scoreboardv2}()}, +\code{\link{nba_scoreboardv3}()}, \code{\link{nba_scoreboard}()} Other NBA Live Functions: diff --git a/tests/testthat/test-load_mbb_pbp.R b/tests/testthat/test-load_mbb_pbp.R new file mode 100644 index 00000000..ea701a09 --- /dev/null +++ b/tests/testthat/test-load_mbb_pbp.R @@ -0,0 +1,67 @@ +test_that("hoopR Loader MBB Play-by-Play", { + skip_on_cran() + x <- load_mbb_pbp(seasons = most_recent_mbb_season()) + + + cols <- c( + "id", + "sequence_number", + "type_id", + "type_text", + "text", + "away_score", + "home_score", + "period_number", + "period_display_value", + "clock_display_value", + "scoring_play", + "score_value", + "team_id", + "participants_0_athlete_id", + "wallclock", + "shooting_play", + "participants_1_athlete_id", + "season", + "season_type", + "away_team_id", + "away_team_name", + "away_team_mascot", + "away_team_abbrev", + "away_team_name_alt", + "home_team_id", + "home_team_name", + "home_team_mascot", + "home_team_abbrev", + "home_team_name_alt", + "home_team_spread", + "game_spread", + "home_favorite", + "game_spread_available", + "game_id", + "qtr", + "time", + "clock_minutes", + "clock_seconds", + "half", + "game_half", + "lag_qtr", + "lead_qtr", + "lag_game_half", + "lead_game_half", + "start_quarter_seconds_remaining", + "start_half_seconds_remaining", + "start_game_seconds_remaining", + "game_play_number", + "end_quarter_seconds_remaining", + "end_half_seconds_remaining", + "end_game_seconds_remaining", + "period", + "coordinate_x", + "coordinate_y", + "media_id" + ) + + expect_equal(sort(colnames(x)), sort(cols)) + expect_s3_class(x, 'data.frame') + +}) diff --git a/tests/testthat/test-load_mbb_player_box.R b/tests/testthat/test-load_mbb_player_box.R new file mode 100644 index 00000000..f6321442 --- /dev/null +++ b/tests/testthat/test-load_mbb_player_box.R @@ -0,0 +1,46 @@ +test_that("hoopR Loader MBB Player Box", { + skip_on_cran() + x <- load_mbb_player_box(seasons = most_recent_mbb_season()) + + + cols <- c( + "athlete_display_name", + "team_short_display_name", + "min", + "fg", + "fg3", + "ft", + "oreb", + "dreb", + "reb", + "ast", + "stl", + "blk", + "to", + "pf", + "pts", + "starter", + "ejected", + "did_not_play", + "active", + "athlete_jersey", + "athlete_id", + "athlete_short_name", + "athlete_headshot_href", + "athlete_position_name", + "athlete_position_abbreviation", + "team_name", + "team_logo", + "team_id", + "team_abbreviation", + "team_color", + "game_id", + "season", + "season_type", + "game_date" + ) + + expect_equal(sort(colnames(x)), sort(cols)) + expect_s3_class(x, 'data.frame') + +}) diff --git a/tests/testthat/test-load_mbb_schedule.R b/tests/testthat/test-load_mbb_schedule.R new file mode 100644 index 00000000..f87ffc49 --- /dev/null +++ b/tests/testthat/test-load_mbb_schedule.R @@ -0,0 +1,84 @@ +test_that("hoopR Loader MBB Schedule", { + skip_on_cran() + x <- load_mbb_schedule(seasons = most_recent_mbb_season()) + + + cols <- c( + "id", + "uid", + "date", + "attendance", + "time_valid", + "neutral_site", + "conference_competition", + "recent", + "start_date", + "notes_type", + "notes_headline", + "type_id", + "type_abbreviation", + "venue_id", + "venue_full_name", + "venue_address_city", + "venue_address_state", + "venue_capacity", + "venue_indoor", + "status_clock", + "status_display_clock", + "status_period", + "status_type_id", + "status_type_name", + "status_type_state", + "status_type_completed", + "status_type_description", + "status_type_detail", + "status_type_short_detail", + "format_regulation_periods", + "home_id", + "home_uid", + "home_location", + "home_name", + "home_abbreviation", + "home_display_name", + "home_short_display_name", + "home_color", + "home_alternate_color", + "home_is_active", + "home_venue_id", + "home_logo", + "home_conference_id", + "home_score", + "home_winner", + "away_id", + "away_uid", + "away_location", + "away_name", + "away_abbreviation", + "away_display_name", + "away_short_display_name", + "away_color", + "away_alternate_color", + "away_is_active", + "away_venue_id", + "away_logo", + "away_conference_id", + "away_score", + "away_winner", + "game_id", + "season", + "season_type", + "status_type_alt_detail", + "groups_id", + "groups_name", + "groups_short_name", + "groups_is_conference", + "tournament_id", + "PBP", + "team_box", + "player_box" + ) + + expect_equal(sort(colnames(x)), sort(cols)) + expect_s3_class(x, 'data.frame') + +}) diff --git a/tests/testthat/test-load_mbb_team_box.R b/tests/testthat/test-load_mbb_team_box.R new file mode 100644 index 00000000..af524e2e --- /dev/null +++ b/tests/testthat/test-load_mbb_team_box.R @@ -0,0 +1,52 @@ +test_that("hoopR Loader MBB Team Box", { + skip_on_cran() + x <- load_mbb_team_box(seasons = most_recent_mbb_season()) + + + cols <- c( + "team_id", + "team_uid", + "team_slug", + "team_location", + "team_name", + "team_abbreviation", + "team_display_name", + "team_short_display_name", + "team_color", + "team_alternate_color", + "team_logo", + "field_goals_made_field_goals_attempted", + "field_goal_pct", + "three_point_field_goals_made_three_point_field_goals_attempted", + "three_point_field_goal_pct", + "free_throws_made_free_throws_attempted", + "free_throw_pct", + "total_rebounds", + "offensive_rebounds", + "defensive_rebounds", + "assists", + "steals", + "blocks", + "turnovers", + "team_turnovers", + "total_turnovers", + "technical_fouls", + "total_technical_fouls", + "flagrant_fouls", + "fouls", + "largest_lead", + "home_away", + "opponent_id", + "opponent_name", + "opponent_mascot", + "opponent_abbrev", + "game_id", + "season", + "season_type", + "game_date" + ) + + expect_equal(sort(colnames(x)), sort(cols)) + expect_s3_class(x, 'data.frame') + +}) diff --git a/tests/testthat/test-load_nba_pbp.R b/tests/testthat/test-load_nba_pbp.R new file mode 100644 index 00000000..7b8a0e1d --- /dev/null +++ b/tests/testthat/test-load_nba_pbp.R @@ -0,0 +1,68 @@ +test_that("hoopR Loader NBA Play-by-Play", { + skip_on_cran() + x <- load_nba_pbp(seasons = most_recent_nba_season()) + + + cols <- c( + "id", + "sequence_number", + "type_id", + "type_text", + "text", + "away_score", + "home_score", + "period_number", + "period_display_value", + "clock_display_value", + "scoring_play", + "score_value", + "team_id", + "participants_0_athlete_id", + "participants_1_athlete_id", + "participants_2_athlete_id", + "wallclock", + "shooting_play", + "coordinate_x", + "coordinate_y", + "season", + "season_type", + "away_team_id", + "away_team_name", + "away_team_mascot", + "away_team_abbrev", + "away_team_name_alt", + "home_team_id", + "home_team_name", + "home_team_mascot", + "home_team_abbrev", + "home_team_name_alt", + "home_team_spread", + "game_spread", + "home_favorite", + "game_spread_available", + "game_id", + "qtr", + "time", + "clock_minutes", + "clock_seconds", + "half", + "game_half", + "lag_qtr", + "lead_qtr", + "lag_game_half", + "lead_game_half", + "start_quarter_seconds_remaining", + "start_half_seconds_remaining", + "start_game_seconds_remaining", + "game_play_number", + "end_quarter_seconds_remaining", + "end_half_seconds_remaining", + "end_game_seconds_remaining", + "period", + "type_abbreviation" + ) + + expect_equal(sort(colnames(x)), sort(cols)) + expect_s3_class(x, 'data.frame') + +}) diff --git a/tests/testthat/test-load_nba_player_box.R b/tests/testthat/test-load_nba_player_box.R new file mode 100644 index 00000000..2740387e --- /dev/null +++ b/tests/testthat/test-load_nba_player_box.R @@ -0,0 +1,47 @@ +test_that("hoopR Loader NBA Player Box", { + skip_on_cran() + x <- load_nba_player_box(seasons = most_recent_nba_season()) + + + cols <- c( + "athlete_display_name", + "team_short_display_name", + "min", + "fg", + "fg3", + "ft", + "oreb", + "dreb", + "reb", + "ast", + "stl", + "blk", + "to", + "pf", + "plus_minus", + "pts", + "starter", + "ejected", + "did_not_play", + "active", + "athlete_jersey", + "athlete_id", + "athlete_short_name", + "athlete_headshot_href", + "athlete_position_name", + "athlete_position_abbreviation", + "team_name", + "team_logo", + "team_id", + "team_abbreviation", + "team_color", + "game_id", + "season", + "season_type", + "game_date" + ) + + expect_equal(sort(colnames(x)), sort(cols)) + expect_s3_class(x, 'data.frame') + +}) diff --git a/tests/testthat/test-load_nba_schedule.R b/tests/testthat/test-load_nba_schedule.R new file mode 100644 index 00000000..20fb7852 --- /dev/null +++ b/tests/testthat/test-load_nba_schedule.R @@ -0,0 +1,77 @@ +test_that("hoopR Loader NBA Schedule", { + skip_on_cran() + x <- load_nba_schedule(seasons = most_recent_nba_season()) + + + cols <- c( + "id", + "uid", + "date", + "attendance", + "time_valid", + "neutral_site", + "conference_competition", + "recent", + "start_date", + "notes_type", + "notes_headline", + "type_id", + "type_abbreviation", + "venue_id", + "venue_full_name", + "venue_address_city", + "venue_capacity", + "venue_indoor", + "status_clock", + "status_display_clock", + "status_period", + "status_type_id", + "status_type_name", + "status_type_state", + "status_type_completed", + "status_type_description", + "status_type_detail", + "status_type_short_detail", + "format_regulation_periods", + "home_id", + "home_uid", + "home_location", + "home_name", + "home_abbreviation", + "home_display_name", + "home_short_display_name", + "home_color", + "home_alternate_color", + "home_is_active", + "home_venue_id", + "home_logo", + "home_score", + "home_winner", + "away_id", + "away_uid", + "away_location", + "away_name", + "away_abbreviation", + "away_display_name", + "away_short_display_name", + "away_color", + "away_alternate_color", + "away_is_active", + "away_venue_id", + "away_logo", + "away_score", + "away_winner", + "game_id", + "season", + "season_type", + "venue_address_state", + "status_type_alt_detail", + "PBP", + "team_box", + "player_box" + ) + + expect_equal(sort(colnames(x)), sort(cols)) + expect_s3_class(x, 'data.frame') + +}) diff --git a/tests/testthat/test-load_nba_team_box.R b/tests/testthat/test-load_nba_team_box.R new file mode 100644 index 00000000..79595d2b --- /dev/null +++ b/tests/testthat/test-load_nba_team_box.R @@ -0,0 +1,55 @@ +test_that("hoopR Loader NBA Team Box", { + skip_on_cran() + x <- load_nba_team_box(seasons = most_recent_nba_season()) + + + cols <- c( + "team_id", + "team_uid", + "team_slug", + "team_location", + "team_name", + "team_abbreviation", + "team_display_name", + "team_short_display_name", + "team_color", + "team_alternate_color", + "team_logo", + "field_goals_made_field_goals_attempted", + "field_goal_pct", + "three_point_field_goals_made_three_point_field_goals_attempted", + "three_point_field_goal_pct", + "free_throws_made_free_throws_attempted", + "free_throw_pct", + "total_rebounds", + "offensive_rebounds", + "defensive_rebounds", + "assists", + "steals", + "blocks", + "turnovers", + "team_turnovers", + "total_turnovers", + "technical_fouls", + "total_technical_fouls", + "flagrant_fouls", + "turnover_points", + "fast_break_points", + "points_in_paint", + "fouls", + "largest_lead", + "home_away", + "opponent_id", + "opponent_name", + "opponent_mascot", + "opponent_abbrev", + "game_id", + "season", + "season_type", + "game_date" + ) + + expect_equal(sort(colnames(x)), sort(cols)) + expect_s3_class(x, 'data.frame') + +}) diff --git a/tests/testthat/test-nba_data_pbp.R b/tests/testthat/test-nba_data_pbp.R index 430cef1c..dd9c1f7a 100644 --- a/tests/testthat/test-nba_data_pbp.R +++ b/tests/testthat/test-nba_data_pbp.R @@ -4,24 +4,26 @@ test_that("NBA Data PBP", { x <- nba_data_pbp(game_id = "0021900001") cols <- c( + "game_id", + "league", "period", - "evt", - "cl", - "de", + "event_num", + "clock", + "description", "locX", "locY", "opt1", "opt2", - "mtype", - "etype", - "opid", - "tid", - "pid", - "hs", - "vs", - "epid", - "oftid", - "ord" + "event_action_type", + "event_type", + "team_id", + "offense_team_id", + "player1_id", + "player2_id", + "player3_id", + "home_score", + "away_score", + "order" ) expect_equal(sort(colnames(x)), sort(cols)) diff --git a/tests/testthat/test-nba_pbp.R b/tests/testthat/test-nba_pbp.R index 3629fc2a..98e0ae7f 100644 --- a/tests/testthat/test-nba_pbp.R +++ b/tests/testthat/test-nba_pbp.R @@ -7,8 +7,8 @@ test_that("NBA PBP", { cols_x1 <- c( "game_id", "event_num", - "event_msg_type", - "event_msg_action_type", + "event_type", + "event_action_type", "period", "minute_game", "time_remaining", diff --git a/tests/testthat/test-nba_pbps.R b/tests/testthat/test-nba_pbps.R index d4df9ea7..9ab59d61 100644 --- a/tests/testthat/test-nba_pbps.R +++ b/tests/testthat/test-nba_pbps.R @@ -7,8 +7,8 @@ test_that("NBA PBPs", { cols_x1 <- c( "game_id", "event_num", - "event_msg_type", - "event_msg_action_type", + "event_type", + "event_action_type", "period", "minute_game", "time_remaining", diff --git a/tests/testthat/test-nba_scoreboardv3.R b/tests/testthat/test-nba_scoreboardv3.R new file mode 100644 index 00000000..0a25ae52 --- /dev/null +++ b/tests/testthat/test-nba_scoreboardv3.R @@ -0,0 +1,96 @@ +test_that("NBA Scoreboard V3", { + skip_on_cran() + skip_on_ci() + + x <- nba_scoreboardv3(league_id = '00', game_date = '2023-03-26') + + cols <- c( + "game_id", + "game_code", + "game_status", + "game_status_text", + "game_date", + "game_time_utc", + "game_et", + "home_team_id", + "home_team_name", + "home_team_city", + "home_team_tricode", + "home_team_slug", + "away_team_id", + "away_team_name", + "away_team_city", + "away_team_tricode", + "away_team_slug", + "period", + "game_clock", + "regulation_periods", + "series_game_number", + "series_text", + "if_necessary", + "series_conference", + "po_round_desc", + "game_subtype", + "game_home_leaders_person_id", + "game_home_leaders_name", + "game_home_leaders_player_slug", + "game_home_leaders_jersey_num", + "game_home_leaders_position", + "game_home_leaders_team_tricode", + "game_home_leaders_points", + "game_home_leaders_rebounds", + "game_home_leaders_assists", + "game_away_leaders_person_id", + "game_away_leaders_name", + "game_away_leaders_player_slug", + "game_away_leaders_jersey_num", + "game_away_leaders_position", + "game_away_leaders_team_tricode", + "game_away_leaders_points", + "game_away_leaders_rebounds", + "game_away_leaders_assists", + "team_home_leaders_person_id", + "team_home_leaders_name", + "team_home_leaders_player_slug", + "team_home_leaders_jersey_num", + "team_home_leaders_position", + "team_home_leaders_team_tricode", + "team_home_leaders_points", + "team_home_leaders_rebounds", + "team_home_leaders_assists", + "team_away_leaders_person_id", + "team_away_leaders_name", + "team_away_leaders_player_slug", + "team_away_leaders_jersey_num", + "team_away_leaders_position", + "team_away_leaders_team_tricode", + "team_away_leaders_points", + "team_away_leaders_rebounds", + "team_away_leaders_assists", + "team_season_leaders_flag", + "home_wins", + "home_losses", + "home_score", + "home_seed", + "home_in_bonus", + "home_timeouts_remaining", + "home_periods", + "away_wins", + "away_losses", + "away_score", + "away_seed", + "away_in_bonus", + "away_timeouts_remaining", + "away_periods", + "league_id", + "league", + "broadcasters" + ) + + + expect_equal(sort(colnames(x)), sort(cols)) + expect_s3_class(x, 'data.frame') + + Sys.sleep(3) + +})