mlb_gameday 0.2.4 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rubocop.yml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +1 -1
- data/lib/mlb_gameday.rb +25 -29
- data/lib/mlb_gameday/game.rb +21 -8
- data/lib/mlb_gameday/version.rb +1 -1
- data/mlb_gameday.gemspec +3 -4
- data/test/game_spec.rb +1 -1
- metadata +18 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 499145f925f463abfdf236a63966ee0e8bedfae2dddabe69d3a6b5781c934951
|
4
|
+
data.tar.gz: 140ba72b1cfbdcc55a093159b6030c9059fe29cd41b52343ee601560b155619a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 39daa28891b1a746e7736fb15025e347a69720a79b70d13d5cf3c64868f1606eae9515341356e2a3d07a68ea8af649f907a810b83eaec018e996628ddf988b17
|
7
|
+
data.tar.gz: 9f29ea34ca7af20a0d19bc7b8cff5bb650e8e4fefd824a24c38fae1fc83585a255494ff5d5988ac28bd48014bc02e487d272d84a68b2614ef37eab95483eed0f
|
data/.rubocop.yml
CHANGED
@@ -2,7 +2,10 @@ AllCops:
|
|
2
2
|
Include:
|
3
3
|
- Rakefile
|
4
4
|
- Gemfile
|
5
|
-
TargetRubyVersion: 2.
|
5
|
+
TargetRubyVersion: 2.5
|
6
|
+
|
7
|
+
Layout/MultilineMethodCallIndentation:
|
8
|
+
EnforcedStyle: indented
|
6
9
|
|
7
10
|
Metrics/AbcSize:
|
8
11
|
Enabled: false
|
@@ -18,6 +21,3 @@ Metrics/MethodLength:
|
|
18
21
|
|
19
22
|
Style/Documentation:
|
20
23
|
Enabled: false
|
21
|
-
|
22
|
-
Style/MultilineMethodCallIndentation:
|
23
|
-
EnforcedStyle: indented
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
data/lib/mlb_gameday.rb
CHANGED
@@ -11,13 +11,11 @@ require 'chronic'
|
|
11
11
|
end
|
12
12
|
|
13
13
|
module MLBGameday
|
14
|
-
API_URL = 'http://
|
14
|
+
API_URL = 'http://gd-terr-origin.mlb.com/components/game/mlb'
|
15
15
|
|
16
|
-
BATTER = '/year_
|
17
|
-
PITCHER = '/year_
|
18
|
-
|
19
|
-
GAMECENTER = '/year_%{year}/month_%{month}/day_%{day}/gid_%{gid}/gamecenter'
|
20
|
-
LINESCORE = '/year_%{year}/month_%{month}/day_%{day}/gid_%{gid}/linescore'
|
16
|
+
BATTER = '/year_%<year>d/batters/%<id>d'
|
17
|
+
PITCHER = '/year_%<year>d/pitchers/%<id>d'
|
18
|
+
GAME_FOLDER = '/year_%<year>d/month_%02<month>d/day_%02<day>d/gid_%<gid>s'
|
21
19
|
SCOREBOARD = '/year_%Y/month_%m/day_%d/miniscoreboard'
|
22
20
|
|
23
21
|
class API
|
@@ -107,43 +105,33 @@ module MLBGameday
|
|
107
105
|
end
|
108
106
|
|
109
107
|
def linescore_xml(gid)
|
110
|
-
|
111
|
-
|
112
|
-
fetch_xml LINESCORE, year: year, month: month, day: day, gid: gid
|
108
|
+
fetch_xml "#{GAME_FOLDER}/linescore", gid: gid
|
113
109
|
end
|
114
110
|
|
115
111
|
def rawboxscore_xml(gid)
|
116
|
-
|
117
|
-
|
118
|
-
fetch_xml RAWBOXSCORE, year: year, month: month, day: day, gid: gid
|
112
|
+
fetch_xml "#{GAME_FOLDER}/rawboxscore", gid: gid
|
119
113
|
end
|
120
114
|
|
121
115
|
def gamecenter_xml(gid)
|
122
|
-
|
123
|
-
|
124
|
-
fetch_xml GAMECENTER, year: year, month: month, day: day, gid: gid
|
116
|
+
fetch_xml "#{GAME_FOLDER}/gamecenter", gid: gid
|
125
117
|
end
|
126
118
|
|
127
119
|
def batter_xml(id, year: nil)
|
128
|
-
# We only really want one piece of data from this file
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
year, month, day, = gid.split '/'
|
120
|
+
# We only really want one piece of data from this file. This gives us
|
121
|
+
# the GID of their most recent appearance.
|
122
|
+
gid = fetch_xml(BATTER, id: id, year: (year || Date.today.year))
|
123
|
+
.xpath('//batting/@game_id').text.gsub(/[^a-z0-9]/, '_')
|
133
124
|
|
134
|
-
fetch_xml "
|
135
|
-
"gid_#{gid.gsub(/[^a-z0-9]/, '_')}/batters/#{id}"
|
125
|
+
fetch_xml "#{GAME_FOLDER}/batters/%<batter>s", gid: gid, batter: id
|
136
126
|
end
|
137
127
|
|
138
128
|
def pitcher_xml(id, year: nil)
|
139
|
-
# We only really want one piece of data from this file
|
140
|
-
|
129
|
+
# We only really want one piece of data from this file. This gives us
|
130
|
+
# the GID of their most recent appearance.
|
131
|
+
gid = fetch_xml(PITCHER, id: id, year: (year || Date.today.year))
|
132
|
+
.xpath('//pitching/@game_id').text.gsub(/[^a-z0-9]/, '_')
|
141
133
|
|
142
|
-
gid
|
143
|
-
year, month, day, = gid.split '/'
|
144
|
-
|
145
|
-
fetch_xml "/year_#{year}/month_#{month}/day_#{day}/" \
|
146
|
-
"gid_#{gid.gsub(/[^a-z0-9]/, '_')}/pitchers/#{id}"
|
134
|
+
fetch_xml "#{GAME_FOLDER}/pitchers/%<pitcher>s", gid: gid, pitcher: id
|
147
135
|
end
|
148
136
|
|
149
137
|
protected
|
@@ -151,6 +139,14 @@ module MLBGameday
|
|
151
139
|
def fetch_xml(path, interpolations = {})
|
152
140
|
full_path = "#{API_URL}#{path}.xml"
|
153
141
|
|
142
|
+
if interpolations[:gid]
|
143
|
+
year, month, day, = interpolations[:gid].split '_'
|
144
|
+
|
145
|
+
interpolations[:year] = year
|
146
|
+
interpolations[:month] = month
|
147
|
+
interpolations[:day] = day
|
148
|
+
end
|
149
|
+
|
154
150
|
full_path = format(full_path, interpolations) if interpolations.any?
|
155
151
|
|
156
152
|
Nokogiri::XML open full_path
|
data/lib/mlb_gameday/game.rb
CHANGED
@@ -10,16 +10,10 @@ module MLBGameday
|
|
10
10
|
def initialize(api, gid, files = {})
|
11
11
|
@api = api
|
12
12
|
@gid = gid
|
13
|
-
|
14
13
|
@files = files
|
15
14
|
|
16
|
-
|
17
|
-
|
18
|
-
@away_team = @api.team files[:linescore].xpath('//game/@away_name_abbrev').text
|
19
|
-
else
|
20
|
-
@home_team = @api.team files[:gamecenter].xpath('//game/@id').text[18, 6]
|
21
|
-
@away_team = @api.team files[:gamecenter].xpath('//game/@id').text[11, 6]
|
22
|
-
end
|
15
|
+
@home_team = @api.team home_team_identifier
|
16
|
+
@away_team = @api.team away_team_identifier
|
23
17
|
end
|
24
18
|
|
25
19
|
def teams
|
@@ -290,5 +284,24 @@ module MLBGameday
|
|
290
284
|
def inspect
|
291
285
|
%(#<MLBGameday::Game @gid="#{@gid}">)
|
292
286
|
end
|
287
|
+
|
288
|
+
protected
|
289
|
+
|
290
|
+
def home_team_identifier
|
291
|
+
if files[:linescore]
|
292
|
+
return files[:linescore].xpath('//game/@home_name_abbrev').text
|
293
|
+
end
|
294
|
+
|
295
|
+
files[:gamecenter].xpath('//game/@id').text[18, 6]
|
296
|
+
end
|
297
|
+
|
298
|
+
def away_team_identifier
|
299
|
+
if files[:linescore]
|
300
|
+
return files[:linescore].xpath('//game/@away_name_abbrev').text
|
301
|
+
end
|
302
|
+
|
303
|
+
files[:gamecenter].xpath('//game/@id').text[11, 6]
|
304
|
+
end
|
293
305
|
end
|
306
|
+
# rubocop:enable Metrics/ClassLength
|
294
307
|
end
|
data/lib/mlb_gameday/version.rb
CHANGED
data/mlb_gameday.gemspec
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
lib = File.expand_path('../lib', __FILE__)
|
@@ -12,7 +11,7 @@ Gem::Specification.new do |spec|
|
|
12
11
|
spec.email = ['git@fustrate.com']
|
13
12
|
spec.description = 'Access data about games and players from the ' \
|
14
13
|
'official MLB Gameday API'
|
15
|
-
spec.summary =
|
14
|
+
spec.summary = 'Fetches gameday data from the MLB Gameday API'
|
16
15
|
spec.homepage = 'http://github.com/fustrate/mlb_gameday'
|
17
16
|
spec.license = 'MIT'
|
18
17
|
|
@@ -22,10 +21,10 @@ Gem::Specification.new do |spec|
|
|
22
21
|
spec.require_paths = %w[lib]
|
23
22
|
|
24
23
|
spec.add_development_dependency 'bundler', '~> 1.9'
|
25
|
-
spec.add_development_dependency 'rake', '~> 10.4'
|
26
24
|
spec.add_development_dependency 'minitest', '~> 5.5'
|
25
|
+
spec.add_development_dependency 'rake', '~> 10.4'
|
27
26
|
|
27
|
+
spec.add_dependency 'chronic', '~> 0.10'
|
28
28
|
spec.add_dependency 'httparty', '~> 0.13'
|
29
29
|
spec.add_dependency 'nokogiri', '~> 1.6'
|
30
|
-
spec.add_dependency 'chronic', '~> 0.10'
|
31
30
|
end
|
data/test/game_spec.rb
CHANGED
@@ -9,7 +9,7 @@ class MockedApi < MLBGameday::API
|
|
9
9
|
|
10
10
|
def open(url, &block)
|
11
11
|
dir = File.dirname __FILE__
|
12
|
-
base = url.gsub 'http://
|
12
|
+
base = url.gsub 'http://gd-terr-origin.mlb.com/components/game/mlb/', ''
|
13
13
|
path = File.join dir, base
|
14
14
|
|
15
15
|
unless File.exist?(path)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mlb_gameday
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steven Hoffman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -25,75 +25,75 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.9'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '5.5'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '5.5'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '10.4'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '10.4'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: chronic
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0.
|
61
|
+
version: '0.10'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0.
|
68
|
+
version: '0.10'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: httparty
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '0.13'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '0.13'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: nokogiri
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '1.6'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '1.6'
|
97
97
|
description: Access data about games and players from the official MLB Gameday API
|
98
98
|
email:
|
99
99
|
- git@fustrate.com
|
@@ -243,7 +243,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
243
243
|
version: '0'
|
244
244
|
requirements: []
|
245
245
|
rubyforge_project:
|
246
|
-
rubygems_version: 2.
|
246
|
+
rubygems_version: 2.7.3
|
247
247
|
signing_key:
|
248
248
|
specification_version: 4
|
249
249
|
summary: Fetches gameday data from the MLB Gameday API
|