class PlayOverwatch::Scraper
This class represents a scraper that can be used to retrieve certain statistics.
Public Class Methods
new(battle_tag)
click to toggle source
Creates a scraper with a specified battle tag. The battle_tag
can be in the hex (#) or hyphenated (-) format. It IS case sensitive.
# 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
Public Instance Methods
endorsement_level()
click to toggle source
Retrieve a player's endorsement level
# 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()
click to toggle source
Retrieve player's main Competitive hero, in lowercase form. You should check if the sr is -1 before attempting to call this.
# 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()
click to toggle source
Retrieve player's main Quick Play hero, in lowercase form.
# 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()
click to toggle source
Retrieve the player's player icon. Returns an image URL.
# File lib/playoverwatch-scraper/scraper.rb, line 21 def player_icon @player_page.css('img.player-portrait').first["src"] end
player_level()
click to toggle source
Retrieve a player's level
# File lib/playoverwatch-scraper/scraper.rb, line 27 def player_level @player_data.first['level'].to_i end
sr()
click to toggle source
Retrieve a player's current competitive season ranking. Returns -1 if player did not complete placements.
# 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
Private Instance Methods
rank_map()
click to toggle source
# File lib/playoverwatch-scraper/scraper.rb, line 63 def rank_map JSON.parse File.read(File.expand_path('./ranks.json', __dir__)) end