class NewGameScores::CollectionScraper

Attributes

game_url[RW]
metascore[RW]
name[RW]
score[RW]
title[RW]
url[RW]
userscore[RW]

Public Class Methods

collection() click to toggle source
# File lib/new_game_scores/collection_scraper.rb, line 12
def self.collection
  @@collection 
end
new(url = nil, score = nil) click to toggle source
# File lib/new_game_scores/collection_scraper.rb, line 7
def initialize(url = nil, score = nil)
  @url = url 
  @score = score
end

Public Instance Methods

clear() click to toggle source
# File lib/new_game_scores/collection_scraper.rb, line 16
def clear
  @@collection.clear
end
display_list() click to toggle source
# File lib/new_game_scores/collection_scraper.rb, line 35
def display_list
  @@collection.each_with_index do |game, i|
    game.each do |key, value|
      if key = :metasocre && value.to_i >= @score.to_i
        puts "  \n#{i+1}. #{game[:title]} \n \n     Metascore: #{game[:metascore]} \n     Userscore: #{game[:userscore]} \n     Release Date: #{game[:release_date]}\n     Game Link: #{game[:game_url]}\n \n"
      end
    end 
  end
end
scrape_list() click to toggle source
# File lib/new_game_scores/collection_scraper.rb, line 20
def scrape_list
 game_list = Nokogiri::HTML(open(self.url, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE,  'User-Agent' => 'safari'))

  game_list.css("ol.list_products li.game_product").each do |game|
    
    @@collection << {
      :title => game.css("div.product_title a").text.strip,
      :metascore => game.css("div.metascore_w").text,
      :userscore => game.css("li.product_avguserscore span.textscore").text,
      :release_date => game.css("li.release_date span.data").text, 
      :game_url => 'http://www.metacritic.com/' +game.css("div.product_title a").attribute("href").text
    }
  end
end