Steam Web APIを使ってみる
そういえばsteam web apiなんてものがあったなぁというのを思い出したのでこれを試しに使ってみる
まずAPIキーを登録する
以下のサイトから行える。
http://steamcommunity.com/dev/apikey
"ドメイン名"の入力欄にはkymt.meと入力してみた。これだけでハッシュ値みたいなAPIキーコードを取得完了した。
このAPIキーがあればSteamのWEB APIが全部使える
WEB APIの一覧についてはこのページに記載されているようだ https://developer.valvesoftware.com/wiki/Steam_Web_API
Steam IDに関連づく名前情報を取得する
さっそくなんかの情報をとってみる。SteamIdに紐付くユーザー名の取得でもやってみようかなということで、このユーザー情報API(のURL)を使ってみる。
http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=xxxxxxxxxxxxxxxxxxx&steamids=76561197960435530
keyには先ほど取得したAPIキーを入力して、steamidsには、調べたいsteamidを入れれば良い。(複数のIDの入力に対応してるからidsと複数形になってるんだろうなぁと推測) このサンプルの76561197960435530ってのはvalve開発者さんのSteamIDっぽい。
さて、上記URLを適切に書き換えたものにアクセスするとJSONで情報が手に入る
{ "response": { "players": [ { "steamid": "76561197960435530", "communityvisibilitystate": 3, "profilestate": 1, "personaname": "Robin", "lastlogoff": 1342433827, "profileurl": "http:\/\/steamcommunity.com\/id\/robinwalker\/", "avatar": "http:\/\/media.steampowered.com\/steamcommunity\/public\/images\/avatars\/f1\/f1dd60a188883caf82d0cbfccfe6aba0af1732d4.jpg", "avatarmedium": "http:\/\/media.steampowered.com\/steamcommunity\/public\/images\/avatars\/f1\/f1dd60a188883caf82d0cbfccfe6aba0af1732d4_medium.jpg", "avatarfull": "http:\/\/media.steampowered.com\/steamcommunity\/public\/images\/avatars\/f1\/f1dd60a188883caf82d0cbfccfe6aba0af1732d4_full.jpg", "personastate": 1, "realname": "Robin Walker", "primaryclanid": "103582791429521412", "timecreated": 1063407589, "loccountrycode": "US", "locstatecode": "WA", "loccityid": 3961 } ] } }
ちゃんと取れていますね。personanameってところがユーザー名。
この一連の処理をRubyで実装してみる
require 'open-uri' require 'json' def steam_api_user_profile(api_key, steam_id) JSON.parse(open("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=#{api_key}&steamids=#{steam_id}").read) end api_key = "xxxxxxxxxxxxxxxxx" steam_id = "76561197960435530" person_data = steam_api_user_profile(api_key, steam_id) p person_data["response"]["players"].first["personaname"]
実行結果
"Robin"