【问题标题】:Steam Web API GetOwnedGames multiple SteamIDsSteam Web API GetOwnedGames 多个 SteamID
【发布时间】:2019-04-03 22:08:53
【问题描述】:

我们正在尝试获取大量用户拥有的游戏,但我们的问题是,API 调用限制(每天 100.000 次)开始生效后,我们就无法获得结果了。

我们在调用中使用'IPlayerService/GetOwnedGames/v0001/?key=APIKEY&steamid=STEAMID',它适用于第一个条目。

还有其他几个查询,例如 GetPlayerSummaries 查询,它们需要多个 Steam ID,但根据文档,这个只需要一个。

还有其他方法可以合并/合并我们的查询吗?我们正在使用 Python 和 urllib.request 库来创建请求。

【问题讨论】:

    标签: python urllib steam-web-api


    【解决方案1】:

    根据请求的负载,您有以下可能性:

    • 如果每个请求只带来最新的更新,您可以在收到已达到每日限制的响应时序列化 Steam ID
    • 如果您能够通过请求有效负载控制接收到的数据,则可以采用多线程/多处理方法,使用来自几个共享资源的请求查询和 Steam ID

    【讨论】:

    • 序列化?你的意思是像存储它无法制造的那些?我们已经这样做了,但问题是我们要处理很多 Steam ID,我们必须在获得所有内容之前执行此过程数周。
    • 第二个建议也无济于事,因为它是 API 限制,而不是真正的计算限制...如果我们从 20 个线程进行调用,那么它仍然会进行 100.000 次调用,并且那么就不要再得到答案了。
    • @creyD,关于#2,不完全是,因为我想说的是每个线程/进程应该使用不同的 steamID
    • 你的意思是API密钥?唯一的问题是,这仅在您拥有大约 100 个 API 密钥的池时才有效,而这对我们来说是不可能的,因为您需要为每个密钥创建一个 Steam 帐户。
    • @creyD,是的,我的错,我的意思是 API 密钥。好吧,如果您无法获得更多 API 密钥,我不确定是否有可能。 Valve 的 T&C 对每天的通话次数非常严格。他们确实提到,如果您遵守当前的 T&C ..无论这意味着什么,您可以在 Valve 的许可下增加限制。
    【解决方案2】:

    正如@andreihondrari 在他的回答下的评论中间接指出的那样,人们可以请求获取一个 API 密钥,该密钥可以获取超过每天 100.000 次调用。这在“Steam Web API 和 Steam 数据的许可”of the documentation 部分中有说明:

    您每天只能调用十万 (100,000) 次 Steam Web API。如果您遵守这些 API 使用条款,Valve 可能会批准更高的每日调用限制。

    这可能很复杂,并且有可能您不会获得批准,但这几乎是您唯一可以采用的稳定方法。


    此外,理论上您可以使用多个 Steam Web API 密钥,但是:
    • 每个 API 密钥仍然具有每天 100.000 次调用的限制,因此您需要实施故障保护和在使用的密钥之间进行转换,并且可能需要创建大量帐户。
    • 由于每个用户都有自己特定的好友列表和阻止列表,因此 API 密钥可以独占“查看” Steam 社区的一部分(否则好友数据不公开)。因此,可能是您使用的一个 API 密钥无法“看到”某个用户,而您可以使用另一个 API 密钥正确“看到”它。
    • 您需要为每个创建的帐户提供一个唯一的电子邮件地址。

    注意:根据this post on Arqade,拥有多个帐户实际上符合 Valves ToS。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-20
      • 2015-09-01
      • 2021-02-23
      • 1970-01-01
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多