sportradar-api 0.10.2 → 0.10.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/sportradar/api/basketball.rb +4 -1
- data/lib/sportradar/api/basketball/nba/season.rb +6 -5
- data/lib/sportradar/api/basketball/ncaamb.rb +18 -2
- data/lib/sportradar/api/basketball/ncaamb/bracket.rb +44 -0
- data/lib/sportradar/api/basketball/ncaamb/round.rb +55 -0
- data/lib/sportradar/api/basketball/ncaamb/season.rb +17 -4
- data/lib/sportradar/api/basketball/ncaamb/team.rb +5 -1
- data/lib/sportradar/api/basketball/ncaamb/tournament.rb +140 -0
- data/lib/sportradar/api/basketball/team.rb +2 -1
- data/lib/sportradar/api/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6a68cc5b4df91daab8a7efea62107d96814d39b8
|
4
|
+
data.tar.gz: e9762555eebc08323a538a27d062d255ca42c7ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a03c8b61986db9e6fe0a088a373de7c1329f02319e8d116c583d4a2fc12a7b0c9697839ca843c2c18bc2190dd4510525e0062ce1fad4f008fb928ca972a466b
|
7
|
+
data.tar.gz: '0984fb7ec961a985b744a1cdcae266f25211a9e0dfd3adc1f84bf060ab67aed8ef65969193d03d340a885055b8421725378b686d81607b848432e8333ebed901'
|
data/Gemfile.lock
CHANGED
@@ -20,10 +20,13 @@ require_relative 'basketball/nba/player'
|
|
20
20
|
require_relative 'basketball/nba/quarter'
|
21
21
|
|
22
22
|
require_relative 'basketball/ncaamb'
|
23
|
+
require_relative 'basketball/ncaamb/season'
|
23
24
|
require_relative 'basketball/ncaamb/schedule'
|
25
|
+
require_relative 'basketball/ncaamb/tournament'
|
26
|
+
require_relative 'basketball/ncaamb/round'
|
27
|
+
require_relative 'basketball/ncaamb/bracket'
|
24
28
|
require_relative 'basketball/ncaamb/game'
|
25
29
|
require_relative 'basketball/ncaamb/half'
|
26
|
-
require_relative 'basketball/ncaamb/season'
|
27
30
|
require_relative 'basketball/ncaamb/hierarchy'
|
28
31
|
require_relative 'basketball/ncaamb/division'
|
29
32
|
require_relative 'basketball/ncaamb/conference'
|
@@ -3,7 +3,7 @@ module Sportradar
|
|
3
3
|
module Basketball
|
4
4
|
class Nba
|
5
5
|
class Season < Basketball::Season
|
6
|
-
attr_accessor :response, :id, :name, :alias
|
6
|
+
attr_accessor :response, :id, :name, :alias, :year
|
7
7
|
|
8
8
|
def initialize(data, **opts)
|
9
9
|
@response = data
|
@@ -12,6 +12,10 @@ module Sportradar
|
|
12
12
|
@id = data.dig('league', 'id')
|
13
13
|
@name = data.dig('league', 'name')
|
14
14
|
@alias = data.dig('league', 'alias')
|
15
|
+
|
16
|
+
@year = data.dig('season', 'year')
|
17
|
+
@type = data.dig('season', 'type')
|
18
|
+
|
15
19
|
@games_hash = {}
|
16
20
|
|
17
21
|
update_games(data['games'])
|
@@ -21,10 +25,6 @@ module Sportradar
|
|
21
25
|
@games_hash.values
|
22
26
|
end
|
23
27
|
|
24
|
-
def year
|
25
|
-
2016
|
26
|
-
end
|
27
|
-
|
28
28
|
def update_games(data)
|
29
29
|
create_data(@games_hash, data, klass: Game, api: @api, season: self)
|
30
30
|
end
|
@@ -41,3 +41,4 @@ sd = sr.daily_schedule;
|
|
41
41
|
sr = Sportradar::Api::Basketball::Nba.new
|
42
42
|
ss = sr.standings;
|
43
43
|
ss = sr.schedule;
|
44
|
+
ss = sr.schedule(2015, 'pst)');
|
@@ -20,7 +20,21 @@ module Sportradar
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
def
|
23
|
+
def tournaments(season_year = default_year, ncaamb_season = 'pst')
|
24
|
+
raise Sportradar::Api::Error::InvalidSeason unless allowed_seasons.include? ncaamb_season
|
25
|
+
response = get request_url("tournaments/#{season_year}/#{ncaamb_season}/schedule")
|
26
|
+
if response.success?
|
27
|
+
Sportradar::Api::Basketball::Ncaamb::Season.new(response.to_h, api: self)
|
28
|
+
else
|
29
|
+
@error = response
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def conference_tournaments(season_year = default_year)
|
34
|
+
tournaments(season_year, 'ct')
|
35
|
+
end
|
36
|
+
|
37
|
+
def daily_schedule(date = default_date)
|
24
38
|
response = get request_url("games/#{ date.year }/#{ date.month }/#{ date.day }/schedule")
|
25
39
|
if response.success?
|
26
40
|
Sportradar::Api::Basketball::Ncaamb::Schedule.new(response.to_h, api: self)
|
@@ -125,7 +139,9 @@ end
|
|
125
139
|
__END__
|
126
140
|
|
127
141
|
sr = Sportradar::Api::Basketball::Ncaamb.new
|
128
|
-
ss = sr.schedule;
|
142
|
+
ss = sr.schedule(2015, 'ct');
|
143
|
+
ss = sr.schedule(2015, 'pst');
|
144
|
+
rank = sr.rankings('US');
|
129
145
|
ds = sr.daily_schedule;
|
130
146
|
|
131
147
|
# not ready
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Sportradar
|
2
|
+
module Api
|
3
|
+
module Basketball
|
4
|
+
class Ncaamb
|
5
|
+
class Bracket < Data
|
6
|
+
attr_accessor :response, :id, :name, :location, :start, :end
|
7
|
+
|
8
|
+
def initialize(data, **opts)
|
9
|
+
@response = data
|
10
|
+
@api = opts[:api]
|
11
|
+
@tournament = opts[:tournament]
|
12
|
+
|
13
|
+
@id = data['id']
|
14
|
+
|
15
|
+
@games_hash = {}
|
16
|
+
|
17
|
+
update(data)
|
18
|
+
end
|
19
|
+
|
20
|
+
def update(data, **opts)
|
21
|
+
@response = data
|
22
|
+
|
23
|
+
@name = data['name'] if data['name']
|
24
|
+
@location = data['location'] if data['location']
|
25
|
+
|
26
|
+
# update_games(data['games']) if data['games']
|
27
|
+
update_participants(data['participants']) if data['participants']
|
28
|
+
self
|
29
|
+
end
|
30
|
+
|
31
|
+
# def games
|
32
|
+
# @games_hash.values
|
33
|
+
# end
|
34
|
+
|
35
|
+
# rounds are either bracketed (bracketed) or not (games)
|
36
|
+
# def update_games(data)
|
37
|
+
# create_data(@games_hash, data, klass: Game, api: @api, season: self)
|
38
|
+
# end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Sportradar
|
2
|
+
module Api
|
3
|
+
module Basketball
|
4
|
+
class Ncaamb
|
5
|
+
class Round < Data
|
6
|
+
attr_accessor :response, :id, :name, :location, :start, :end
|
7
|
+
|
8
|
+
def initialize(data, **opts)
|
9
|
+
@response = data
|
10
|
+
@api = opts[:api]
|
11
|
+
@tournament = opts[:tournament]
|
12
|
+
|
13
|
+
@id = data['id']
|
14
|
+
|
15
|
+
@games_hash = {}
|
16
|
+
|
17
|
+
update(data, **opts)
|
18
|
+
end
|
19
|
+
|
20
|
+
def update(data, **opts)
|
21
|
+
@response = data
|
22
|
+
|
23
|
+
@name = data['name'] if data['name']
|
24
|
+
@sequence = data['sequence'] if data['sequence']
|
25
|
+
|
26
|
+
update_games(data['games']) if data['games']
|
27
|
+
update_brackets(data['bracketed']) if data['bracketed']
|
28
|
+
end
|
29
|
+
|
30
|
+
def games
|
31
|
+
@games_hash.values
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
def update_games(data)
|
36
|
+
create_data(@games_hash, data, klass: Game, api: @api, season: self)
|
37
|
+
end
|
38
|
+
|
39
|
+
def update_brackets(data)
|
40
|
+
data.each do |hash|
|
41
|
+
create_data(@games_hash, hash['games'], klass: Game, api: @api, round: self, tournament: @tournament)
|
42
|
+
# @tournament.update_bracket(data['bracket'].merge('games' => data['games']))
|
43
|
+
end
|
44
|
+
# hash = {
|
45
|
+
# "bracket"=>{"id"=>"fc853dd0-4744-4735-9e16-5953a155dc1c", "name"=>"East Regional", "location"=>"Philadelphia, PA, USA"},
|
46
|
+
# 'games' => [],
|
47
|
+
# }
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -3,7 +3,7 @@ module Sportradar
|
|
3
3
|
module Basketball
|
4
4
|
class Ncaamb
|
5
5
|
class Season < Basketball::Season
|
6
|
-
attr_accessor :response, :id, :name, :alias
|
6
|
+
attr_accessor :response, :id, :name, :alias, :year
|
7
7
|
|
8
8
|
def initialize(data, **opts)
|
9
9
|
@response = data
|
@@ -13,22 +13,35 @@ module Sportradar
|
|
13
13
|
@name = data.dig('league', 'name')
|
14
14
|
@alias = data.dig('league', 'alias')
|
15
15
|
|
16
|
+
@year = data.dig('season', 'year')
|
17
|
+
@type = data.dig('season', 'type')
|
18
|
+
|
16
19
|
@games_hash = {}
|
17
|
-
|
20
|
+
@tournaments_hash = {}
|
21
|
+
update_games(data['games']) if data['games']
|
22
|
+
update_tournaments(data['tournaments']) if data['tournaments']
|
18
23
|
end
|
19
24
|
|
20
25
|
def games
|
21
26
|
@games_hash.values
|
22
27
|
end
|
23
28
|
|
24
|
-
def
|
25
|
-
|
29
|
+
def tournaments
|
30
|
+
@tournaments_hash.values
|
31
|
+
end
|
32
|
+
|
33
|
+
def tournament(id)
|
34
|
+
@tournaments_hash[id]
|
26
35
|
end
|
27
36
|
|
28
37
|
def update_games(data)
|
29
38
|
create_data(@games_hash, data, klass: Game, api: @api, season: self)
|
30
39
|
end
|
31
40
|
|
41
|
+
def update_tournaments(data)
|
42
|
+
create_data(@tournaments_hash, data, klass: Tournament, api: @api, season: self)
|
43
|
+
end
|
44
|
+
|
32
45
|
end
|
33
46
|
end
|
34
47
|
end
|
@@ -0,0 +1,140 @@
|
|
1
|
+
module Sportradar
|
2
|
+
module Api
|
3
|
+
module Basketball
|
4
|
+
class Ncaamb
|
5
|
+
class Tournament < Data
|
6
|
+
attr_accessor :response, :id, :name, :status, :location, :start, :end
|
7
|
+
|
8
|
+
def initialize(data, **opts)
|
9
|
+
@response = data
|
10
|
+
@api = opts[:api]
|
11
|
+
|
12
|
+
@id = data['id']
|
13
|
+
|
14
|
+
@rounds_hash = {}
|
15
|
+
@brackets_hash = {}
|
16
|
+
|
17
|
+
update(data, **opts)
|
18
|
+
end
|
19
|
+
|
20
|
+
def update(data, **opts)
|
21
|
+
@response = data
|
22
|
+
|
23
|
+
@season = opts[:season] if opts[:season]
|
24
|
+
|
25
|
+
@status = data['status'] if data['status']
|
26
|
+
@name = data['name'] if data['name']
|
27
|
+
@location = data['location'] if data['location']
|
28
|
+
@start = Date.parse(data['start_date']) if data['start_date']
|
29
|
+
@end = Date.parse(data['end_date']) if data['end_date']
|
30
|
+
@type = data.dig('season', 'type') if data.dig('season', 'type')
|
31
|
+
@year = @start&.year
|
32
|
+
|
33
|
+
update_rounds(data['rounds']) if data['rounds'] # switch to rounds
|
34
|
+
update_brackets(data['brackets']) if data['brackets'] # switch to brackets
|
35
|
+
end
|
36
|
+
|
37
|
+
def games
|
38
|
+
rounds.flat_map(&:games)
|
39
|
+
end
|
40
|
+
|
41
|
+
def year
|
42
|
+
@season&.year || (@start&.-120)&.year
|
43
|
+
end
|
44
|
+
|
45
|
+
def rounds
|
46
|
+
@rounds_hash.values
|
47
|
+
end
|
48
|
+
|
49
|
+
def brackets
|
50
|
+
@brackets_hash.values
|
51
|
+
end
|
52
|
+
def bracket(id)
|
53
|
+
@brackets_hash[id]
|
54
|
+
end
|
55
|
+
def update_bracket(id, data)
|
56
|
+
if @brackets_hash[id]
|
57
|
+
@brackets_hash[id].update(data)
|
58
|
+
else
|
59
|
+
@brackets_hash[id] = Bracket.new(data, tournament: self)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
def update_brackets(data)
|
63
|
+
create_data(@brackets_hash, data, klass: Round, api: @api, tournament: self)
|
64
|
+
end
|
65
|
+
|
66
|
+
# switch to rounds
|
67
|
+
# rounds are either bracketed (bracketed) or not (games)
|
68
|
+
def update_rounds(data)
|
69
|
+
create_data(@rounds_hash, data, klass: Round, api: @api, tournament: self)
|
70
|
+
end
|
71
|
+
|
72
|
+
# url paths
|
73
|
+
def path_base
|
74
|
+
"tournaments/#{ id }"
|
75
|
+
end
|
76
|
+
def path_schedule
|
77
|
+
"#{ path_base }/schedule"
|
78
|
+
end
|
79
|
+
|
80
|
+
def path_summary
|
81
|
+
"#{ path_base }/summary"
|
82
|
+
end
|
83
|
+
|
84
|
+
# data retrieval
|
85
|
+
def sync
|
86
|
+
get_summary
|
87
|
+
get_schedule
|
88
|
+
end
|
89
|
+
|
90
|
+
# summary
|
91
|
+
def get_summary
|
92
|
+
data = api.get_data(path_summary)
|
93
|
+
ingest_summary(data)
|
94
|
+
end
|
95
|
+
def queue_summary
|
96
|
+
url, headers, options, timeout = api.get_request_info(path_summary)
|
97
|
+
{url: url, headers: headers, params: options, timeout: timeout, callback: method(:ingest_summary)}
|
98
|
+
end
|
99
|
+
def ingest_summary(data)
|
100
|
+
update(data, source: :summary)
|
101
|
+
data
|
102
|
+
end
|
103
|
+
|
104
|
+
# schedule
|
105
|
+
def get_schedule
|
106
|
+
data = api.get_data(path_schedule)
|
107
|
+
ingest_schedule(data)
|
108
|
+
end
|
109
|
+
def queue_schedule
|
110
|
+
url, headers, options, timeout = api.get_request_info(path_schedule)
|
111
|
+
{url: url, headers: headers, params: options, timeout: timeout, callback: method(:ingest_schedule)}
|
112
|
+
end
|
113
|
+
def ingest_schedule(data)
|
114
|
+
update(data, source: :schedule)
|
115
|
+
data
|
116
|
+
end
|
117
|
+
|
118
|
+
def api
|
119
|
+
@api ||= Sportradar::Api::Basketball::Ncaamb.new
|
120
|
+
end
|
121
|
+
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
__END__
|
129
|
+
|
130
|
+
sr = Sportradar::Api::Basketball::Ncaamb.new
|
131
|
+
ss = sr.tournaments(2015);
|
132
|
+
ss = sr.conference_tournaments(2015);
|
133
|
+
ts = sr.conference_tournaments;
|
134
|
+
ts = sr.tournaments;
|
135
|
+
t = ss.tournament("608152a4-cccc-4569-83ac-27062580099e") # => NCAA tourney 2015
|
136
|
+
t = ts.tournament("74db39e5-be49-4ec8-9169-0cc20ed9f792") # => NCAA tourney 2016
|
137
|
+
tt = Sportradar::Api::Basketball::Ncaamb::Tournament.new('id' => "608152a4-cccc-4569-83ac-27062580099e") # => NCAA tourney 2015
|
138
|
+
t = ss.tournament("1a4a1d3d-b734-4136-a7c2-711b4b3821a5") # => Pac12 tourney 2015
|
139
|
+
t = Sportradar::Api::Basketball::Ncaamb::Tournament.new('id' => "1a4a1d3d-b734-4136-a7c2-711b4b3821a5") # => NCAA tourney 2015
|
140
|
+
t = ts.first
|
@@ -2,7 +2,7 @@ module Sportradar
|
|
2
2
|
module Api
|
3
3
|
module Basketball
|
4
4
|
class Team < Data
|
5
|
-
attr_accessor :response, :id, :market, :name, :alias, :full_name, :venue, :records, :player_stats, :team_stats
|
5
|
+
attr_accessor :response, :id, :market, :name, :alias, :full_name, :venue, :records, :player_stats, :team_stats, :seed
|
6
6
|
|
7
7
|
def initialize(data, **opts)
|
8
8
|
@response = data
|
@@ -32,6 +32,7 @@ module Sportradar
|
|
32
32
|
handle_names(data)
|
33
33
|
@venue = Venue.new(data['venue']) if data['venue']
|
34
34
|
|
35
|
+
@seed = data['seed'].to_i if data['seed']
|
35
36
|
@alias = data['alias'] if data['alias']
|
36
37
|
@points = data['points'].to_i if data['points']
|
37
38
|
# @home = data['home'] == 'true' if data['home']
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sportradar-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
4
|
+
version: 0.10.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Eggett
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -256,15 +256,18 @@ files:
|
|
256
256
|
- lib/sportradar/api/basketball/nba/season.rb
|
257
257
|
- lib/sportradar/api/basketball/nba/team.rb
|
258
258
|
- lib/sportradar/api/basketball/ncaamb.rb
|
259
|
+
- lib/sportradar/api/basketball/ncaamb/bracket.rb
|
259
260
|
- lib/sportradar/api/basketball/ncaamb/conference.rb
|
260
261
|
- lib/sportradar/api/basketball/ncaamb/division.rb
|
261
262
|
- lib/sportradar/api/basketball/ncaamb/game.rb
|
262
263
|
- lib/sportradar/api/basketball/ncaamb/half.rb
|
263
264
|
- lib/sportradar/api/basketball/ncaamb/hierarchy.rb
|
264
265
|
- lib/sportradar/api/basketball/ncaamb/player.rb
|
266
|
+
- lib/sportradar/api/basketball/ncaamb/round.rb
|
265
267
|
- lib/sportradar/api/basketball/ncaamb/schedule.rb
|
266
268
|
- lib/sportradar/api/basketball/ncaamb/season.rb
|
267
269
|
- lib/sportradar/api/basketball/ncaamb/team.rb
|
270
|
+
- lib/sportradar/api/basketball/ncaamb/tournament.rb
|
268
271
|
- lib/sportradar/api/basketball/play.rb
|
269
272
|
- lib/sportradar/api/basketball/plays.rb
|
270
273
|
- lib/sportradar/api/basketball/plays/assist.rb
|