bucs-roster 0.2.2
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/bucs-roster +5 -0
- data/config/environment.rb +9 -0
- data/lib/bucs_roster.rb +2 -0
- data/lib/bucs_roster/cli.rb +54 -0
- data/lib/bucs_roster/player.rb +27 -0
- data/lib/bucs_roster/scraper.rb +36 -0
- metadata +106 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c7aa9a44c6acc1c72ecc17501080633342d38610f0f7017360321100f438aa2f
|
4
|
+
data.tar.gz: b9424638dd22a7308a2b620a37594765caab3552eb75d2d105f8a2f1b6d21591
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4545e0ff084c6a4b86798b95b5def8e8cc58eead38f3f1d2181a57002127a58b05cc5fceb6378d29e3dd4e796fdda79a111c050b7c3080fbf796451a51a267a8
|
7
|
+
data.tar.gz: '07866fc30ad5f19f7406785a27c7dde76052b9588d98e2eab05b6b9ac28cd243271de8c137c64630f851cee9c52fb2b41a189d38e3273a432ee02c29682e3917'
|
data/bin/bucs-roster
ADDED
data/lib/bucs_roster.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
class BucsRoster::CLI
|
2
|
+
def start
|
3
|
+
puts "Here are your Tampa Bay Buccaneers!"
|
4
|
+
Scraper.new.scrape_index
|
5
|
+
menu
|
6
|
+
end
|
7
|
+
|
8
|
+
def menu
|
9
|
+
@pointer ||= 0
|
10
|
+
Player.all[@pointer,30].each.with_index(@pointer+1) do |player, index|
|
11
|
+
puts "#{index}. #{player.name}"
|
12
|
+
end
|
13
|
+
puts "Enter the number of the player you would like to know more about, '+' for next group, '-' for previous group or type 'exit' to end."
|
14
|
+
user_input = gets.strip
|
15
|
+
case user_input
|
16
|
+
when "exit"
|
17
|
+
goodbye
|
18
|
+
when "+"
|
19
|
+
@pointer += 30
|
20
|
+
@pointer = (Player.all.count)-30 if @pointer > Player.all.count
|
21
|
+
menu
|
22
|
+
when "-"
|
23
|
+
@pointer -= 30
|
24
|
+
@pointer = 0 if @pointer < 0
|
25
|
+
menu
|
26
|
+
end
|
27
|
+
user_input = user_input.to_i
|
28
|
+
if user_input.between?(1, Player.all.count)
|
29
|
+
user_input -=1
|
30
|
+
Scraper.scrape_player(user_input)
|
31
|
+
Player.show_player_info(user_input)
|
32
|
+
ask_again
|
33
|
+
else
|
34
|
+
puts "Invalid entry. Please try again."
|
35
|
+
menu
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def ask_again
|
40
|
+
puts "Would you like to explore another player? (Y/N)"
|
41
|
+
input = gets.strip.downcase
|
42
|
+
if input[0] == "y"
|
43
|
+
menu
|
44
|
+
else
|
45
|
+
goodbye
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def goodbye
|
50
|
+
puts "Thanks for checking out the Tampa Bay Bucs!"
|
51
|
+
exit
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
class Player
|
2
|
+
attr_accessor :name, :position, :jersey_number, :height, :weight, :age, :experience, :college, :player_URL, :bio
|
3
|
+
@@all = []
|
4
|
+
|
5
|
+
def initialize(name, player_URL)
|
6
|
+
@name = name
|
7
|
+
@player_URL = player_URL
|
8
|
+
@@all << self
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.all
|
12
|
+
@@all
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.show_player_info(index)
|
16
|
+
player = self.all[index]
|
17
|
+
puts " ---- Tampa Bay Buccaneers Player Profile ----"
|
18
|
+
puts " #{player.name.upcase} | #{player.jersey_number} | #{player.position}"
|
19
|
+
puts ""
|
20
|
+
puts "Height: #{player.height}"
|
21
|
+
puts "Weight: #{player.weight}"
|
22
|
+
puts "Age: #{player.age}"
|
23
|
+
puts "College: #{player.college}"
|
24
|
+
puts "Experience: #{player.experience}"
|
25
|
+
puts "Biography: \n#{player.bio}\n\n"
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class Scraper
|
2
|
+
|
3
|
+
def scrape_index
|
4
|
+
html = open("https://www.buccaneers.com/team/players-roster/")
|
5
|
+
doc = Nokogiri::HTML(html)
|
6
|
+
doc.css(".nfl-o-roster__player-name").each do |player|
|
7
|
+
name = player.css("a").text
|
8
|
+
player_URL = "https://www.buccaneers.com" + player.css("a")[0]["href"]
|
9
|
+
Player.new(name, player_URL)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.scrape_player(index)
|
14
|
+
player = Player.all[index]
|
15
|
+
html = open(player.player_URL)
|
16
|
+
doc = Nokogiri::HTML(html)
|
17
|
+
player.experience = doc.search("div.nfl-t-person-tile__details p")[0].text.gsub("Experience: ","")
|
18
|
+
player.height = doc.search("div.nfl-t-person-tile__details p")[1].text.gsub("Height: ","")
|
19
|
+
player.age = doc.search("div.nfl-t-person-tile__details p")[2].text.gsub("Age: ","")
|
20
|
+
player.weight = doc.search("div.nfl-t-person-tile__details p")[3].text.gsub("Weight: ","")
|
21
|
+
player.college = doc.search("div.nfl-t-person-tile__details p")[4].text.gsub("College: ","")
|
22
|
+
player.position = doc.search("h3.d3-o-media-object__primary-subtitle").text.strip
|
23
|
+
player.jersey_number = doc.search("h3.d3-o-media-object__secondary-subtitle").text.strip
|
24
|
+
player.bio = ""
|
25
|
+
bio = doc.search("div.nfl-c-body-part.nfl-c-body-part--text p")[2..-1]
|
26
|
+
if bio != nil
|
27
|
+
bio.each do |bio_fact|
|
28
|
+
player.bio = player.bio + bio_fact.text + "\n\n"
|
29
|
+
end
|
30
|
+
else
|
31
|
+
player.bio = "No player bio available."
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
metadata
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bucs-roster
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- "'Paul Fell-Cinoman'"
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-04-26 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.1
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.0.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: nokogiri
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: Provides details about players on the active team roster
|
70
|
+
email:
|
71
|
+
- "'swellpf@gmail.com'"
|
72
|
+
executables:
|
73
|
+
- bucs-roster
|
74
|
+
extensions: []
|
75
|
+
extra_rdoc_files: []
|
76
|
+
files:
|
77
|
+
- bin/bucs-roster
|
78
|
+
- config/environment.rb
|
79
|
+
- lib/bucs_roster.rb
|
80
|
+
- lib/bucs_roster/cli.rb
|
81
|
+
- lib/bucs_roster/player.rb
|
82
|
+
- lib/bucs_roster/scraper.rb
|
83
|
+
homepage: http://rubygems.org/gems/bucs-roster
|
84
|
+
licenses:
|
85
|
+
- MIT
|
86
|
+
metadata: {}
|
87
|
+
post_install_message:
|
88
|
+
rdoc_options: []
|
89
|
+
require_paths:
|
90
|
+
- lib
|
91
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
requirements: []
|
102
|
+
rubygems_version: 3.0.3
|
103
|
+
signing_key:
|
104
|
+
specification_version: 4
|
105
|
+
summary: Tampa Bay Buccaneers Player Roster
|
106
|
+
test_files: []
|