Class: PlayOverwatch::Scraper

Inherits:
Object
  • Object
show all
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

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_levelObject

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_compObject

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_qpObject

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_iconObject

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_levelObject

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

#srObject

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