6

情報を収集するためにパブリック Steam API を使用するアプリを開発しています。現在、私は呼び出しで実績を取得しGetPlayerAchievements (v0001)、合計再生時間は呼び出しを行ってGetOwnedGames (v0001)います。これはうまくいきます。

しかし今、私はゲームから最後にプレイされたデータが何であったかを知る必要があります.

Steam API ドキュメントを確認すると、この情報を取得するための API 呼び出しが見つかりません。では、これはユーザー プロファイル Web をスクレイピングしてのみ取得できますか?

4

2 に答える 2

8

確かに、このデータは Valve のサーバー内に存在する必要がありますが、何らかの理由で公開されていません。今のところ、このデータはユーザーの PC の Steam クライアントからのみ利用できるようです。掘り下げた後、最終再生のタイムスタンプが次のファイルから入手できることがわかりました。

\steam\userdata\{steam_id}\config\localconfig.vdf

.vdf ファイルは、テキスト エディタで開くことができるテキスト ファイルです。タイムスタンプの 1 つの例を次に示します (正当な原因 3)。

"225540"
{
    "LastPlayed"        "1466894369"
}

タイムスタンプはエポック形式で、次のように変換されます6/25/2016, 6:39:29 PM GMT-4:00 DST

ユーザーに自分のコンピューターからこのファイルをアップロードしてもらい、サーバーで解析して、最後に再生されたタイムスタンプを取得できます。理想的ではありませんが、これが始まりです。

プロジェクトにどのプログラミング言語を選択するかはわかりませんが、開始できる VDF パーサーをいくつか示します。
C#:
https://github.com/sanmadjack/VDF
NodeJS:
https://www.npmjs .com/package/vdf
Python:
https://gist.github.com/strycore/5735482

編集 2017 年 4 月 29 日:
ユーザーの Steam ゲーム ページからこの情報をスクレイピングできることを発見しました: http://steamcommunity.com/id/pcmantinker/games/?tab=all

ページのソース コードを調べると、ゲームをレンダリングするための JavaScript オブジェクトがあることに気付きました。このオブジェクト内で、各ゲームには利用可能な「last_played」フィールドがあります。1 つのエントリは次のようになります。

{
   "appid":346110,
   "name":"ARK: Survival Evolved",
   "logo":"http:\/\/cdn.edgecast.steamstatic.com\/steamcommunity\/public\/images\/apps\/346110\/58a660ddb7ed1864656ec65e4c18d6edd3bbf512.jpg",
   "friendlyURL":346110,
   "availStatLinks":{
      "achievements":true,
      "global_achievements":true,
      "stats":false,
      "leaderboards":false,
      "global_leaderboards":false
   },
   "hours":"0.5",
   "hours_forever":"84",
   "last_played":1492447993
}

この情報を解析するには、文字列の先頭と末尾を見つけてから、JSON を解析して操作可能なオブジェクトにする必要があります。このとき、文字列の先頭は で、文字列"var rgGames = ["の末尾は です"];"。これが理想的でないことは承知していますが、Steam クライアントをインストールしなくてもこの情報を取得できます。

于 2016-06-26T20:43:33.397 に答える
0

この情報は現在、Steam API では利用できません。所有しているゲームのリストをソートするために自分で探していました。

于 2016-03-19T12:41:48.817 に答える