Class: PlayOverwatch::Scraper
- Inherits:
-
Object
- Object
- PlayOverwatch::Scraper
- Defined in:
- lib/playoverwatch-scraper/scraper.rb
Overview
This class represents a scraper that can be used to retrieve certain statistics.
Instance Method Summary collapse
-
#endorsement_level ⇒ Object
Retrieve a player’s endorsement level.
-
#initialize(battle_tag) ⇒ Scraper
constructor
Creates a scraper with a specified battle tag.
-
#main_comp ⇒ Object
Retrieve player’s main Competitive hero, in lowercase form.
-
#main_qp ⇒ Object
Retrieve player’s main Quick Play hero, in lowercase form.
-
#player_icon ⇒ Object
Retrieve the player’s player icon.
-
#player_level ⇒ Object
Retrieve a player’s level.
-
#sr ⇒ Object
Retrieve a player’s current competitive season ranking.
Constructor Details
#initialize(battle_tag) ⇒ Scraper
Creates a scraper with a specified battle tag. The battle_tag can be in the hex (#) or hyphenated (-) format. It IS case sensitive.
14 15 16 17 |
# File 'lib/playoverwatch-scraper/scraper.rb', line 14 def initialize(battle_tag) @player_page = Nokogiri::HTML(open("https://playoverwatch.com/en-us/career/pc/#{battle_tag.gsub(/#/, '-')}", "User-Agent" => CHROME_USER_AGENT)) @player_data = JSON.parse open("https://playoverwatch.com/en-us/search/account-by-name/#{battle_tag.gsub(/#/, '-').gsub(/-/, '%23')}", "User-Agent" => CHROME_USER_AGENT).read end |
Instance Method Details
#endorsement_level ⇒ Object
Retrieve a player’s endorsement level
33 34 35 |
# File 'lib/playoverwatch-scraper/scraper.rb', line 33 def endorsement_level @player_page.css('.EndorsementIcon-tooltip .u-center').first.content.to_i end |
#main_comp ⇒ Object
Retrieve player’s main Competitive hero, in lowercase form. You should check if the sr is -1 before attempting to call this.
57 58 59 60 |
# File 'lib/playoverwatch-scraper/scraper.rb', line 57 def main_comp hero_img = hidden_mains_style.content.scan(/\.competitive {.+?url\((.+?)\);/mis).flatten.first hero_img.scan(/\/hero\/(.+?)\/career/i).flatten.first end |
#main_qp ⇒ Object
Retrieve player’s main Quick Play hero, in lowercase form.
49 50 51 52 |
# File 'lib/playoverwatch-scraper/scraper.rb', line 49 def main_qp hero_img = hidden_mains_style.content.scan(/\.quickplay {.+?url\((.+?)\);/mis).flatten.first hero_img.scan(/\/hero\/(.+?)\/career/i).flatten.first end |
#player_icon ⇒ Object
Retrieve the player’s player icon. Returns an image URL.
21 22 23 |
# File 'lib/playoverwatch-scraper/scraper.rb', line 21 def player_icon @player_page.css('img.player-portrait').first["src"] end |
#player_level ⇒ Object
Retrieve a player’s level
27 28 29 |
# File 'lib/playoverwatch-scraper/scraper.rb', line 27 def player_level @player_data.first['level'].to_i end |
#sr ⇒ Object
Retrieve a player’s current competitive season ranking. Returns -1 if player did not complete placements.
40 41 42 43 44 45 |
# File 'lib/playoverwatch-scraper/scraper.rb', line 40 def sr comp_div = @player_page.css('.competitive-rank > .h5') return -1 if comp_div.empty? content = comp_div.first.content content.to_i if Integer(content) rescue -1 end |