nba_rb 0.1.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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,111 @@
|
|
1
|
+
module NbaRb
|
2
|
+
module Player
|
3
|
+
class Career
|
4
|
+
include Initializable
|
5
|
+
include StatsRequest
|
6
|
+
include StatsHash
|
7
|
+
|
8
|
+
class << self
|
9
|
+
attr_reader :endpoint
|
10
|
+
end
|
11
|
+
|
12
|
+
def endpoint
|
13
|
+
self.class.endpoint
|
14
|
+
end
|
15
|
+
|
16
|
+
attr_accessor :player_id,
|
17
|
+
:league_id,
|
18
|
+
:per_mode,
|
19
|
+
:data
|
20
|
+
|
21
|
+
def initialize(*args)
|
22
|
+
super(*args)
|
23
|
+
|
24
|
+
@per_mode ||= NbaRb::PerMode.per_game
|
25
|
+
@league_id ||= NbaRb::League.NBA
|
26
|
+
|
27
|
+
res = stats_request('playercareerstats', 'PlayerID' => player_id,
|
28
|
+
'LeagueID' => league_id,
|
29
|
+
'PerMode' => per_mode)
|
30
|
+
|
31
|
+
@data = res['resultSets']
|
32
|
+
end
|
33
|
+
|
34
|
+
def regular_season_totals
|
35
|
+
create_stats_hash(@data[0])
|
36
|
+
end
|
37
|
+
|
38
|
+
def season_totals_by_year(year)
|
39
|
+
regular_season_totals.each do |hash|
|
40
|
+
return hash if hash['SEASON_ID'].include? year
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def regular_season_career_totals
|
45
|
+
create_stats_hash(@data[1])
|
46
|
+
end
|
47
|
+
|
48
|
+
def post_season_totals
|
49
|
+
create_stats_hash(@data[2])
|
50
|
+
end
|
51
|
+
|
52
|
+
def post_season_totals_by_year(year)
|
53
|
+
post_season_totals.each do |hash|
|
54
|
+
return hash if hash['SEASON_ID'].include? year
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def post_season_career_totals
|
59
|
+
create_stats_hash(@data[3])
|
60
|
+
end
|
61
|
+
|
62
|
+
def all_star_season_totals
|
63
|
+
create_stats_hash(@data[4])
|
64
|
+
end
|
65
|
+
|
66
|
+
def all_star_season_totals_by_year(year)
|
67
|
+
all_star_season_totals.each do |hash|
|
68
|
+
return hash if hash['SEASON_ID'].include? year
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def career_all_star_season_totals
|
73
|
+
create_stats_hash(@data[5])
|
74
|
+
end
|
75
|
+
|
76
|
+
def college_season_totals
|
77
|
+
create_stats_hash(@data[6])
|
78
|
+
end
|
79
|
+
|
80
|
+
def college_season_totals_by_year(year)
|
81
|
+
college_season_totals.each do |hash|
|
82
|
+
return hash if hash['SEASON_ID'].include? year
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def career_college_season_totals
|
87
|
+
create_stats_hash(@data[7])
|
88
|
+
end
|
89
|
+
|
90
|
+
def regular_season_rankings
|
91
|
+
create_stats_hash(@data[8])
|
92
|
+
end
|
93
|
+
|
94
|
+
def regular_season_rankings_by_year(year)
|
95
|
+
regular_season_rankings.each do |hash|
|
96
|
+
return hash if hash['SEASON_ID'].include? year
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def post_season_rankings
|
101
|
+
create_stats_hash(@data[9])
|
102
|
+
end
|
103
|
+
|
104
|
+
def post_season_rankings_by_year(year)
|
105
|
+
post_season_rankings.each do |hash|
|
106
|
+
return hash if hash['SEASON_ID'].include? year
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module NbaRb
|
2
|
+
module Player
|
3
|
+
class ClutchSplits < NbaRb::Player::Dashboard
|
4
|
+
@endpoint = 'playerdashboardbyclutch'
|
5
|
+
|
6
|
+
def last5min_deficit_5point
|
7
|
+
''"
|
8
|
+
Results in last 5 minutes <= 5 points
|
9
|
+
"''
|
10
|
+
create_stats_hash(@data[1])
|
11
|
+
end
|
12
|
+
|
13
|
+
def last3min_deficit_5point
|
14
|
+
''"
|
15
|
+
Results in last 5 minutes <= 5 points
|
16
|
+
"''
|
17
|
+
create_stats_hash(@data[2])
|
18
|
+
end
|
19
|
+
|
20
|
+
def last1min_deficit_5point
|
21
|
+
''"
|
22
|
+
Results in last 5 minutes <= 5 points
|
23
|
+
"''
|
24
|
+
create_stats_hash(@data[3])
|
25
|
+
end
|
26
|
+
|
27
|
+
def last30sec_deficit_3point
|
28
|
+
''"
|
29
|
+
Results in last 5 minutes <= 5 points
|
30
|
+
"''
|
31
|
+
create_stats_hash(@data[4])
|
32
|
+
end
|
33
|
+
|
34
|
+
def last10sec_deficit_3point
|
35
|
+
''"
|
36
|
+
Results in last 5 minutes <= 5 points
|
37
|
+
"''
|
38
|
+
create_stats_hash(@data[5])
|
39
|
+
end
|
40
|
+
|
41
|
+
def last5min_plusminus_5point
|
42
|
+
''"
|
43
|
+
Last 5 minutes +/= 5 points
|
44
|
+
"''
|
45
|
+
create_stats_hash(@data[6])
|
46
|
+
end
|
47
|
+
|
48
|
+
def last3min_plusminus_5point
|
49
|
+
''"
|
50
|
+
Last 3 minutes +/= 5 points
|
51
|
+
"''
|
52
|
+
create_stats_hash(@data[7])
|
53
|
+
end
|
54
|
+
|
55
|
+
def last1min_plusminus_5point
|
56
|
+
''"
|
57
|
+
Last 1 minutes +/= 5 points
|
58
|
+
"''
|
59
|
+
create_stats_hash(@data[8])
|
60
|
+
end
|
61
|
+
|
62
|
+
def last30sec_plusminus_5point
|
63
|
+
''"
|
64
|
+
Last 30 seconds +/= 3 points
|
65
|
+
"''
|
66
|
+
create_stats_hash(@data[9])
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
module NbaRb
|
2
|
+
module Player
|
3
|
+
class Dashboard
|
4
|
+
include Initializable
|
5
|
+
include StatsRequest
|
6
|
+
include StatsHash
|
7
|
+
|
8
|
+
class << self
|
9
|
+
attr_reader :endpoint
|
10
|
+
end
|
11
|
+
|
12
|
+
def endpoint
|
13
|
+
self.class.endpoint
|
14
|
+
end
|
15
|
+
|
16
|
+
attr_accessor :player_id,
|
17
|
+
:team_id,
|
18
|
+
:measure_type,
|
19
|
+
:per_mode,
|
20
|
+
:plus_minus,
|
21
|
+
:pace_adjust,
|
22
|
+
:rank,
|
23
|
+
:league_id,
|
24
|
+
:season,
|
25
|
+
:season_type,
|
26
|
+
:po_round,
|
27
|
+
:outcome,
|
28
|
+
:location,
|
29
|
+
:month,
|
30
|
+
:season_segment,
|
31
|
+
:date_from,
|
32
|
+
:date_to,
|
33
|
+
:opponent_team_id,
|
34
|
+
:vs_conference,
|
35
|
+
:vs_division,
|
36
|
+
:game_segment,
|
37
|
+
:period,
|
38
|
+
:shot_clock_range,
|
39
|
+
:last_n_games,
|
40
|
+
:data
|
41
|
+
|
42
|
+
@endpoint = ''
|
43
|
+
|
44
|
+
def initialize(*args)
|
45
|
+
super(*args)
|
46
|
+
|
47
|
+
@team_id ||= 0
|
48
|
+
@measure_type ||= NbaRb::MeasureType.default
|
49
|
+
@per_mode ||= NbaRb::PerMode.default
|
50
|
+
@plus_minus ||= NbaRb::PlusMinus.default
|
51
|
+
@pace_adjust ||= NbaRb::PaceAdjust.default
|
52
|
+
@rank ||= NbaRb::PaceAdjust.default
|
53
|
+
@league_id ||= NbaRb::League.default
|
54
|
+
@season ||= NbaRb::CURRENT_SEASON
|
55
|
+
@season_type ||= NbaRb::SeasonType.default
|
56
|
+
@po_round ||= NbaRb::PlayoffRound.default
|
57
|
+
@outcome ||= NbaRb::Outcome.default
|
58
|
+
@location ||= NbaRb::Location.default
|
59
|
+
@month ||= NbaRb::Month.default
|
60
|
+
@season_segment ||= NbaRb::SeasonSegment.default
|
61
|
+
@date_from ||= NbaRb::DateFrom.default
|
62
|
+
@date_to ||= NbaRb::DateTo.default
|
63
|
+
@opponent_team_id ||= NbaRb::OpponentTeamID.default
|
64
|
+
@vs_conference ||= NbaRb::VsConference.default
|
65
|
+
@vs_division ||= NbaRb::VsDivision.default
|
66
|
+
@game_segment ||= NbaRb::GameSegment.default
|
67
|
+
@period ||= NbaRb::Period.default
|
68
|
+
@shot_clock_range ||= NbaRb::ShotClockRange.default
|
69
|
+
@last_n_games ||= NbaRb::LastNGames.default
|
70
|
+
|
71
|
+
res = stats_request(endpoint, 'PlayerID' => player_id,
|
72
|
+
'TeamID' => team_id,
|
73
|
+
'MeasureType' => measure_type,
|
74
|
+
'PerMode' => per_mode,
|
75
|
+
'PlusMinus' => plus_minus,
|
76
|
+
'PaceAdjust' => pace_adjust,
|
77
|
+
'Rank' => rank,
|
78
|
+
'LeagueID' => league_id,
|
79
|
+
'Season' => season,
|
80
|
+
'SeasonType' => season_type,
|
81
|
+
'PORound' => po_round,
|
82
|
+
'Outcome' => outcome,
|
83
|
+
'Location' => location,
|
84
|
+
'Month' => month,
|
85
|
+
'SeasonSegment' => season_segment,
|
86
|
+
'DateFrom' => date_from,
|
87
|
+
'DateTo' => date_to,
|
88
|
+
'OpponentTeamID' => opponent_team_id,
|
89
|
+
'VsConference' => vs_conference,
|
90
|
+
'VsDivision' => vs_division,
|
91
|
+
'GameSegment' => game_segment,
|
92
|
+
'Period' => period,
|
93
|
+
'ShotClockRange' => shot_clock_range,
|
94
|
+
'LastNGames' => last_n_games)
|
95
|
+
|
96
|
+
@data = res['resultSets']
|
97
|
+
end
|
98
|
+
|
99
|
+
def overall
|
100
|
+
create_stats_hash(@data[0])
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module NbaRb
|
2
|
+
module Player
|
3
|
+
class GameLogs
|
4
|
+
include Initializable
|
5
|
+
include StatsRequest
|
6
|
+
include StatsHash
|
7
|
+
|
8
|
+
attr_accessor :player_id,
|
9
|
+
:league_id,
|
10
|
+
:season,
|
11
|
+
:season_type,
|
12
|
+
:data
|
13
|
+
|
14
|
+
def initialize(*args)
|
15
|
+
super(*args)
|
16
|
+
|
17
|
+
@league_id ||= NbaRb::League.NBA
|
18
|
+
@season ||= NbaRb::CURRENT_SEASON
|
19
|
+
@season_type ||= NbaRb::SeasonType.regular
|
20
|
+
|
21
|
+
res = stats_request('playergamelog', 'PlayerID' => player_id,
|
22
|
+
'LeagueID' => league_id,
|
23
|
+
'Season' => season,
|
24
|
+
'SeasonType' => season_type)
|
25
|
+
|
26
|
+
@data = res['resultSets']
|
27
|
+
end
|
28
|
+
|
29
|
+
def info
|
30
|
+
create_stats_hash(@data[0])
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,123 @@
|
|
1
|
+
module NbaRb
|
2
|
+
module Player
|
3
|
+
class GeneralSplits < NbaRb::Player::Dashboard
|
4
|
+
@endpoint = 'playerdashboardbygeneralsplits'
|
5
|
+
|
6
|
+
def location
|
7
|
+
create_stats_hash(@data[1])
|
8
|
+
end
|
9
|
+
|
10
|
+
def home
|
11
|
+
location[0]
|
12
|
+
end
|
13
|
+
|
14
|
+
def away
|
15
|
+
location[1]
|
16
|
+
end
|
17
|
+
|
18
|
+
def win_losses
|
19
|
+
create_stats_hash(@data[2])
|
20
|
+
end
|
21
|
+
|
22
|
+
def in_wins
|
23
|
+
win_losses[0]
|
24
|
+
end
|
25
|
+
|
26
|
+
def in_losses
|
27
|
+
win_losses[1]
|
28
|
+
end
|
29
|
+
|
30
|
+
def by_month
|
31
|
+
create_stats_hash(@data[3])
|
32
|
+
end
|
33
|
+
|
34
|
+
def in_october
|
35
|
+
by_month[0]
|
36
|
+
end
|
37
|
+
|
38
|
+
def in_november
|
39
|
+
by_month[1]
|
40
|
+
end
|
41
|
+
|
42
|
+
def in_december
|
43
|
+
by_month[2]
|
44
|
+
end
|
45
|
+
|
46
|
+
def in_january
|
47
|
+
by_month[3]
|
48
|
+
end
|
49
|
+
|
50
|
+
def in_february
|
51
|
+
by_month[4]
|
52
|
+
end
|
53
|
+
|
54
|
+
def in_march
|
55
|
+
by_month[5]
|
56
|
+
end
|
57
|
+
|
58
|
+
def in_april
|
59
|
+
by_month[6]
|
60
|
+
end
|
61
|
+
|
62
|
+
def in_may
|
63
|
+
by_month[7]
|
64
|
+
end
|
65
|
+
|
66
|
+
def in_june
|
67
|
+
by_month[8]
|
68
|
+
end
|
69
|
+
|
70
|
+
def pre_post_all_star
|
71
|
+
create_stats_hash(@data[4])
|
72
|
+
end
|
73
|
+
|
74
|
+
def pre_all_star
|
75
|
+
pre_post_all_star[0]
|
76
|
+
end
|
77
|
+
|
78
|
+
def post_all_star
|
79
|
+
pre_post_all_star[1]
|
80
|
+
end
|
81
|
+
|
82
|
+
def starting_position
|
83
|
+
create_stats_hash(@data[5])
|
84
|
+
end
|
85
|
+
|
86
|
+
def as_starter
|
87
|
+
starting_position[0]
|
88
|
+
end
|
89
|
+
|
90
|
+
def as_bench
|
91
|
+
starting_position[1]
|
92
|
+
end
|
93
|
+
|
94
|
+
def days_rest
|
95
|
+
create_stats_hash(@data[6])
|
96
|
+
end
|
97
|
+
|
98
|
+
def zero_rest_days
|
99
|
+
days_rest[0]
|
100
|
+
end
|
101
|
+
|
102
|
+
def one_rest_day
|
103
|
+
days_rest[1]
|
104
|
+
end
|
105
|
+
|
106
|
+
def two_rest_days
|
107
|
+
days_rest[2]
|
108
|
+
end
|
109
|
+
|
110
|
+
def three_rest_days
|
111
|
+
days_rest[3]
|
112
|
+
end
|
113
|
+
|
114
|
+
def four_rest_days
|
115
|
+
days_rest[4]
|
116
|
+
end
|
117
|
+
|
118
|
+
def six_plus_rest_days
|
119
|
+
days_rest[5]
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|