nba_rb 0.1.1 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +107 -0
- data/fixtures/vcr_cassettes/has_working_BoxscoreAdvanced_endpoint.yml +85 -0
- data/fixtures/vcr_cassettes/has_working_BoxscoreFourFactors_endpoint.yml +85 -0
- data/fixtures/vcr_cassettes/has_working_BoxscoreScoring_endpoint.yml +85 -0
- data/fixtures/vcr_cassettes/has_working_BoxscoreUsage_endpoint.yml +85 -0
- data/fixtures/vcr_cassettes/has_working_Boxscore_endpoint.yml +85 -0
- data/fixtures/vcr_cassettes/has_working_PlayerCareer_endpoint.yml +59 -0
- data/fixtures/vcr_cassettes/has_working_PlayerList_endpoint.yml +184 -0
- data/fixtures/vcr_cassettes/has_working_PlayerSummary_endpoint.yml +61 -0
- data/lib/helpers/stats_request.rb +8 -4
- data/lib/nba_rb.rb +1 -1
- data/lib/nba_rb/constants.rb +279 -277
- data/lib/nba_rb/game.rb +16 -195
- data/lib/nba_rb/game/boxscore.rb +94 -0
- data/lib/nba_rb/game/boxscore_advanced.rb +15 -0
- data/lib/nba_rb/game/boxscore_four_factors.rb +19 -0
- data/lib/nba_rb/game/boxscore_misc.rb +19 -0
- data/lib/nba_rb/game/boxscore_scoring.rb +25 -0
- data/lib/nba_rb/game/boxscore_usage.rb +19 -0
- data/lib/nba_rb/game/hustle.rb +29 -0
- data/lib/nba_rb/game/play_by_play.rb +30 -0
- data/lib/nba_rb/game/today_schedule.rb +63 -0
- data/lib/nba_rb/player.rb +75 -921
- data/lib/nba_rb/player/career.rb +111 -0
- data/lib/nba_rb/player/clutch_splits.rb +70 -0
- data/lib/nba_rb/player/dashboard.rb +104 -0
- data/lib/nba_rb/player/defense_tracking.rb +7 -0
- data/lib/nba_rb/player/game_logs.rb +34 -0
- data/lib/nba_rb/player/general_splits.rb +123 -0
- data/lib/nba_rb/player/in_game_splits.rb +55 -0
- data/lib/nba_rb/player/last_n_games_splits.rb +27 -0
- data/lib/nba_rb/player/list.rb +32 -0
- data/lib/nba_rb/player/opponent_splits.rb +39 -0
- data/lib/nba_rb/player/pass_tracking.rb +15 -0
- data/lib/nba_rb/player/performance_splits.rb +19 -0
- data/lib/nba_rb/player/player_dashboard.rb +104 -0
- data/lib/nba_rb/player/player_game_logs.rb +34 -0
- data/lib/nba_rb/player/player_general_splits.rb +123 -0
- data/lib/nba_rb/player/player_in_game_splits.rb +55 -0
- data/lib/nba_rb/player/player_last_n_games_splits.rb +27 -0
- data/lib/nba_rb/player/player_list.rb +32 -0
- data/lib/nba_rb/player/player_opponent_splits.rb +39 -0
- data/lib/nba_rb/player/player_performance_splits.rb +19 -0
- data/lib/nba_rb/player/player_profile.rb +19 -0
- data/lib/nba_rb/player/player_shooting_splits.rb +35 -0
- data/lib/nba_rb/player/player_summary.rb +29 -0
- data/lib/nba_rb/player/player_vs_player.rb +132 -0
- data/lib/nba_rb/player/player_year_over_year_splits.rb +17 -0
- data/lib/nba_rb/player/profile.rb +19 -0
- data/lib/nba_rb/player/rebound_log_tracking.rb +7 -0
- data/lib/nba_rb/player/rebound_tracking.rb +23 -0
- data/lib/nba_rb/player/shooting_splits.rb +35 -0
- data/lib/nba_rb/player/shot_log_tracking.rb +7 -0
- data/lib/nba_rb/player/shot_tracking.rb +31 -0
- data/lib/nba_rb/player/summary.rb +29 -0
- data/lib/nba_rb/player/year_over_year_splits.rb +17 -0
- data/lib/nba_rb/team.rb +31 -725
- data/lib/nba_rb/team/clutch_splits.rb +49 -0
- data/lib/nba_rb/team/common_roster.rb +28 -0
- data/lib/nba_rb/team/dashboard.rb +98 -0
- data/lib/nba_rb/team/game_logs.rb +27 -0
- data/lib/nba_rb/team/general_splits.rb +27 -0
- data/lib/nba_rb/team/in_game_splits.rb +23 -0
- data/lib/nba_rb/team/last_n_games_splits.rb +27 -0
- data/lib/nba_rb/team/lineups.rb +88 -0
- data/lib/nba_rb/team/list.rb +22 -0
- data/lib/nba_rb/team/opponent_splits.rb +19 -0
- data/lib/nba_rb/team/pass_tracking.rb +15 -0
- data/lib/nba_rb/team/performance_splits.rb +19 -0
- data/lib/nba_rb/team/player_on_off_detail.rb +15 -0
- data/lib/nba_rb/team/player_on_off_summary.rb +15 -0
- data/lib/nba_rb/team/players.rb +11 -0
- data/lib/nba_rb/team/rebound_tracking.rb +23 -0
- data/lib/nba_rb/team/seasons.rb +26 -0
- data/lib/nba_rb/team/shooting_splits.rb +35 -0
- data/lib/nba_rb/team/shot_tracking.rb +27 -0
- data/lib/nba_rb/team/stats.rb +17 -0
- data/lib/nba_rb/team/summary.rb +34 -0
- data/lib/nba_rb/team/vs_player.rb +121 -0
- data/lib/nba_rb/team/year_over_year_splits.rb +11 -0
- data/lib/nba_rb/version.rb +1 -1
- data/nba_rb.gemspec +2 -0
- metadata +105 -3
@@ -0,0 +1,49 @@
|
|
1
|
+
module NbaRb
|
2
|
+
module Team
|
3
|
+
class ClutchSplits < Dashboard
|
4
|
+
@endpoint = 'teamdashboardbyclutch'
|
5
|
+
|
6
|
+
# Results in last X minutes <= X points
|
7
|
+
|
8
|
+
def last5min_deficit_5point
|
9
|
+
create_stats_hash(@data[1])
|
10
|
+
end
|
11
|
+
|
12
|
+
def last3min_deficit_5point
|
13
|
+
create_stats_hash(@data[2])
|
14
|
+
end
|
15
|
+
|
16
|
+
def last1min_deficit_5point
|
17
|
+
create_stats_hash(@data[3])
|
18
|
+
end
|
19
|
+
|
20
|
+
def last30sec_deficit_3point
|
21
|
+
create_stats_hash(@data[4])
|
22
|
+
end
|
23
|
+
|
24
|
+
def last10sec_deficit_3point
|
25
|
+
create_stats_hash(@data[5])
|
26
|
+
end
|
27
|
+
|
28
|
+
def last5min_plusminus_5point
|
29
|
+
# Last 5 minutes +/= 5 points
|
30
|
+
create_stats_hash(@data[6])
|
31
|
+
end
|
32
|
+
|
33
|
+
def last3min_plusminus_5point
|
34
|
+
# Last 3 minutes +/= 5 points
|
35
|
+
create_stats_hash(@data[7])
|
36
|
+
end
|
37
|
+
|
38
|
+
def last1min_plusminus_5point
|
39
|
+
# Last 1 minutes +/= 5 points
|
40
|
+
create_stats_hash(@data[8])
|
41
|
+
end
|
42
|
+
|
43
|
+
def last30sec_plusminus_5point
|
44
|
+
# Last 30 seconds +/= 3 points
|
45
|
+
create_stats_hash(@data[9])
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module NbaRb
|
2
|
+
module Team
|
3
|
+
class CommonRoster < BaseClass
|
4
|
+
attr_accessor :team_id,
|
5
|
+
:season,
|
6
|
+
:data
|
7
|
+
|
8
|
+
def initialize(*args)
|
9
|
+
super(*args)
|
10
|
+
|
11
|
+
@season ||= NbaRb::CURRENT_SEASON
|
12
|
+
|
13
|
+
res = stats_request('commonteamroster', 'TeamID' => team_id,
|
14
|
+
'Season' => season)
|
15
|
+
|
16
|
+
@data = res['resultSets']
|
17
|
+
end
|
18
|
+
|
19
|
+
def roster
|
20
|
+
create_stats_hash(@data[0])
|
21
|
+
end
|
22
|
+
|
23
|
+
def coaches
|
24
|
+
create_stats_hash(@data[1])
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
module NbaRb
|
2
|
+
module Team
|
3
|
+
class Dashboard < BaseClass
|
4
|
+
@endpoint = ''
|
5
|
+
|
6
|
+
class << self
|
7
|
+
attr_reader :endpoint
|
8
|
+
end
|
9
|
+
|
10
|
+
def endpoint
|
11
|
+
self.class.endpoint
|
12
|
+
end
|
13
|
+
|
14
|
+
attr_accessor :team_id,
|
15
|
+
:measure_type,
|
16
|
+
:per_mode,
|
17
|
+
:plus_minus,
|
18
|
+
:pace_adjust,
|
19
|
+
:rank,
|
20
|
+
:league_id,
|
21
|
+
:season,
|
22
|
+
:season_type,
|
23
|
+
:po_round,
|
24
|
+
:outcome,
|
25
|
+
:location,
|
26
|
+
:month,
|
27
|
+
:season_segment,
|
28
|
+
:date_from,
|
29
|
+
:date_to,
|
30
|
+
:opponent_team_id,
|
31
|
+
:vs_conference,
|
32
|
+
:vs_division,
|
33
|
+
:game_segment,
|
34
|
+
:period,
|
35
|
+
:shot_clock_range,
|
36
|
+
:last_n_games,
|
37
|
+
:data
|
38
|
+
|
39
|
+
def initialize(*args)
|
40
|
+
super(*args)
|
41
|
+
|
42
|
+
@endpoint = ''
|
43
|
+
@measure_type ||= NbaRb::MeasureType.default
|
44
|
+
@per_mode ||= NbaRb::PerMode.default
|
45
|
+
@plus_minus ||= NbaRb::PlusMinus.default
|
46
|
+
@pace_adjust ||= NbaRb::PaceAdjust.default
|
47
|
+
@rank ||= NbaRb::Rank.default
|
48
|
+
@league_id ||= NbaRb::League.default
|
49
|
+
@season ||= NbaRb::CURRENT_SEASON
|
50
|
+
@season_type ||= NbaRb::SeasonType.default
|
51
|
+
@po_round ||= NbaRb::PlayoffRound.default
|
52
|
+
@outcome ||= NbaRb::Outcome.default
|
53
|
+
@location ||= NbaRb::Location.default
|
54
|
+
@month ||= NbaRb::Month.default
|
55
|
+
@season_segment ||= NbaRb::SeasonSegment.default
|
56
|
+
@date_from ||= NbaRb::DateFrom.default
|
57
|
+
@date_to ||= NbaRb::DateTo.default
|
58
|
+
@opponent_team_id ||= NbaRb::OpponentTeamID.default
|
59
|
+
@vs_conference ||= NbaRb::VsConference.default
|
60
|
+
@vs_division ||= NbaRb::VsDivision.default
|
61
|
+
@game_segment ||= NbaRb::GameSegment.default
|
62
|
+
@period ||= NbaRb::Period.default
|
63
|
+
@shot_clock_range ||= NbaRb::ShotClockRange.default
|
64
|
+
@last_n_games ||= NbaRb::LastNGames.default
|
65
|
+
|
66
|
+
res = stats_request(endpoint, 'TeamID' => team_id,
|
67
|
+
'MeasureType' => measure_type,
|
68
|
+
'PerMode' => per_mode,
|
69
|
+
'PlusMinus' => plus_minus,
|
70
|
+
'PaceAdjust' => pace_adjust,
|
71
|
+
'Rank' => rank,
|
72
|
+
'LeagueID' => league_id,
|
73
|
+
'Season' => season,
|
74
|
+
'SeasonType' => season_type,
|
75
|
+
'PORound' => po_round,
|
76
|
+
'Outcome' => outcome,
|
77
|
+
'Location' => location,
|
78
|
+
'Month' => month,
|
79
|
+
'SeasonSegment' => season_segment,
|
80
|
+
'DateFrom' => date_from,
|
81
|
+
'DateTo' => date_to,
|
82
|
+
'OpponentTeamID' => opponent_team_id,
|
83
|
+
'VsConference' => vs_conference,
|
84
|
+
'VsDivision' => vs_division,
|
85
|
+
'GameSegment' => game_segment,
|
86
|
+
'Period' => period,
|
87
|
+
'ShotClockRange' => shot_clock_range,
|
88
|
+
'LastNGames' => last_n_games)
|
89
|
+
|
90
|
+
@data = res['resultSets']
|
91
|
+
end
|
92
|
+
|
93
|
+
def overall
|
94
|
+
create_stats_hash(@data[0])
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module NbaRb
|
2
|
+
module Team
|
3
|
+
class GameLogs
|
4
|
+
attr_accessor :team_id,
|
5
|
+
:season,
|
6
|
+
:season_type,
|
7
|
+
:data
|
8
|
+
|
9
|
+
def initialize(*args)
|
10
|
+
super(*args)
|
11
|
+
|
12
|
+
@season ||= NbaRb::CURRENT_SEASON
|
13
|
+
@season_type ||= NbaRb::SeasonType.default
|
14
|
+
|
15
|
+
res = stats_request('teamgamelog', 'TeamID' => team_id,
|
16
|
+
'Season' => season,
|
17
|
+
'SeasonType' => season_type)
|
18
|
+
|
19
|
+
@data = res['resultSets']
|
20
|
+
end
|
21
|
+
|
22
|
+
def info
|
23
|
+
create_stats_hash(@data[1])
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module NbaRb
|
2
|
+
module Team
|
3
|
+
class GeneralSplits < Dashboard
|
4
|
+
@endpoint = 'teamdashboardbygeneralsplits'
|
5
|
+
|
6
|
+
def by_location
|
7
|
+
create_stats_hash(@data[1])
|
8
|
+
end
|
9
|
+
|
10
|
+
def wins_losses
|
11
|
+
create_stats_hash(@data[2])
|
12
|
+
end
|
13
|
+
|
14
|
+
def monthly
|
15
|
+
create_stats_hash(@data[3])
|
16
|
+
end
|
17
|
+
|
18
|
+
def pre_post_all_star
|
19
|
+
create_stats_hash(@data[4])
|
20
|
+
end
|
21
|
+
|
22
|
+
def days_rest
|
23
|
+
create_stats_hash(@data[5])
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module NbaRb
|
2
|
+
module Team
|
3
|
+
class InGamesSplits < Dashboard
|
4
|
+
@endpoint = 'teamdashboardbygamesplits'
|
5
|
+
|
6
|
+
def by_half
|
7
|
+
create_stats_hash(@data[1])
|
8
|
+
end
|
9
|
+
|
10
|
+
def by_period
|
11
|
+
create_stats_hash(@data[2])
|
12
|
+
end
|
13
|
+
|
14
|
+
def by_score_margin
|
15
|
+
create_stats_hash(@data[3])
|
16
|
+
end
|
17
|
+
|
18
|
+
def by_actual_margin
|
19
|
+
create_stats_hash(@data[4])
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module NbaRb
|
2
|
+
module Team
|
3
|
+
class LastNGamesSplits < Dashboard
|
4
|
+
@endpoint = 'teamdashboardbylastngames'
|
5
|
+
|
6
|
+
def last_5
|
7
|
+
create_stats_hash(@data[1])
|
8
|
+
end
|
9
|
+
|
10
|
+
def last_10
|
11
|
+
create_stats_hash(@data[2])
|
12
|
+
end
|
13
|
+
|
14
|
+
def last_15
|
15
|
+
create_stats_hash(@data[3])
|
16
|
+
end
|
17
|
+
|
18
|
+
def last_20
|
19
|
+
create_stats_hash(@data[4])
|
20
|
+
end
|
21
|
+
|
22
|
+
def game_number
|
23
|
+
create_stats_hash(@data[5])
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
module NbaRb
|
2
|
+
module Team
|
3
|
+
class Lineups
|
4
|
+
attr_accessor :team_id,
|
5
|
+
:game_id,
|
6
|
+
:group_quantity,
|
7
|
+
:season,
|
8
|
+
:season_type,
|
9
|
+
:measure_type,
|
10
|
+
:per_mode,
|
11
|
+
:plus_minus,
|
12
|
+
:pace_adjust,
|
13
|
+
:rank,
|
14
|
+
:outcome,
|
15
|
+
:location,
|
16
|
+
:month,
|
17
|
+
:season_segment,
|
18
|
+
:date_from,
|
19
|
+
:date_to,
|
20
|
+
:opponent_team_id,
|
21
|
+
:vs_conference,
|
22
|
+
:vs_division,
|
23
|
+
:game_segment,
|
24
|
+
:period,
|
25
|
+
:last_n_games,
|
26
|
+
:data
|
27
|
+
|
28
|
+
def initialize(*args)
|
29
|
+
super(*args)
|
30
|
+
|
31
|
+
@game_id ||= ''
|
32
|
+
@group_quantity ||= NbaRb::GroupQuantity.default
|
33
|
+
@season ||= NbaRb::CURRENT_SEASON
|
34
|
+
@season_type ||= NbaRb::SeasonType.default
|
35
|
+
@measure_type ||= NbaRb::MeasureType.default
|
36
|
+
@per_mode ||= NbaRb::PerMode.default
|
37
|
+
@plus_minus ||= NbaRb::PlusMinus.default
|
38
|
+
@pace_adjust ||= NbaRb::PaceAdjust.default
|
39
|
+
@rank ||= NbaRb::Rank.default
|
40
|
+
@outcome ||= NbaRb::Outcome.default
|
41
|
+
@location ||= NbaRb::Location.default
|
42
|
+
@month ||= NbaRb::Month.default
|
43
|
+
@season_segment ||= NbaRb::SeasonSegment.default
|
44
|
+
@date_from ||= NbaRb::DateFrom.default
|
45
|
+
@date_to ||= NbaRb::DateTo.default
|
46
|
+
@opponent_team_id ||= NbaRb::OpponentTeamID.default
|
47
|
+
@vs_conference ||= NbaRb::VsConference.default
|
48
|
+
@vs_division ||= NbaRb::VsDivision.default
|
49
|
+
@game_segment ||= NbaRb::GameSegment.default
|
50
|
+
@period ||= NbaRb::Period.default
|
51
|
+
@last_n_games ||= NbaRb::LastNGames.default
|
52
|
+
|
53
|
+
res = stats_request('teamdashlineups', 'GroupQuantity' => group_quantity,
|
54
|
+
'GameID' => game_id,
|
55
|
+
'TeamID' => team_id,
|
56
|
+
'Season' => season,
|
57
|
+
'SeasonType' => season_type,
|
58
|
+
'MeasureType' => measure_type,
|
59
|
+
'PerMode' => per_mode,
|
60
|
+
'PlusMinus' => plus_minus,
|
61
|
+
'PaceAdjust' => pace_adjust,
|
62
|
+
'Rank' => rank,
|
63
|
+
'Outcome' => outcome,
|
64
|
+
'Location' => location,
|
65
|
+
'Month' => month,
|
66
|
+
'SeasonSegment' => season_segment,
|
67
|
+
'DateFrom' => date_from,
|
68
|
+
'DateTo' => date_to,
|
69
|
+
'OpponentTeamID' => opponent_team_id,
|
70
|
+
'VsConference' => vs_conference,
|
71
|
+
'VsDivision' => vs_division,
|
72
|
+
'GameSegment' => game_segment,
|
73
|
+
'Period' => period,
|
74
|
+
'LastNGames' => last_n_games)
|
75
|
+
|
76
|
+
@data = res['resultSets']
|
77
|
+
end
|
78
|
+
|
79
|
+
def overall
|
80
|
+
create_stats_hash(@data[0])
|
81
|
+
end
|
82
|
+
|
83
|
+
def lineups
|
84
|
+
create_stats_hash(@data[1])
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module NbaRb
|
2
|
+
module Team
|
3
|
+
class List < BaseClass
|
4
|
+
attr_accessor :league_id,
|
5
|
+
:data
|
6
|
+
|
7
|
+
def initialize(*args)
|
8
|
+
super(*args)
|
9
|
+
|
10
|
+
@league_id ||= NbaRb::League.NBA
|
11
|
+
|
12
|
+
res = stats_request('commonteamyears', 'LeagueID' => league_id)
|
13
|
+
|
14
|
+
@data = res['resultSets']
|
15
|
+
end
|
16
|
+
|
17
|
+
def info
|
18
|
+
create_stats_hash(@data[0])
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module NbaRb
|
2
|
+
module Team
|
3
|
+
class OpponentSplits < Dashboard
|
4
|
+
@endpoint = 'teamdashboardbyopponent'
|
5
|
+
|
6
|
+
def by_conference
|
7
|
+
create_stats_hash(@data[1])
|
8
|
+
end
|
9
|
+
|
10
|
+
def by_division
|
11
|
+
create_stats_hash(@data[2])
|
12
|
+
end
|
13
|
+
|
14
|
+
def by_opponent
|
15
|
+
create_stats_hash(@data[3])
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module NbaRb
|
2
|
+
module Team
|
3
|
+
class PerformanceSplits < Dashboard
|
4
|
+
@endpoint = 'teamdashboardbyteamperformance'
|
5
|
+
|
6
|
+
def score_differential
|
7
|
+
create_stats_hash(@data[1])
|
8
|
+
end
|
9
|
+
|
10
|
+
def points_scored
|
11
|
+
create_stats_hash(@data[2])
|
12
|
+
end
|
13
|
+
|
14
|
+
def points_against
|
15
|
+
create_stats_hash(@data[3])
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|