sportradar-api 0.10.2 → 0.10.3
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/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
|