我获取库存物品没有问题,但我无法有效计算物品价格。
Valve 没有价格 API。
我尝试过的(使用“steamcommunity.com”)(例如 JavaScript):
itemHashNameArray.forEach((hashname) => {
let url = `https://steamcommunity.com/market/priceoverview/&appid=730&market_hash_name=${hashname}`;
let itemDetails = steamApi(url);
//"steamApi" function just sends get request to site and returns response as json.
let itemPrice = parseFloat(itemDetails.lowest_price.split(" ")[0].replace(",", "."));
})
“steamcommunity.com/market”允许您根据请求获取一件商品的价格。
它非常慢/效率低。这么多请求后,Steam 也会阻止你。
我发现的第三方 API 也允许每个请求一个项目。 他们甚至不支持除美元之外的其他货币。 我还需要计算其他货币。
有更快更好的方法/API吗?
只是为了澄清发生了什么:
大多数网页和 API 都对请求有限制,这有助于防止恶意 DoS 攻击或过多的资源消耗(通常成本也很高)。我在尝试提取 Wikipedia/DBPedia 信息时遇到了这个麻烦。
虽然这很烦人,但公司或第三方通常会认识到需要对其数据进行批量交易,并开放 API(通常是收费的):https://partner.steamgames.com/文档/入门
一些第三方包括 SteamApis 和 Steamlytics。
Reddit 上也有一个专门讨论此问题的子版块,这里有一篇有关 API 调用以获取用户所有库存物品的相关帖子:https://www.reddit.com/r/SteamBot/comments/jey4sg/help_i_am_trying_to_make_a_script_that_counts_the/
潜在的 另一种选择是推出您自己的 API 服务,它可以以某种方式以不达到限制的速度提取库存数据。不确定这样做的合法性或第三方必须跨越什么样的障碍,除非您开始对其使用收费,否则这可能是最昂贵的。我认为加载完整的 html,然后编写一个解析器,用直接的 Javascript 或 JQuery 剖析其中一些信息,可以减轻一些看起来像垃圾邮件的调用,但这可能也有一个限制,我不确定这是否会包括所有轻松获取相关信息。