sportify 0.0.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 +7 -0
- data/bin/sportify +5 -0
- data/config/environment.rb +7 -0
- data/lib/cli/cli.rb +71 -0
- data/lib/leagues/mlb_teams.rb +16 -0
- data/lib/scrapers/mlb_scraper.rb +58 -0
- data/lib/sportify.rb +4 -0
- metadata +138 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 5584ba62b7937c79c77eda01d6c5712ee8d48522
|
|
4
|
+
data.tar.gz: b896277c59c7aee193edc37d44873ff2e582ae84
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: c6959e9727b6585ed3831821378d86f800afee882afad5dc217b79893112516880d704cd39ddab6105e8638c0f32025903aabd5a830a9a4a273f57c9eee73b1b
|
|
7
|
+
data.tar.gz: 5ef6de1a0f4d02fd06a00b6cf953285306a6a8ff0bec1d337b951eeaa56ef36ee8effc89ef5db8c079f642282b79673e1a44e73d4c2533ccd5840e16f80dff91
|
data/bin/sportify
ADDED
data/lib/cli/cli.rb
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
class Sportify::CLI
|
|
2
|
+
|
|
3
|
+
def initialize
|
|
4
|
+
@mlb = Sportify::MLBteams.new
|
|
5
|
+
main_menu
|
|
6
|
+
team_selector
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def main_menu
|
|
10
|
+
puts "***** Welcome To Sportify *****"
|
|
11
|
+
puts ""
|
|
12
|
+
@mlb.teams.each_with_index do |team, index|
|
|
13
|
+
puts "#{index + 1}) #{team[:team_name]}"
|
|
14
|
+
end
|
|
15
|
+
puts ""
|
|
16
|
+
puts "Enter the number of the team you want information on or type 'exit' to leave Sportify"
|
|
17
|
+
puts ""
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def team_selector
|
|
21
|
+
input = gets.strip
|
|
22
|
+
puts ""
|
|
23
|
+
if input.to_i.between?(1, @mlb.teams.length)
|
|
24
|
+
team_menu(@mlb.teams[input.to_i - 1])
|
|
25
|
+
elsif input.downcase == "exit"
|
|
26
|
+
puts "Goodbye"
|
|
27
|
+
else
|
|
28
|
+
puts "Invalid input. Please try again."
|
|
29
|
+
team_selector
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def team_menu(team)
|
|
34
|
+
puts ""
|
|
35
|
+
puts "You've selected the #{team[:team_name]}"
|
|
36
|
+
puts""
|
|
37
|
+
puts "Please choose an option"
|
|
38
|
+
puts ""
|
|
39
|
+
puts "1) View Active Roster"
|
|
40
|
+
puts "2) Return to Main Menu"
|
|
41
|
+
puts "3) Exit Sportify"
|
|
42
|
+
team_menu_router(team)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def team_menu_router(team)
|
|
46
|
+
puts ""
|
|
47
|
+
input = gets.strip.to_i
|
|
48
|
+
puts ""
|
|
49
|
+
case input
|
|
50
|
+
when 1
|
|
51
|
+
puts "***** Active Roster *****"
|
|
52
|
+
puts ""
|
|
53
|
+
active_roster_display(team)
|
|
54
|
+
team_menu(team)
|
|
55
|
+
when 2
|
|
56
|
+
Sportify::CLI.new
|
|
57
|
+
when 3
|
|
58
|
+
puts "Goodbye"
|
|
59
|
+
else
|
|
60
|
+
puts "Invalid input. Please try again."
|
|
61
|
+
team_menu_router(team)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def active_roster_display(team)
|
|
66
|
+
@mlb.roster(team).each do |player|
|
|
67
|
+
puts "#{player[:player_number]} #{player[:player_name]}"
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class Sportify::MLBteams
|
|
2
|
+
|
|
3
|
+
def initialize
|
|
4
|
+
@scraper = Sportify::MLBscraper.new
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def teams
|
|
8
|
+
@scraper.teams.zip(@scraper.team_urls).map { |team, team_url| {team_name: team, team_url: team_url} }.sort_by { |team| team[:team_name] }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def roster(team)
|
|
12
|
+
@scraper.player_numbers(team).zip(@scraper.player_names(team)).map { |player_number, player_name| {player_number: player_number, player_name: player_name}}
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
class Sportify::MLBscraper
|
|
2
|
+
|
|
3
|
+
@@root_url = "https://www.mlb.com/team"
|
|
4
|
+
@@root_html = open(@@root_url)
|
|
5
|
+
@@root_doc = Nokogiri::HTML(@@root_html)
|
|
6
|
+
|
|
7
|
+
def teams
|
|
8
|
+
teams = []
|
|
9
|
+
@@root_doc.css("div.u-text-h4.u-text-flow").each do |team|
|
|
10
|
+
teams << team.text
|
|
11
|
+
end
|
|
12
|
+
teams
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def team_urls
|
|
16
|
+
team_urls = []
|
|
17
|
+
@@root_doc.css("div.p-wysiwyg").each do |team|
|
|
18
|
+
team_urls << team.css("a")[0]["href"]
|
|
19
|
+
end
|
|
20
|
+
team_urls
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def roster_url(team_url)
|
|
24
|
+
html = open(team_url)
|
|
25
|
+
doc = Nokogiri::HTML(html)
|
|
26
|
+
if team_url == "https://www.mlb.com/reds" || team_url == "https://www.mlb.com/dodgers" || team_url == "https://www.mlb.com/giants"
|
|
27
|
+
roster_url = doc.css("div.megamenu-navbar").css("a.megamenu-static-navbar__menu-item.megamenu-static-navbar__menu-item--roster").attribute("href").value
|
|
28
|
+
else
|
|
29
|
+
roster_url = doc.css("div.megamenu-navbar").css("a.megamenu-static-navbar__menu-item.megamenu-static-navbar__menu-item--team").attribute("href").value
|
|
30
|
+
end
|
|
31
|
+
roster_url
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def roster_doc(team)
|
|
35
|
+
url = roster_url(team[:team_url])
|
|
36
|
+
html = open(url)
|
|
37
|
+
Nokogiri::HTML(html)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def player_numbers(team)
|
|
41
|
+
player_numbers = []
|
|
42
|
+
doc = roster_doc(team)
|
|
43
|
+
doc.css("table.data.roster_table").css("td.dg-jersey_number").each do |player|
|
|
44
|
+
player_numbers << player.text
|
|
45
|
+
end
|
|
46
|
+
player_numbers
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def player_names(team)
|
|
50
|
+
player_names = []
|
|
51
|
+
doc = roster_doc(team)
|
|
52
|
+
doc.css("td.dg-name_display_first_last").css("a").each do |player|
|
|
53
|
+
player_names << player.text
|
|
54
|
+
end
|
|
55
|
+
player_names
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|
data/lib/sportify.rb
ADDED
metadata
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: sportify
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Bruce Hillsworth
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2019-06-14 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: bundler
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '2.0'
|
|
20
|
+
- - ">="
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: 2.0.2
|
|
23
|
+
type: :development
|
|
24
|
+
prerelease: false
|
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
26
|
+
requirements:
|
|
27
|
+
- - "~>"
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '2.0'
|
|
30
|
+
- - ">="
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: 2.0.2
|
|
33
|
+
- !ruby/object:Gem::Dependency
|
|
34
|
+
name: rake
|
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '12.3'
|
|
40
|
+
- - ">="
|
|
41
|
+
- !ruby/object:Gem::Version
|
|
42
|
+
version: 12.3.2
|
|
43
|
+
type: :development
|
|
44
|
+
prerelease: false
|
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
46
|
+
requirements:
|
|
47
|
+
- - "~>"
|
|
48
|
+
- !ruby/object:Gem::Version
|
|
49
|
+
version: '12.3'
|
|
50
|
+
- - ">="
|
|
51
|
+
- !ruby/object:Gem::Version
|
|
52
|
+
version: 12.3.2
|
|
53
|
+
- !ruby/object:Gem::Dependency
|
|
54
|
+
name: rspec
|
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
|
56
|
+
requirements:
|
|
57
|
+
- - "~>"
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: '3.8'
|
|
60
|
+
type: :development
|
|
61
|
+
prerelease: false
|
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
63
|
+
requirements:
|
|
64
|
+
- - "~>"
|
|
65
|
+
- !ruby/object:Gem::Version
|
|
66
|
+
version: '3.8'
|
|
67
|
+
- !ruby/object:Gem::Dependency
|
|
68
|
+
name: nokogiri
|
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
|
70
|
+
requirements:
|
|
71
|
+
- - "~>"
|
|
72
|
+
- !ruby/object:Gem::Version
|
|
73
|
+
version: '1.10'
|
|
74
|
+
- - ">="
|
|
75
|
+
- !ruby/object:Gem::Version
|
|
76
|
+
version: 1.10.2
|
|
77
|
+
type: :development
|
|
78
|
+
prerelease: false
|
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
80
|
+
requirements:
|
|
81
|
+
- - "~>"
|
|
82
|
+
- !ruby/object:Gem::Version
|
|
83
|
+
version: '1.10'
|
|
84
|
+
- - ">="
|
|
85
|
+
- !ruby/object:Gem::Version
|
|
86
|
+
version: 1.10.2
|
|
87
|
+
- !ruby/object:Gem::Dependency
|
|
88
|
+
name: pry
|
|
89
|
+
requirement: !ruby/object:Gem::Requirement
|
|
90
|
+
requirements:
|
|
91
|
+
- - "~>"
|
|
92
|
+
- !ruby/object:Gem::Version
|
|
93
|
+
version: 0.12.2
|
|
94
|
+
type: :development
|
|
95
|
+
prerelease: false
|
|
96
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
97
|
+
requirements:
|
|
98
|
+
- - "~>"
|
|
99
|
+
- !ruby/object:Gem::Version
|
|
100
|
+
version: 0.12.2
|
|
101
|
+
description: A command line app that scrapes rosters for all 30 MLB teams
|
|
102
|
+
email: bruce.hillsworth@gmail.com
|
|
103
|
+
executables:
|
|
104
|
+
- sportify
|
|
105
|
+
extensions: []
|
|
106
|
+
extra_rdoc_files: []
|
|
107
|
+
files:
|
|
108
|
+
- bin/sportify
|
|
109
|
+
- config/environment.rb
|
|
110
|
+
- lib/cli/cli.rb
|
|
111
|
+
- lib/leagues/mlb_teams.rb
|
|
112
|
+
- lib/scrapers/mlb_scraper.rb
|
|
113
|
+
- lib/sportify.rb
|
|
114
|
+
homepage: https://rubygems.org/gems/sportify
|
|
115
|
+
licenses:
|
|
116
|
+
- MIT
|
|
117
|
+
metadata: {}
|
|
118
|
+
post_install_message:
|
|
119
|
+
rdoc_options: []
|
|
120
|
+
require_paths:
|
|
121
|
+
- lib
|
|
122
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
123
|
+
requirements:
|
|
124
|
+
- - ">="
|
|
125
|
+
- !ruby/object:Gem::Version
|
|
126
|
+
version: '0'
|
|
127
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - ">="
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: '0'
|
|
132
|
+
requirements: []
|
|
133
|
+
rubyforge_project:
|
|
134
|
+
rubygems_version: 2.5.1
|
|
135
|
+
signing_key:
|
|
136
|
+
specification_version: 4
|
|
137
|
+
summary: Sportify
|
|
138
|
+
test_files: []
|