class SteamStats::User
Attributes
avatar[R]
country[R]
games[R]
level[R]
name[R]
real_name[R]
Public Class Methods
new(user_id)
click to toggle source
# File lib/steam_stats/user.rb, line 5 def initialize(user_id) @id = user_id @user_url = get_user_url @games_url = get_games_url @user_page = Nokogiri::HTML(open(@user_url)) @games_page = Nokogiri::HTML(open(@games_url)) @games = [] fetch_info fetch_games end
Public Instance Methods
is_online?()
click to toggle source
# File lib/steam_stats/user.rb, line 20 def is_online? @online end
Private Instance Methods
fetch_games()
click to toggle source
# File lib/steam_stats/user.rb, line 39 def fetch_games @games_js = @games_page.css('script[language=javascript]')[0].text @games_json = /rgGames = (\[.+\]);/.match(@games_js)[1] @games_raw = JSON.parse(@games_json) JSON.parse(@games_json).each do |element| played_hours = element['hours_forever'].to_f name = element['name'] game = { name: name, played_hours: played_hours } @games.push(game) end end
fetch_info()
click to toggle source
# File lib/steam_stats/user.rb, line 25 def fetch_info @name = @user_page.css('.actual_persona_name')[0].text @real_name = @user_page.css('.header_real_name.ellipsis bdi')[0].text @avatar = @user_page.css('.playerAvatar img')[0]['src'] @country = @user_page.css('.profile_flag')[0]['src'][-6..-5].upcase rescue nil @level = @user_page.css('.persona_name .friendPlayerLevelNum').text.to_i if @user_page.css('.profile_in_game_header').nil? @online = true else @online = false end end
get_games_url()
click to toggle source
Warning! Call only after get_user_url
# File lib/steam_stats/user.rb, line 63 def get_games_url "#{@user_url}/games/?tab=all" end
get_user_url()
click to toggle source
# File lib/steam_stats/user.rb, line 54 def get_user_url if is_number?(@id) "http://steamcommunity.com/profiles/#{@id}" else "http://steamcommunity.com/id/#{@id}" end end
is_number?(string)
click to toggle source
# File lib/steam_stats/user.rb, line 67 def is_number?(string) true if Float(string) rescue false end