sportify 0.0.0 → 0.1.0
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/cli/cli.rb +36 -2
- data/lib/leagues/mlb_teams.rb +11 -1
- data/lib/scrapers/mlb_scraper.rb +41 -6
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1de05f607825ac2ca160f35d63415d00894c12b5
|
|
4
|
+
data.tar.gz: 654cfc4fd179150a80c99cc85231ad1886a5e2e5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fd4712c4b33009bbd1cfd2c74938b46b5cbb79dfae7f1eb8c67c4a384da25f92384808325ba6f68eabda45aec585f8b55b8d015ea91ecc7d7b6c2e2c19daefa6
|
|
7
|
+
data.tar.gz: 72f1cded084acf9fb6a7a98c97357abedb93375686d871102d21b0bd58bec0586810c3bf1536e1d6c18687c8f1e565864dc62337743c979c0b555cb74c41cc04
|
data/lib/cli/cli.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require "pry"
|
|
2
|
+
|
|
1
3
|
class Sportify::CLI
|
|
2
4
|
|
|
3
5
|
def initialize
|
|
@@ -63,9 +65,41 @@ class Sportify::CLI
|
|
|
63
65
|
end
|
|
64
66
|
|
|
65
67
|
def active_roster_display(team)
|
|
66
|
-
@mlb.roster(team).
|
|
67
|
-
puts "#{
|
|
68
|
+
@mlb.roster(team).each_with_index do |player, index|
|
|
69
|
+
puts "#{index + 1}) #{player[:player_name]}"
|
|
70
|
+
end
|
|
71
|
+
player_selector(team)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def player_selector(team)
|
|
75
|
+
puts ""
|
|
76
|
+
puts "Please input the number next to the player you would like information on or type menu to return to team menu"
|
|
77
|
+
puts ""
|
|
78
|
+
input = gets.strip
|
|
79
|
+
puts ""
|
|
80
|
+
if input.to_i.between?(1, @mlb.roster(team).length)
|
|
81
|
+
player_display(@mlb.roster(team)[input.to_i - 1])
|
|
82
|
+
elsif input.downcase == "menu"
|
|
83
|
+
team_menu(team)
|
|
84
|
+
else
|
|
85
|
+
puts "Invalid input. Please try again."
|
|
86
|
+
player_selector(team)
|
|
68
87
|
end
|
|
69
88
|
end
|
|
70
89
|
|
|
90
|
+
def player_display(player)
|
|
91
|
+
player = @mlb.player_builder(player)
|
|
92
|
+
puts "You've selected #{player[:name]}"
|
|
93
|
+
puts ""
|
|
94
|
+
puts "Jersey Number: #{player[:number]}"
|
|
95
|
+
puts ""
|
|
96
|
+
puts "Position: #{player[:position]}"
|
|
97
|
+
puts ""
|
|
98
|
+
puts "#{player[:bats_and_throws]}"
|
|
99
|
+
puts ""
|
|
100
|
+
puts "Height/Weight: #{player[:height_weight]}"
|
|
101
|
+
puts ""
|
|
102
|
+
puts "#{player[:age]}"
|
|
103
|
+
end
|
|
104
|
+
|
|
71
105
|
end
|
data/lib/leagues/mlb_teams.rb
CHANGED
|
@@ -9,8 +9,18 @@ class Sportify::MLBteams
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def roster(team)
|
|
12
|
-
@scraper.
|
|
12
|
+
@scraper.player_names(team).zip(@scraper.player_urls(team)).map { |player_name, player_url| {player_name: player_name, player_url: player_url}}
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
+
def player_builder(player)
|
|
16
|
+
{
|
|
17
|
+
name: @scraper.name(player),
|
|
18
|
+
number: @scraper.number(player),
|
|
19
|
+
position: @scraper.position(player),
|
|
20
|
+
bats_and_throws: @scraper.bats_and_throws(player),
|
|
21
|
+
height_weight: @scraper.height_weight(player),
|
|
22
|
+
age: @scraper.age(player)
|
|
23
|
+
}
|
|
24
|
+
end
|
|
15
25
|
|
|
16
26
|
end
|
data/lib/scrapers/mlb_scraper.rb
CHANGED
|
@@ -32,15 +32,13 @@ class Sportify::MLBscraper
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
def roster_doc(team)
|
|
35
|
-
|
|
36
|
-
html = open(url)
|
|
35
|
+
html = open(team[:team_url])
|
|
37
36
|
Nokogiri::HTML(html)
|
|
38
37
|
end
|
|
39
38
|
|
|
40
39
|
def player_numbers(team)
|
|
41
40
|
player_numbers = []
|
|
42
|
-
|
|
43
|
-
doc.css("table.data.roster_table").css("td.dg-jersey_number").each do |player|
|
|
41
|
+
roster_doc(team).css("table.data.roster_table").css("td.dg-jersey_number").each do |player|
|
|
44
42
|
player_numbers << player.text
|
|
45
43
|
end
|
|
46
44
|
player_numbers
|
|
@@ -48,11 +46,48 @@ class Sportify::MLBscraper
|
|
|
48
46
|
|
|
49
47
|
def player_names(team)
|
|
50
48
|
player_names = []
|
|
51
|
-
|
|
52
|
-
doc.css("td.dg-name_display_first_last").css("a").each do |player|
|
|
49
|
+
roster_doc(team).css("td.dg-name_display_first_last").css("a").each do |player|
|
|
53
50
|
player_names << player.text
|
|
54
51
|
end
|
|
55
52
|
player_names
|
|
56
53
|
end
|
|
57
54
|
|
|
55
|
+
def player_urls(team)
|
|
56
|
+
player_urls = []
|
|
57
|
+
team_url = team[:team_url]
|
|
58
|
+
roster_doc(team).css("td.dg-name_display_first_last").css("a").each do |player|
|
|
59
|
+
player_urls << team_url + player["href"]
|
|
60
|
+
end
|
|
61
|
+
player_urls
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def player_doc(player)
|
|
65
|
+
html = open(player[:player_url])
|
|
66
|
+
Nokogiri::HTML(html)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def name(player)
|
|
70
|
+
player_doc(player).css("span.player-header--vitals-name").text
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def number(player)
|
|
74
|
+
player_doc(player).css("span.player-header--vitals-number").text
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def position(player)
|
|
78
|
+
player_doc(player).css("div.player-header--vitals").css("ul").css("li")[0].text
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def bats_and_throws(player)
|
|
82
|
+
player_doc(player).css("div.player-header--vitals").css("ul").css("li")[1].text
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def height_weight(player)
|
|
86
|
+
player_doc(player).css("div.player-header--vitals").css("ul").css("li.player-header--vitals-height").text
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def age(player)
|
|
90
|
+
player_doc(player).css("div.player-header--vitals").css("ul").css("li.player-header--vitals-age").text
|
|
91
|
+
end
|
|
92
|
+
|
|
58
93
|
end
|