espn_scraper 1.3.1 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +20 -8
- data/Rakefile +0 -1
- data/lib/espn_scraper/boilerplate.rb +13 -14
- data/lib/espn_scraper/scores.rb +48 -89
- data/lib/espn_scraper/version.rb +1 -1
- data/test/espn_scraper_test/espn_test.rb +9 -9
- data/test/espn_scraper_test/mlb_test.rb +10 -4
- data/test/espn_scraper_test/teams_test.rb +14 -14
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92cd55c7052685e30d2dbc52d24a058cd7e7ef46
|
4
|
+
data.tar.gz: d4751ef0577a07dd87e2721af60dfd5041129656
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac9fcbc028381b407c01ecde9ea3a47d75658c6ca582bdb6024c03e7333e9bd0ec41e5d27a48664ce331a48ea6d541e150918eb13c74b8d9d7d2f201c3d4ef25
|
7
|
+
data.tar.gz: bac030d2c801f9749a85be6d58986062dc79f94d27d7110c1cd006f1bc23d43f64c7320881329780dca7c9f674815e81bc1b9f54762ab459f12b089ac39083f9
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# ESPN Scraper
|
2
2
|
|
3
|
-
ESPN Scraper is a simple gem for scraping teams and scores from `ESPN`'s website. Please note that `ESPN` is not involved with this gem or me in any way. I chose `ESPN` because it is a leader in sports statistics and has a robust website.
|
3
|
+
ESPN Scraper is a simple gem for scraping teams and scores from `ESPN`'s website. Please note that `ESPN` is not involved with this gem or me in any way. I chose `ESPN` because it is a leader in sports statistics and has a robust website.
|
4
4
|
|
5
5
|
```ruby
|
6
6
|
ESPN.responding?
|
@@ -55,11 +55,11 @@ You can get the teams in each league by acronym. It returns a hash of each divis
|
|
55
55
|
```ruby
|
56
56
|
ESPN.get_teams_in('nba')
|
57
57
|
# => {
|
58
|
-
# "atlantic"=> [
|
59
|
-
# { :name => "Boston Celtics", :data_name => "bos" },
|
60
|
-
# { :name => "Brooklyn Nets", :data_name => "bkn" },
|
61
|
-
# { :name => "New York Knicks", :data_name => "ny" },
|
62
|
-
# { :name => "Philadelphia 76ers", :data_name => "phi" },
|
58
|
+
# "atlantic"=> [
|
59
|
+
# { :name => "Boston Celtics", :data_name => "bos" },
|
60
|
+
# { :name => "Brooklyn Nets", :data_name => "bkn" },
|
61
|
+
# { :name => "New York Knicks", :data_name => "ny" },
|
62
|
+
# { :name => "Philadelphia 76ers", :data_name => "phi" },
|
63
63
|
# { :name => "Toronto Raptors", :data_name => "tor" }
|
64
64
|
# ]
|
65
65
|
# "pacific" => ...
|
@@ -121,7 +121,7 @@ require 'espn_scraper'
|
|
121
121
|
|
122
122
|
## Contributing
|
123
123
|
|
124
|
-
Please report back if something breaks on you!
|
124
|
+
Please report back if something breaks on you!
|
125
125
|
|
126
126
|
Also please let me know if any of the data names get outdated. For instance a bunch of NFL data names were recently changed. You can make fixes temporarily with the following:
|
127
127
|
|
@@ -129,7 +129,19 @@ Also please let me know if any of the data names get outdated. For instance a bu
|
|
129
129
|
ESPN::DATA_NAME_FIXES['nfl']['gnb'] = 'gb'
|
130
130
|
```
|
131
131
|
|
132
|
-
|
132
|
+
Running tests:
|
133
|
+
```
|
134
|
+
rake test
|
135
|
+
```
|
136
|
+
|
137
|
+
Re-building the gem and installing locally:
|
138
|
+
```
|
139
|
+
gem build espn_scraper.gemspec
|
140
|
+
gem uninstall espn_scraper
|
141
|
+
gem install espn_scraper-x.x.x.gem
|
142
|
+
```
|
143
|
+
|
144
|
+
Future plans:
|
133
145
|
- Get start and end dates of a season
|
134
146
|
|
135
147
|
### Thank You
|
data/Rakefile
CHANGED
@@ -3,11 +3,11 @@ require 'nokogiri'
|
|
3
3
|
|
4
4
|
module ESPN
|
5
5
|
class << self
|
6
|
-
|
6
|
+
|
7
7
|
def responding?
|
8
|
-
HTTParty.get('http://espn.
|
8
|
+
HTTParty.get('http://www.espn.com').code == 200
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
def down?
|
12
12
|
!responding?
|
13
13
|
end
|
@@ -15,9 +15,8 @@ module ESPN
|
|
15
15
|
# Ex: ESPN.url('scores')
|
16
16
|
# ESPN.url('teams', 'nba')
|
17
17
|
def url(*path)
|
18
|
-
|
19
|
-
|
20
|
-
['http:/', domain, *path].join('/')
|
18
|
+
path.shift if path.first == 'scores'
|
19
|
+
['http://www.espn.com', *path].join('/')
|
21
20
|
end
|
22
21
|
|
23
22
|
# Returns Nokogiri HTML document
|
@@ -29,22 +28,22 @@ module ESPN
|
|
29
28
|
Nokogiri::HTML(response.body)
|
30
29
|
else
|
31
30
|
raise ArgumentError, error_message(url, path)
|
32
|
-
end
|
31
|
+
end
|
33
32
|
end
|
34
|
-
|
33
|
+
|
35
34
|
def dasherize(str)
|
36
35
|
str.strip.downcase.gsub(/\s+/, '-')
|
37
36
|
end
|
38
|
-
|
39
|
-
|
37
|
+
|
38
|
+
|
40
39
|
private
|
41
|
-
|
42
|
-
|
43
|
-
|
40
|
+
|
41
|
+
|
42
|
+
|
44
43
|
def error_message(url, path)
|
45
44
|
"The url #{url} from the path #{path} did not return a valid page."
|
46
45
|
end
|
47
|
-
|
46
|
+
|
48
47
|
end
|
49
48
|
end
|
50
49
|
|
data/lib/espn_scraper/scores.rb
CHANGED
@@ -4,14 +4,14 @@ require 'json'
|
|
4
4
|
|
5
5
|
module ESPN
|
6
6
|
SEASONS = {
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
preseason: 1,
|
8
|
+
regular_season: 2,
|
9
|
+
postseason: 3
|
10
10
|
}
|
11
11
|
|
12
|
-
mlb_ignores = %w(
|
13
|
-
florida-state u-of-south-florida georgetown fla.-southern northeastern boston-college
|
14
|
-
miami-florida florida-intl canada hanshin yomiuri sacramento springfield corpus-christi
|
12
|
+
mlb_ignores = %w(
|
13
|
+
florida-state u-of-south-florida georgetown fla.-southern northeastern boston-college
|
14
|
+
miami-florida florida-intl canada hanshin yomiuri sacramento springfield corpus-christi
|
15
15
|
round-rock carolina manatee-cc mexico cincinnati-(f) atlanta-(f) frisco toledo norfolk
|
16
16
|
fort-myers tampa-bay-(f) nl-all-stars al-all-stars
|
17
17
|
)
|
@@ -23,7 +23,7 @@ module ESPN
|
|
23
23
|
team-chara team-alfredsson
|
24
24
|
)
|
25
25
|
|
26
|
-
ncf_ignores = %w( paul-quinn san-diego-christian ferris-st notre-dame-college chaminade
|
26
|
+
ncf_ignores = %w( paul-quinn san-diego-christian ferris-st notre-dame-college chaminade
|
27
27
|
w-new-mexico n-new-mexico tx-a&m-commerce nw-oklahoma-st )
|
28
28
|
|
29
29
|
IGNORED_TEAMS = (mlb_ignores + nhl_ignores + nba_ignores + ncf_ignores).inject({}) do |h, team|
|
@@ -31,29 +31,29 @@ module ESPN
|
|
31
31
|
end
|
32
32
|
|
33
33
|
DATA_NAME_EXCEPTIONS = {
|
34
|
-
|
35
|
-
|
36
|
-
|
34
|
+
'nets' => 'bkn',
|
35
|
+
'supersonics' => 'okc',
|
36
|
+
'hornets' => 'no',
|
37
37
|
|
38
|
-
|
38
|
+
'marlins' => 'mia'
|
39
39
|
}.merge(IGNORED_TEAMS)
|
40
40
|
|
41
41
|
DATA_NAME_FIXES = {
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
42
|
+
'nfl' => {
|
43
|
+
'nwe' => 'ne',
|
44
|
+
'kan' => 'kc',
|
45
|
+
'was' => 'wsh',
|
46
|
+
'nor' => 'no',
|
47
|
+
'gnb' => 'gb',
|
48
|
+
'sfo' => 'sf',
|
49
|
+
'tam' => 'tb',
|
50
|
+
'sdg' => 'sd'
|
51
|
+
},
|
52
|
+
'mlb' => {},
|
53
|
+
'nba' => {},
|
54
|
+
'nhl' => {},
|
55
|
+
'ncf' => {},
|
56
|
+
'ncb' => {}
|
57
57
|
}
|
58
58
|
|
59
59
|
# Example output:
|
@@ -68,13 +68,6 @@ module ESPN
|
|
68
68
|
|
69
69
|
class << self
|
70
70
|
|
71
|
-
def get_superbowl_score
|
72
|
-
markup = Scores.markup_from_superbowl
|
73
|
-
scores = Scores.home_away_parse(markup, false)
|
74
|
-
add_league_and_fixes(scores, 'nfl')
|
75
|
-
scores
|
76
|
-
end
|
77
|
-
|
78
71
|
def get_nfl_scores(year, week)
|
79
72
|
markup = Scores.markup_from_year_and_week('nfl', year, week)
|
80
73
|
scores = Scores.home_away_parse(markup)
|
@@ -84,7 +77,7 @@ module ESPN
|
|
84
77
|
|
85
78
|
def get_mlb_scores(date)
|
86
79
|
markup = Scores.markup_from_date('mlb', date)
|
87
|
-
scores = Scores.home_away_parse(markup)
|
80
|
+
scores = Scores.home_away_parse(markup, date)
|
88
81
|
scores.each { |report| report[:league] = 'mlb' }
|
89
82
|
scores
|
90
83
|
end
|
@@ -104,7 +97,7 @@ module ESPN
|
|
104
97
|
end
|
105
98
|
|
106
99
|
def get_ncf_scores(year, week)
|
107
|
-
markup = Scores.markup_from_year_and_week('college-football', year, week)
|
100
|
+
markup = Scores.markup_from_year_and_week('college-football', year, week, 80)
|
108
101
|
scores = Scores.ncf_parse(markup)
|
109
102
|
scores.each { |report| report[:league] = 'college-football' }
|
110
103
|
scores
|
@@ -112,32 +105,15 @@ module ESPN
|
|
112
105
|
|
113
106
|
alias_method :get_college_football_scores, :get_ncf_scores
|
114
107
|
|
115
|
-
def get_ncb_scores(date, conference_id
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
markup = Scores.markup_from_date('ncb', date)
|
120
|
-
end
|
121
|
-
|
122
|
-
scores = Scores.home_away_parse(markup, final_only)
|
123
|
-
|
124
|
-
scores.each do |report|
|
125
|
-
report[:league] ||= 'mens-college-basketball'
|
126
|
-
report[:game_date] ||= date
|
127
|
-
end
|
128
|
-
|
108
|
+
def get_ncb_scores(date, conference_id)
|
109
|
+
markup = Scores.markup_from_date_and_conference('ncb', date, conference_id)
|
110
|
+
scores = Scores.home_away_parse(markup, date)
|
111
|
+
scores.each { |report| report.merge! league: 'mens-college-basketball', game_date: date }
|
129
112
|
scores
|
130
113
|
end
|
131
114
|
|
132
115
|
alias_method :get_college_basketball_scores, :get_ncb_scores
|
133
116
|
|
134
|
-
def get_ncb_abbreviations(date)
|
135
|
-
markup = Scores.markup_from_date('ncb', date)
|
136
|
-
|
137
|
-
teams = Scores.team_abbreviation_parse(markup)
|
138
|
-
teams
|
139
|
-
end
|
140
|
-
|
141
117
|
def add_league_and_fixes(scores, league)
|
142
118
|
scores.each do |report|
|
143
119
|
report[:league] = league
|
@@ -156,12 +132,12 @@ module ESPN
|
|
156
132
|
|
157
133
|
# Get Markup
|
158
134
|
|
159
|
-
def
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
135
|
+
def markup_from_year_and_week(league, year, week, group=nil)
|
136
|
+
if group
|
137
|
+
ESPN.get 'scores', league, "scoreboard/_/group/#{group}/year/#{year}/seasontype/2/week/#{week}"
|
138
|
+
else
|
139
|
+
ESPN.get 'scores', league, "scoreboard/_/year/#{year}/seasontype/2/week/#{week}"
|
140
|
+
end
|
165
141
|
end
|
166
142
|
|
167
143
|
def markup_from_date(league, date)
|
@@ -176,7 +152,7 @@ module ESPN
|
|
176
152
|
|
177
153
|
# parsing strategies
|
178
154
|
|
179
|
-
def home_away_parse(doc,
|
155
|
+
def home_away_parse(doc, date=nil)
|
180
156
|
scores = []
|
181
157
|
games = []
|
182
158
|
espn_regex = /window\.espn\.scoreboardData \t= (\{.*?\});/
|
@@ -190,11 +166,16 @@ module ESPN
|
|
190
166
|
games.each do |game|
|
191
167
|
# Game must be regular or postseason
|
192
168
|
next unless game['season']['type'] == SEASONS[:regular_season] || game['season']['type'] == SEASONS[:postseason]
|
169
|
+
|
170
|
+
# Game must not be suspended if it was supposed to start on the query date.
|
171
|
+
# This prevents fetching scores for suspended games which are not yet completed.
|
172
|
+
game_start = DateTime.parse(game['date']).to_time.utc + Time.zone_offset('EDT')
|
173
|
+
next if date && game['competitions'][0]['wasSuspended'] && game_start.to_date == date
|
174
|
+
|
193
175
|
score = {}
|
194
176
|
competition = game['competitions'].first
|
195
|
-
|
196
177
|
# Score must be final
|
197
|
-
if
|
178
|
+
if competition['status']['type']['detail'] =~ /^Final/
|
198
179
|
competition['competitors'].each do |competitor|
|
199
180
|
if competitor['homeAway'] == 'home'
|
200
181
|
score[:home_team] = competitor['team']['abbreviation'].downcase
|
@@ -205,34 +186,12 @@ module ESPN
|
|
205
186
|
end
|
206
187
|
end
|
207
188
|
score[:game_date] = DateTime.parse(game['date'])
|
208
|
-
score[:status] = competition['status']['type']['detail']
|
209
189
|
scores << score
|
210
190
|
end
|
211
191
|
end
|
212
192
|
scores
|
213
193
|
end
|
214
194
|
|
215
|
-
def team_abbreviation_parse(doc)
|
216
|
-
games = []
|
217
|
-
teams = {}
|
218
|
-
espn_regex = /window\.espn\.scoreboardData \t= (\{.*?\});/
|
219
|
-
doc.xpath("//script").each do |script_section|
|
220
|
-
if script_section.content =~ espn_regex
|
221
|
-
espn_data = JSON.parse(espn_regex.match(script_section.content)[1])
|
222
|
-
games = espn_data['events']
|
223
|
-
break
|
224
|
-
end
|
225
|
-
end
|
226
|
-
games.each do |game|
|
227
|
-
competition = game['competitions'].first
|
228
|
-
competition['competitors'].each do |competitor|
|
229
|
-
teams[competitor['team']['displayName']] = competitor['team']['abbreviation'].downcase
|
230
|
-
end
|
231
|
-
end
|
232
|
-
|
233
|
-
teams
|
234
|
-
end
|
235
|
-
|
236
195
|
def ncf_parse(doc)
|
237
196
|
scores = []
|
238
197
|
games = []
|
@@ -256,7 +215,7 @@ module ESPN
|
|
256
215
|
if competitor['homeAway'] == 'home'
|
257
216
|
score[:home_team] = competitor['team']['id'].downcase
|
258
217
|
score[:home_score] = competitor['score'].to_i
|
259
|
-
|
218
|
+
else
|
260
219
|
score[:away_team] = competitor['team']['id'].downcase
|
261
220
|
score[:away_score] = competitor['score'].to_i
|
262
221
|
end
|
@@ -308,4 +267,4 @@ module ESPN
|
|
308
267
|
|
309
268
|
end
|
310
269
|
end
|
311
|
-
end
|
270
|
+
end
|
data/lib/espn_scraper/version.rb
CHANGED
@@ -1,34 +1,34 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class BoilerplateTest < EspnTest
|
4
|
-
|
4
|
+
|
5
5
|
test 'espn is up' do
|
6
6
|
assert ESPN.responding?
|
7
7
|
assert !ESPN.down?
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
test 'paths are working' do
|
11
|
-
assert_equal 'http://
|
12
|
-
assert_equal 'http://espn.
|
11
|
+
assert_equal 'http://www.espn.com', ESPN.url('scores')
|
12
|
+
assert_equal 'http://www.espn.com/nba/teams', ESPN.url('nba', 'teams')
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
test 'error message works' do
|
16
16
|
assert_raises(ArgumentError) do
|
17
17
|
ESPN.get('bad-api-keyword')
|
18
18
|
end
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
test 'get pages is working' do
|
22
22
|
assert ESPN.get('scores')
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
test 'dasherize strings' do
|
26
26
|
assert_equal 'string-is-dashed', ESPN.send(:dasherize, 'String is dashed')
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
test 'leagues' do
|
30
30
|
leagues = 'nfl mlb nba nhl ncf ncb'.split
|
31
31
|
assert_equal leagues, ESPN.leagues
|
32
32
|
end
|
33
33
|
|
34
|
-
end
|
34
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class MlbTest < EspnTest
|
4
|
-
|
4
|
+
|
5
5
|
test 'mlb august 13th 2012 yankees beat rangers' do
|
6
6
|
starts_at = DateTime.parse('2012-08-13T23:00:00+00:00')
|
7
7
|
expected = {
|
@@ -29,12 +29,18 @@ class MlbTest < EspnTest
|
|
29
29
|
scores = ESPN.get_mlb_scores(starts_at.to_date)
|
30
30
|
assert scores.include?(expected), 'A known MLB final score cannot be found'
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
|
+
test 'mlb sept 5th 2014 suspended game pittsburgh pirates at chicago cubs' do
|
34
|
+
scores = ESPN.get_mlb_scores(Date.parse('2014-09-05'))
|
35
|
+
home_teams = scores.each { |s| s['home_team'] }
|
36
|
+
assert !home_teams.include?('chc'), 'A known suspended game was unexpectedly found'
|
37
|
+
end
|
38
|
+
|
33
39
|
test 'random mlb days' do
|
34
40
|
random_days.each do |day|
|
35
41
|
scores = ESPN.get_mlb_scores(day)
|
36
42
|
assert all_names_present?(scores), "Error on #{day} for mlb"
|
37
43
|
end
|
38
44
|
end
|
39
|
-
|
40
|
-
end
|
45
|
+
|
46
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class TeamsTest < EspnTest
|
4
|
-
|
4
|
+
|
5
5
|
test 'scrape nfl teams' do
|
6
6
|
divisions = ESPN.get_teams_in('nfl')
|
7
7
|
assert_equal 8, divisions.count
|
@@ -13,7 +13,7 @@ class TeamsTest < EspnTest
|
|
13
13
|
assert_equal 32, teams.map{ |h| h[:data_name] }.uniq.count
|
14
14
|
assert divisions['nfc-west'].include?({ name: 'Seattle Seahawks', data_name: 'sea' })
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
test 'scrape mlb teams' do
|
18
18
|
divisions = ESPN.get_teams_in('mlb')
|
19
19
|
assert_equal 6, divisions.count
|
@@ -25,7 +25,7 @@ class TeamsTest < EspnTest
|
|
25
25
|
assert_equal 30, teams.map{ |h| h[:data_name] }.uniq.count
|
26
26
|
assert divisions['al-west'].include?({ name: 'Seattle Mariners', data_name: 'sea' })
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
test 'scrape nba teams' do
|
30
30
|
divisions = ESPN.get_teams_in('nba')
|
31
31
|
assert_equal 6, divisions.count
|
@@ -37,18 +37,18 @@ class TeamsTest < EspnTest
|
|
37
37
|
assert_equal 30, teams.map{ |h| h[:data_name] }.uniq.count
|
38
38
|
assert divisions['atlantic'].include?({ name: 'Toronto Raptors', data_name: 'tor' })
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
test 'scrape nhl teams' do
|
42
42
|
divisions = ESPN.get_teams_in('nhl')
|
43
43
|
assert_equal 4, divisions.count
|
44
44
|
assert_equal 7, divisions['central'].count
|
45
45
|
assert_equal 8, divisions['atlantic'].count
|
46
46
|
teams = divisions.values.flatten
|
47
|
-
assert_equal
|
48
|
-
assert_equal
|
47
|
+
assert_equal 31, teams.map{ |h| h[:name] }.uniq.count
|
48
|
+
assert_equal 31, teams.map{ |h| h[:data_name] }.uniq.count
|
49
49
|
assert divisions['atlantic'].include?({ name: 'Montreal Canadiens', data_name: 'mtl' })
|
50
50
|
end
|
51
|
-
|
51
|
+
|
52
52
|
test 'scrape ncaa football teams' do
|
53
53
|
divisions = ESPN.get_teams_in('college-football')
|
54
54
|
assert_equal 25, divisions.count
|
@@ -57,23 +57,23 @@ class TeamsTest < EspnTest
|
|
57
57
|
assert divisions['conference-usa'].include?({ name: 'Rice Owls', data_name: '242' })
|
58
58
|
assert divisions['meac'].include?({ name: 'Bethune-Cookman Wildcats', data_name: '2065' })
|
59
59
|
assert divisions['northeast'].include?({ name: 'St Francis Red Flash', data_name: '2598' })
|
60
|
-
assert divisions['swac'].include?({ name: 'Alabama
|
60
|
+
assert divisions['swac'].include?({ name: 'Alabama State Hornets', data_name: '2011' })
|
61
61
|
end
|
62
|
-
|
62
|
+
|
63
63
|
test 'scrape ncaa basketball teams' do
|
64
64
|
divisions = ESPN.get_teams_in('mens-college-basketball')
|
65
65
|
assert_equal 32, divisions.count
|
66
66
|
assert_equal 15, divisions['acc'].count
|
67
67
|
assert_equal 10, divisions['patriot-league'].count
|
68
|
-
|
69
|
-
assert divisions['southland'].include?({ name: '
|
68
|
+
|
69
|
+
assert divisions['southland'].include?({ name: 'Incarnate Word Cardinals', data_name: '2916' })
|
70
70
|
assert divisions['atlantic-10'].include?({ name: "Saint Joe's Saint Joseph's Hawks", data_name: '2603' })
|
71
71
|
end
|
72
72
|
|
73
73
|
test 'scrape ncaa basketball conferences' do
|
74
74
|
conferences = ESPN.get_conferences_in_ncb
|
75
|
-
assert_equal
|
75
|
+
assert_equal 33, conferences.count
|
76
76
|
assert conferences.include?({ name: 'Mountain West', data_name: '44' })
|
77
77
|
end
|
78
|
-
|
79
|
-
end
|
78
|
+
|
79
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: espn_scraper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- aj0strow
|
@@ -84,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
84
|
version: '0'
|
85
85
|
requirements: []
|
86
86
|
rubyforge_project:
|
87
|
-
rubygems_version: 2.
|
87
|
+
rubygems_version: 2.6.11
|
88
88
|
signing_key:
|
89
89
|
specification_version: 4
|
90
90
|
summary: ESPN Scraper
|