我正在开发一个使用公共Steam API收集一些信息的应用。
目前,我通过调用GetPlayerAchievements (v0001)
和调用GetOwnedGames (v0001)
的总小时数来检索成就。这很好。
但现在我还需要知道游戏中最后播放的数据是什么,例如,如果您在个人资料页面上输入,您可以在html页面中看到此信息(http://steamcommunity.com/profiles/your_steam_id_here/)
查看Steam API文档我找不到任何api调用来检索此信息。那么,这只能抓住用户档案网吗?
答案 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上不可用。我自己一直在寻找自己的游戏列表。