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 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
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative "../lib/sportify"
4
+
5
+ Sportify::CLI.new
@@ -0,0 +1,7 @@
1
+ require "nokogiri"
2
+ require "open-uri"
3
+ require "bundler"
4
+
5
+ require_relative "../lib/cli/cli"
6
+ require_relative "../lib/leagues/mlb_teams"
7
+ require_relative "../lib/scrapers/mlb_scraper"
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
@@ -0,0 +1,4 @@
1
+ module Sportify
2
+ end
3
+
4
+ require_relative '../config/environment'
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: []