我正在开发一个应用程序,使用公共蒸汽API收集一些信息。目前,我通过调用GetPlayerAchievements (v0001)和调用GetOwnedGames (v0001)来检索成绩。这可以很好地工作。
但是现在我还需要知道上次玩游戏的数据是什么,例如,如果你进入个人资料页面,你可以在html页面(http://steamcommunity.com/profiles/your_steam_id_here/)中看到这些信息。
查看Steam API文档时,我找不到任何api调用来检索此信息。那么,这只能通过抓取用户配置文件网络来获得吗?
发布于 2016-06-27 04:43:33
当然,这些数据必须存在于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客户端的情况下获得此信息。
发布于 2016-03-19 20:41:49
此信息目前在Steam API上不可用。我自己在找它来整理所有游戏的列表。
https://stackoverflow.com/questions/27862725
复制相似问题