我有一个像IO[Either[RateLimitReached.type, Unit]]
这样的流网址。流是在线的,我需要抓住流将完成的时刻。
我研究了twitch api文档,但没有发现任何事件。第一个想法是每隔几分钟发送一次请求,当流上线时 - 处理这个。这有点拖延,但它并不重要。
但是我必须追踪很多溪流,我害怕这种抽搐可以阻止我。
还有其他方法可以抓住流程吗?
答案 0 :(得分:1)
官方Twitch开发者网站上有相当多的Q& A想要这个功能,但是我能找到的所有这些都得到了相同的回答"它目前无法实现。&#34 ;
请注意,您可以使用逗号分隔列表和limit
查询参数同时检查多个频道的状态(每个请求最多100个):Get-Live-Streams
https://api.twitch.tv/kraken/streams/?get-live-streams?channel=Channel1,Channel2&limit=100
返回包含在线流数组的对象(streams
属性)。
Twitch关于速率限制的官方立场建议不超过"about 1 request per second"。这就是说他们不会因为连续发出几个请求而限制你,而是累积金额。
请注意,对于IRC相关的操作,每30秒通常有20个命令/消息,或者如果是mod,则为每30个100个。{0}。违反该规定将触发30分钟的锁定。
API结果也是separate rate limit,可以减少最终的负担。鉴于此,在轮询任何更频繁的事情方面没有太大的价值(即,您应该再次等待至少1分钟才能再次提出完全相同的请求,因为您只是得到相同的响应)。
鉴于能够一次检查100个流,需要每个请求至少等待1分钟才能获得新结果,并且每秒约1个请求的速率限制,理论上可以检查大约6000个状态连续流(假设你没有做出其他请求;每秒100个流*每分钟60个)。
目前cached for 1-3 minutes没有任何监控流上线的内容,但您可能想要记住其他轮询类型的操作(它目前处理的事情如新的订阅或捐赠)。
最后值得注意的是,当您使用PubSub API时,可以收听在线或离线频道。
答案 1 :(得分:1)