nfl_data 0.0.9 → 0.0.10
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/lib/nfl_data.rb +1 -0
- data/lib/nfl_data/models/team.rb +1 -2
- data/lib/nfl_data/parsers/parser_helper.rb +6 -0
- data/lib/nfl_data/parsers/player_parser.rb +3 -1
- data/lib/nfl_data/parsers/team_parser.rb +8 -9
- data/lib/nfl_data/version.rb +1 -1
- data/test/nfl_data/parsers/player_parser_test.rb +19 -8
- data/test/nfl_data/parsers/team_parser_test.rb +3 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9fd1960572c8ad1676477b259f550f616665d587
|
4
|
+
data.tar.gz: 23369e62b15791b7885d8b21ab5ab85a9c2cab04
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 393b22f179d6c5eb1d7e986d727e634ba647fdd8534bdc6a40f00e9e8ec0a33837f5a795f264d8966e3db74f523c3291ce10e386e09a3215cd18dfbd588ff653
|
7
|
+
data.tar.gz: 3473ede86be3f67842d75ba6fe118d70625781e71bb8bd1cf555908722bfe4bc62815fad05466cfdeb30b26e5871a1bc6c97cc402877a79e9b1c1ca3872b4798
|
data/lib/nfl_data.rb
CHANGED
@@ -8,6 +8,7 @@ require 'nfl_data/models/player'
|
|
8
8
|
require 'nfl_data/models/statline'
|
9
9
|
require 'nfl_data/models/team'
|
10
10
|
|
11
|
+
require 'nfl_data/parsers/parser_helper'
|
11
12
|
require 'nfl_data/parsers/player_parser'
|
12
13
|
require 'nfl_data/parsers/statline_parser'
|
13
14
|
require 'nfl_data/parsers/team_parser'
|
data/lib/nfl_data/models/team.rb
CHANGED
@@ -22,14 +22,13 @@ module NflData
|
|
22
22
|
end
|
23
23
|
|
24
24
|
class Game
|
25
|
-
attr_accessor :week, :opponent, :date, :
|
25
|
+
attr_accessor :week, :opponent, :date, :home_game
|
26
26
|
|
27
27
|
def to_hash
|
28
28
|
{
|
29
29
|
week: week,
|
30
30
|
opponent: opponent,
|
31
31
|
date: date,
|
32
|
-
time: time,
|
33
32
|
home_game: home_game
|
34
33
|
}
|
35
34
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module NflData
|
2
2
|
class PlayerParser
|
3
|
+
include ParserHelper
|
4
|
+
|
3
5
|
attr_reader :base_url
|
4
6
|
|
5
7
|
def initialize
|
@@ -65,7 +67,7 @@ module NflData
|
|
65
67
|
player.number = elements[1].inner_text.strip
|
66
68
|
name = elements[2].inner_text.strip
|
67
69
|
player.status = elements[3].inner_text.strip
|
68
|
-
player.team = elements[12].inner_text.strip
|
70
|
+
player.team = make_jacksonville_abbreviation_consistent(elements[12].inner_text.strip)
|
69
71
|
|
70
72
|
#Get NFL.com Unique player id
|
71
73
|
player.nfl_player_id = elements[2].to_s.split('/')[3]
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module NflData
|
2
2
|
class TeamParser
|
3
|
+
include ParserHelper
|
4
|
+
|
3
5
|
attr_reader :base_url
|
4
6
|
|
5
7
|
def initialize
|
@@ -32,19 +34,13 @@ module NflData
|
|
32
34
|
team_links.map do |link|
|
33
35
|
team = Team.new
|
34
36
|
team.name = link.inner_text.strip
|
35
|
-
team.short_name = link.attribute('href').value.scan(/=(.*)/).flatten.first
|
36
|
-
make_jacksonville_abbreviation_consistent(team)
|
37
|
+
team.short_name = make_jacksonville_abbreviation_consistent(link.attribute('href').value.scan(/=(.*)/).flatten.first)
|
37
38
|
team.schedule = get_schedule(team, year) if with_schedule
|
38
39
|
|
39
40
|
team.to_hash
|
40
41
|
end
|
41
42
|
end
|
42
43
|
|
43
|
-
def make_jacksonville_abbreviation_consistent(team)
|
44
|
-
# Use JAX because schedule pages use JAX and it's easier to fix it here
|
45
|
-
team.short_name = 'JAX' if team.short_name == 'JAC'
|
46
|
-
end
|
47
|
-
|
48
44
|
def get_schedule(team, year)
|
49
45
|
url = "http://www.nfl.com/teams/schedule?seasonType=REG&team=#{team.short_name}&season=#{year}"
|
50
46
|
schedule = Team::Schedule.new
|
@@ -54,9 +50,13 @@ module NflData
|
|
54
50
|
tables = doc.search('table.data-table1')
|
55
51
|
|
56
52
|
tables.each do |table|
|
53
|
+
# Skip any empty tables. They put these in between post season and regular seasons game tables
|
54
|
+
next if table.children.count <= 1
|
57
55
|
title = table.search('tr.thd1 td')
|
58
56
|
|
59
|
-
|
57
|
+
# Need to check for the Regular Season table and a table with no title
|
58
|
+
# because during the season the NFl splits the games between 2 tables
|
59
|
+
if ['Regular Season', ''].include?(title.inner_text.strip)
|
60
60
|
weeks = table.search('tr.tbdy1')
|
61
61
|
|
62
62
|
weeks.each do |week|
|
@@ -64,7 +64,6 @@ module NflData
|
|
64
64
|
elements = week.search('td')
|
65
65
|
game.week = elements[0].inner_text.strip
|
66
66
|
game.date = elements[1].inner_text.strip
|
67
|
-
game.time = elements[3].nil? ? nil : elements[3].inner_text.strip
|
68
67
|
participants = elements[2].search('a')
|
69
68
|
game.opponent = get_opponent(team, participants)
|
70
69
|
game.home_game = home_game?(team, participants)
|
data/lib/nfl_data/version.rb
CHANGED
@@ -19,7 +19,7 @@ describe PlayerParser do
|
|
19
19
|
response = @parser.get_by_position(:quarterbacks)
|
20
20
|
|
21
21
|
response.keys.must_include :quarterbacks
|
22
|
-
response[:quarterbacks].count.must_equal
|
22
|
+
response[:quarterbacks].count.must_equal 123
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -28,7 +28,7 @@ describe PlayerParser do
|
|
28
28
|
response = @parser.get_by_position(:runningbacks)
|
29
29
|
|
30
30
|
response.keys.must_include :runningbacks
|
31
|
-
response[:runningbacks].count.must_equal
|
31
|
+
response[:runningbacks].count.must_equal 245
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
@@ -37,7 +37,7 @@ describe PlayerParser do
|
|
37
37
|
response = @parser.get_by_position(:wide_receivers)
|
38
38
|
|
39
39
|
response.keys.must_include :wide_receivers
|
40
|
-
response[:wide_receivers].count.must_equal
|
40
|
+
response[:wide_receivers].count.must_equal 398
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
@@ -46,7 +46,7 @@ describe PlayerParser do
|
|
46
46
|
response = @parser.get_by_position(:tight_ends)
|
47
47
|
|
48
48
|
response.keys.must_include :tight_ends
|
49
|
-
response[:tight_ends].count.must_equal
|
49
|
+
response[:tight_ends].count.must_equal 206
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
@@ -55,15 +55,26 @@ describe PlayerParser do
|
|
55
55
|
response = @parser.get_by_position(:all)
|
56
56
|
|
57
57
|
{
|
58
|
-
quarterbacks:
|
59
|
-
runningbacks:
|
60
|
-
wide_receivers:
|
61
|
-
tight_ends:
|
58
|
+
quarterbacks: 123,
|
59
|
+
runningbacks: 245,
|
60
|
+
wide_receivers: 398,
|
61
|
+
tight_ends: 206
|
62
62
|
}.each do |position, player_count|
|
63
63
|
response.keys.must_include position
|
64
64
|
response[position].count.must_equal player_count
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
68
|
+
|
69
|
+
it 'should use JAX as Jacksonville abbreviation for all JAX team players' do
|
70
|
+
VCR.use_cassette('all_players') do
|
71
|
+
response = @parser.get_by_position(:all)
|
72
|
+
|
73
|
+
players = [response[:quarterbacks], response[:runningbacks], response[:wide_receivers], response[:tight_ends]].flatten
|
74
|
+
|
75
|
+
players.any? {|player| player[:team] == 'JAX'}.must_equal true
|
76
|
+
players.none? {|player| player[:team] == 'JAC'}.must_equal true
|
77
|
+
end
|
78
|
+
end
|
68
79
|
end
|
69
80
|
end
|
@@ -32,7 +32,9 @@ describe TeamParser do
|
|
32
32
|
|
33
33
|
it 'should use JAX as the abbreviation for Jacksonville' do
|
34
34
|
VCR.use_cassette('teams_with_schedule') do
|
35
|
-
@parser.get_by_year(2014, true)
|
35
|
+
result = @parser.get_by_year(2014, true)
|
36
|
+
result.any? {|team| team[:short_name] == 'JAX'}.must_equal true
|
37
|
+
result.none? {|team| team[:short_name] == 'JAC'}.must_equal true
|
36
38
|
end
|
37
39
|
end
|
38
40
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nfl_data
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- thetizzo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -115,6 +115,7 @@ files:
|
|
115
115
|
- lib/nfl_data/models/player.rb
|
116
116
|
- lib/nfl_data/models/statline.rb
|
117
117
|
- lib/nfl_data/models/team.rb
|
118
|
+
- lib/nfl_data/parsers/parser_helper.rb
|
118
119
|
- lib/nfl_data/parsers/player_parser.rb
|
119
120
|
- lib/nfl_data/parsers/statline_parser.rb
|
120
121
|
- lib/nfl_data/parsers/team_parser.rb
|