Python 使用Steam WebAPI获取玩游戏的总时间
我正在尝试访问使用Steam API播放的TF2时间量。我目前正在使用:-Python 使用Steam WebAPI获取玩游戏的总时间,python,steam-web-api,Python,Steam Web Api,我正在尝试访问使用Steam API播放的TF2时间量。我目前正在使用:- http://api.steampowered.com/ISteamUserStats/GetUserStatsForGame/v0002/?appid=440&key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&steamid=xxxxxxxxxxxxxxxxx&format=xml 然后过滤XML并提取与每个类相关的播放时间(例如pyro(pyro.acum.iPl
http://api.steampowered.com/ISteamUserStats/GetUserStatsForGame/v0002/?appid=440&key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&steamid=xxxxxxxxxxxxxxxxx&format=xml
然后过滤XML并提取与每个类相关的播放时间(例如pyro(pyro.acum.iPlayTime)等)。这工作正常,但我认为缺少MVM类使我的最终值不正确(我的Python代码返回977,在线站点说超过1600小时)。添加MVM类(可能还有其他类)可能会提供正确的结果,但这会使代码变得非常冗长
所以我想知道Steam Web API中是否有一个调用,它只会给我播放的总时间,而不必进行所有的提取和添加
我已经浏览了Steam Web API开发者页面,但找不到任何关于我所追求的内容的参考
新增代码:
if __name__ == '__main__':
import urllib2
import xml.etree.ElementTree as ET
import datetime
timeKISA = 0
playerStatsKISA = urllib2.urlopen('http://api.steampowered.com/ISteamUserStats/GetUserStatsForGame/v0002/?appid=440&key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&steamid=xxxxxxxxxxxxxxxxx&format=xml')
statsKISA = playerStatsKISA.read()
theStatsKISA = ET.fromstring(statsKISA)
for stat in theStatsKISA.findall("./stats/stat"):
if stat.find('name').text.startswith('Scout.accum.iPlayTime') or \
stat.find('name').text.startswith('Soldier.accum.iPlayTime') or \
stat.find('name').text.startswith('Engineer.accum.iPlayTime') or \
stat.find('name').text.startswith('Medic.accum.iPlayTime') or \
stat.find('name').text.startswith('Spy.accum.iPlayTime') or \
stat.find('name').text.startswith('Sniper.accum.iPlayTime') or \
stat.find('name').text.startswith('Demoman.accum.iPlayTime') or \
stat.find('name').text.startswith('Heavy.accum.iPlayTime') or \
stat.find('name').text.startswith('Pyro.accum.iPlayTime'):
timeKISA = timeKISA + int(stat.find('value').text)
finalTimeKISA = timeKISA / 60 / 60
KISATime = ('KISA_Time=' + str(finalTimeKISA) + ' hours')
print KISATime
多谢各位
马库斯将我的评论纳入答案 我的理解是,
*.acum.iPlayTime
字段对于您作为该类的位置时间是累积的,无论游戏模式或地图如何。根据我自己的统计数据(以及我朋友名单上的一些其他数据),这与Steam社区报告的游戏时间完全相符。此外,它还报告您的播放时间与TF2成就页面上的这些字段相匹配
几点注意:
- 球员个人资料的摘要页面似乎与成就页面显示的实际数据不匹配。我不确定这是Steam社区问题还是其他字段的摘要。但是,“成就”页面使用与
API调用相同的数据,该页面按类、最长寿命等详细列出了播放时间GetUserStatsForGame
- 您的代码中有一个非常小的格式化问题。最后一个
缩进一到多次,因此多次打印print KISATime
行。如果将其从KISA\u Time=
循环中拉出,则只能获得一次打印行for
- 如果您将
更改为十进制finalTimeKISA=timeKISA/60/60
,您将得到十进制答案。否则,您将只收到一个整数答案60.0