如何获得"最后一次播放"使用Steam API的Steam游戏

时间:2015-01-09 14:26:19

标签: steam-web-api

我正在开发一个使用公共Steam API收集一些信息的应用。 目前,我通过调用GetPlayerAchievements (v0001)和调用GetOwnedGames (v0001)的总小时数来检索成就。这很好。

但现在我还需要知道游戏中最后播放的数据是什么,例如,如果您在个人资料页面上输入,您可以在html页面中看到此信息(http://steamcommunity.com/profiles/your_steam_id_here/

查看Steam API文档我找不到任何api调用来检索此信息。那么,这只能抓住用户档案网吗?

2 个答案:

答案 0 :(得分:4)

当然,这些数据必须存在于Valve的服务器中,但它们不会因任何原因而暴露它。目前,该数据似乎只能从用户PC上的Steam客户端获得。经过一番挖掘,我能够发现以下文件中提供了最后显示的时间戳:

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

注意,.vdf文件是一个可以在文本编辑器中打开的文本文件。 以下是其中一个时间戳(正当理由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”字段。一个条目看起来像这样:

{
   "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客户端。

答案 1 :(得分:0)

此信息目前在Steam API上不可用。我自己一直在寻找自己的游戏列表。