nba-stats 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/nba_stats/cli.rb +38 -32
- data/lib/nba_stats/player.rb +1 -0
- data/lib/nba_stats/scraper.rb +14 -8
- data/lib/nba_stats/team.rb +13 -3
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 77fe915ee660f8d723ff533f725e222c34ebeed4
|
4
|
+
data.tar.gz: 36246b0af9b5d0095cd289a6e3653eea513ac1e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 52be75b9d14722ea257eeddff435dbf01086aa14d56364d4c727577268892dfeb0da5f69887df5c7ac4a9ec1de4c196aef68fcb7a50d57d60fd8be992e2f4663
|
7
|
+
data.tar.gz: 9cefc1ecd4e4db91ce1bbafc28bc175dea2a769600b48bc5149320224413493dee629793173c10ddc6ed359157aefdfc3f3f6b8eb3cd533b2107111daa0ecc54
|
data/lib/nba_stats/cli.rb
CHANGED
@@ -1,32 +1,50 @@
|
|
1
1
|
class NbaStats::CLI
|
2
2
|
|
3
3
|
def call
|
4
|
+
puts "Welcome to the NBA Stats CLI Gem"
|
4
5
|
start
|
5
6
|
end
|
6
7
|
|
7
8
|
def start
|
8
|
-
puts "
|
9
|
+
puts "Input one of the team names below to load their roster."
|
10
|
+
puts "Input exit to leave this program."
|
9
11
|
puts "Here's the list of current teams"
|
10
|
-
make_teams
|
11
|
-
NbaStats::Team.all.each do |team|
|
12
|
-
puts team.name
|
13
|
-
end
|
14
12
|
|
15
|
-
|
16
|
-
|
13
|
+
make_teams if NbaStats::Team.all.empty?
|
14
|
+
|
15
|
+
rows = [["Eastern Conference", "Western Conference"]]
|
16
|
+
west_teams = NbaStats::Team.western_names
|
17
|
+
east_teams = NbaStats::Team.eastern_names
|
17
18
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
puts "Do you want to look up another player on this team? y/n"
|
23
|
-
response = gets.strip
|
19
|
+
i = 0
|
20
|
+
while i < 15
|
21
|
+
rows << [east_teams[i], west_teams[i]]
|
22
|
+
i += 1
|
24
23
|
end
|
25
24
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
25
|
+
team_table = Terminal::Table.new rows: rows
|
26
|
+
puts team_table
|
27
|
+
|
28
|
+
input = ""
|
29
|
+
while input != "exit"
|
30
|
+
puts "Input a team name to see their roster: "
|
31
|
+
input = gets.strip
|
32
|
+
if NbaStats::Team.team_names.include? input
|
33
|
+
display_roster(input)
|
34
|
+
puts "Input a player name to see their individual stats: "
|
35
|
+
input = gets.strip
|
36
|
+
while NbaStats::Player.player_names.include? input
|
37
|
+
display_player_stats(input)
|
38
|
+
puts "Input another player name from this team to see their stats."
|
39
|
+
puts "Or input change teams to see another team's roster."
|
40
|
+
input = gets.strip
|
41
|
+
if input == "change teams" || input == "change team"
|
42
|
+
start
|
43
|
+
elsif input == "exit"
|
44
|
+
break
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
30
48
|
end
|
31
49
|
end
|
32
50
|
|
@@ -35,15 +53,9 @@ class NbaStats::CLI
|
|
35
53
|
NbaStats::Team.create_from_collection(teams_array)
|
36
54
|
end
|
37
55
|
|
38
|
-
def
|
39
|
-
puts "Enter a team name to see their roster: "
|
40
|
-
requested_team = gets.strip
|
41
|
-
while !NbaStats::Team.team_names.include? requested_team
|
42
|
-
puts "That team doesn't exist. Try again."
|
43
|
-
requested_team = gets.strip
|
44
|
-
end
|
56
|
+
def display_roster(requested_team)
|
45
57
|
team = NbaStats::Team.all.detect {|team| team.name == requested_team}
|
46
|
-
team.add_players
|
58
|
+
team.add_players if team.players.empty?
|
47
59
|
puts team.name + " roster:"
|
48
60
|
rows = [["Number", "Name", "Position", "Height", "Experience"]]
|
49
61
|
team.players.each do |player|
|
@@ -53,13 +65,7 @@ class NbaStats::CLI
|
|
53
65
|
puts roster_table
|
54
66
|
end
|
55
67
|
|
56
|
-
def
|
57
|
-
puts "Enter a player name to see their individual stats: "
|
58
|
-
requested_player = gets.strip
|
59
|
-
while !NbaStats::Player.player_names.include? requested_player
|
60
|
-
puts "That player isn't on this team. Try again."
|
61
|
-
requested_player = gets.strip
|
62
|
-
end
|
68
|
+
def display_player_stats(requested_player)
|
63
69
|
player = NbaStats::Player.all.detect {|player| player.name == requested_player}
|
64
70
|
stats_hash = NbaStats::Scraper.get_player_stats(player)
|
65
71
|
player.add_player_stats(stats_hash)
|
data/lib/nba_stats/player.rb
CHANGED
@@ -2,6 +2,7 @@ class NbaStats::Player
|
|
2
2
|
attr_accessor :name, :team, :number, :player_url, :position, :height, :experience, :points_pg, :assists_pg, :rebounds_pg, :blocks_pg, :steals_pg, :minutes_pg, :fg_percentage, :three_percentage, :ft_percentage
|
3
3
|
|
4
4
|
@@all = []
|
5
|
+
|
5
6
|
def initialize(player_hash)
|
6
7
|
player_hash.each do |key, value|
|
7
8
|
self.send("#{key}=", value)
|
data/lib/nba_stats/scraper.rb
CHANGED
@@ -4,18 +4,24 @@ class NbaStats::Scraper
|
|
4
4
|
Nokogiri::HTML(open(url))
|
5
5
|
end
|
6
6
|
|
7
|
-
# Returns an array of hashes with current team names and links to 2015-16 team page
|
8
7
|
def self.get_teams
|
9
|
-
page = open_page("http://www.basketball-reference.com/
|
10
|
-
|
11
|
-
|
8
|
+
page = open_page("http://www.basketball-reference.com/leagues/NBA_2016_standings.html")
|
9
|
+
|
10
|
+
east_teams = page.css("table#E_standings td a")
|
11
|
+
west_teams = page.css("table#W_standings td a")
|
12
|
+
|
13
|
+
assign_teams(west_teams, "West") + assign_teams(east_teams, "East")
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.assign_teams(teams, conference)
|
17
|
+
assigned_teams = []
|
12
18
|
teams.each do |team|
|
13
19
|
name = team.text
|
14
|
-
team_url = "http://www.basketball-reference.com"+ team["href"]
|
15
|
-
hash = {name: name, team_url: team_url}
|
16
|
-
|
20
|
+
team_url = "http://www.basketball-reference.com"+ team["href"]
|
21
|
+
hash = {name: name, team_url: team_url, conference: conference}
|
22
|
+
assigned_teams << hash unless assigned_teams.include? hash
|
17
23
|
end
|
18
|
-
|
24
|
+
assigned_teams
|
19
25
|
end
|
20
26
|
|
21
27
|
def self.get_roster(team)
|
data/lib/nba_stats/team.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
class NbaStats::Team
|
2
2
|
|
3
|
-
attr_accessor :name, :team_url, :players
|
3
|
+
attr_accessor :name, :team_url, :players, :conference
|
4
4
|
|
5
5
|
@@all = []
|
6
6
|
|
@@ -9,7 +9,7 @@ class NbaStats::Team
|
|
9
9
|
self.send("#{key}=", value)
|
10
10
|
end
|
11
11
|
@players = []
|
12
|
-
@@all << self
|
12
|
+
@@all << self unless @@all.include? self
|
13
13
|
end
|
14
14
|
|
15
15
|
def add_players
|
@@ -19,7 +19,7 @@ class NbaStats::Team
|
|
19
19
|
|
20
20
|
def self.create_from_collection(teams_array)
|
21
21
|
teams_array.each do |team|
|
22
|
-
new_team = NbaStats::Team.new(team)
|
22
|
+
new_team = NbaStats::Team.new(team) unless @@all.include? team
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -31,4 +31,14 @@ class NbaStats::Team
|
|
31
31
|
@@all.collect {|team| team.name }
|
32
32
|
end
|
33
33
|
|
34
|
+
def self.western_names
|
35
|
+
west = @@all.select {|team| team.conference == "West"}
|
36
|
+
west.collect {|team| team.name}.sort
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.eastern_names
|
40
|
+
east = @@all.select {|team| team.conference == "East"}
|
41
|
+
east.collect {|team| team.name}.sort
|
42
|
+
end
|
43
|
+
|
34
44
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nba-stats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Barron
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -108,7 +108,7 @@ dependencies:
|
|
108
108
|
- - '='
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: 1.5.2
|
111
|
-
description: A command line interface for looking 2015-16 NBA player stats
|
111
|
+
description: A command line interface for looking up 2015-16 NBA player stats
|
112
112
|
email: alexbarron@gmail.com
|
113
113
|
executables:
|
114
114
|
- nba-stats
|
@@ -122,7 +122,7 @@ files:
|
|
122
122
|
- lib/nba_stats/player.rb
|
123
123
|
- lib/nba_stats/scraper.rb
|
124
124
|
- lib/nba_stats/team.rb
|
125
|
-
homepage:
|
125
|
+
homepage: https://github.com/alexbarron/nba-stats-cli-gem
|
126
126
|
licenses:
|
127
127
|
- MIT
|
128
128
|
metadata: {}
|
@@ -145,5 +145,5 @@ rubyforge_project:
|
|
145
145
|
rubygems_version: 2.4.8
|
146
146
|
signing_key:
|
147
147
|
specification_version: 4
|
148
|
-
summary: NBA Stats
|
148
|
+
summary: Lookup NBA Player Stats
|
149
149
|
test_files: []
|