0.0
No commit activity in last 3 years
No release in over 3 years
A Nokogiri based XBox Live gamercard and Live profile scraper
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.5
>= 0
~> 2.4
~> 2.8
~> 1.15.0

Runtime

~> 1.0
 Project Readme

XblGamercard

XBox Live gamercard and Live profile scraper. Scrapes Microsoft's sites, trading one kind of reliability (not relying on xboxleaders API) for another (having to scrape potentially changing output).

Installation

Add this line to your application's Gemfile:

gem 'xbl_gamercard'

And then execute:

$ bundle

Or install it yourself as:

$ gem install xbl_gamercard

Usage

There are two main classes, XblGamercard::Gamercard and XblGamercard::LiveProfile, representing two different views with slightly different data.

Gamercard is the only one that reliably returns recent games, while Live profile is the only one that returns "presence". Both otherwise return largely the same set of data, name, bio, gamerscore, so forth. You can either call .fetch(gamertag) to use Net::HTTP to load the page and then parse it, or simply call new with the response body (if you have specific HTTP request-ing needs).

Examples

gamercard = XblGamercard::Gamercard.fetch("major nelson")
# You can also have used:
# response = Net::HTTP.get_response(URI(XblGamercard::Gamercard.url_for(gamertag)))
# gamercard = XblGamerCard::Gamercard.new(response.body)
gamercard.gamertag # Returns "Major Nelson"
gamercard.icon_url # Returns "http://avatar.xboxlive.com/avatar/Major%20Nelson/avatarpic-l.png"
gamercard.gamerscore # Returns 66947
gamercard.motto
gamercard.name
gamercard.bio
# Gamercard specific! You can get a list of recently played games:
game = gamercard.played_games[0]
game.title
game.icon_url
game.earned_gamerscore
game.available_gamerscore
game.earned_archievements
game.available_achievements
game.percentage_complete

The Live profile page is pretty similar, except for the addition of a presence and avatar_image_url method.

profile = XblGamercard::LiveProfile.fetch("major nelson")
# You can also have used:
# response = Net::HTTP.get_response(URI(XblGamercard::LiveProfile.url_for(gamertag)))
# profile = XblGamerCard::LiveProfile.new(response.body)
profile.gamertag # Returns "Major Nelson"
profile.icon_url # Returns "http://avatar.xboxlive.com/avatar/Major%20Nelson/avatarpic-l.png"
profile.avatar_image_url # Returns "https://avatar-ssl.xboxlive.com/avatar/Major%20Nelson/avatar-body.png"
profile.gamerscore # Returns 66947
profile.presence # Returns something like "Last seen 2/28/2014 playing Xbox.com"

Contributing

  1. Fork it (http://github.com/hfwang/xbl_gamercard/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

See Also

There is a ton of prior art out there. This gem scrapes the public profile pages, while I found the others deficient in a variety of ways.

Xboxleaders (http://xboxleaders.github.io/) based gems, which is pretty slow/unreliable. 😢