キモブロ

Please spy check please, Fucking retard

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"