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.
@@ -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'
@@ -0,0 +1,5 @@
1
+ #!/user/bin/env ruby
2
+
3
+ require_relative '../lib/bucs_roster'
4
+
5
+ BucsRoster::CLI.new.start
@@ -0,0 +1,9 @@
1
+ require "nokogiri"
2
+ require "open-uri"
3
+ #require "pry"
4
+
5
+
6
+ require_relative '../lib/bucs_roster/version'
7
+ require_relative '../lib/bucs_roster/cli'
8
+ require_relative '../lib/bucs_roster/scraper'
9
+ require_relative '../lib/bucs_roster/player'
@@ -0,0 +1,2 @@
1
+ require_relative '../config/environment'
2
+ require_relative "./bucs_roster/version"
@@ -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: []