Twitch Api:我怎么知道直播结束了?

Twitch Api: How can I know that stream was finished?

我有一个像 https://www.twitch.tv/streams/26114851120/channel/31809543 这样的流 url。流在线,我需要赶上流结束的时刻。

我研究了 twitch api 文档,但没有找到任何事件。第一个想法是每隔几分钟发送一次请求,并在流上线时处理这个问题。有点延迟,但不是关键。

但是我必须跟踪很多流,我害怕 twitch 会为此阻止我。

是否有任何其他方法来捕捉流的结束?

据我所知,没有办法直接监听在线或离线的流,但尽管如此,您仍然可以监控大量流。

官方 Twitch 开发者网站上有相当多的问答需要此功能,但我能找到的所有问答都是相同的 "it's not currently possible."

请记住,您可以使用逗号分隔列表和 limit 查询参数同时检查多个通道的状态(每个请求最多 100 个): Get-Live-Streams

https://api.twitch.tv/kraken/streams/?get-live-streams?channel=Channel1,Channel2&limit=100

这将 return 一个包含在线流数组的对象(streams 属性)。


速率限制

Twitch 关于速率限制的官方立场是建议不超过 "about 1 request per second"。也就是说,他们不会因为您连续发出多个请求而限制您,而是限制您的累计数量。

请注意,与 IRC 相关的操作有一个 separate rate limit,正常情况下每 30 秒 20 commands/messages,如果 mod,则每 30 秒 100。违反该规定将触发 30 分钟的锁定。


API-端缓存

API 结果也是 cached for 1-3 minutes,这减少了它们的负载。鉴于此,比这更频繁地轮询任何事情都没有太大价值(即,您应该等待至少 1 分钟,然后再次发出完全相同的请求,因为您只会得到相同的响应)。


您仍然可以监控约 6000 个流

考虑到一次检查 100 个流的能力,每个请求至少需要等待 1 分钟才能获得新结果,并且大约每秒 1 个请求的速率限制,理论上您可以检查的状态连续约 6000 个流(假设您没有发出其他请求;每秒 100 个流 * 每分钟 60 个)。


用于监控其他事物的 PubSub

目前 PubSub API 没有任何监控流上线的功能,但您可能需要记住它以进行其他轮询类型的操作(它目前处理新订阅或捐赠等事情) .


使用嵌入式播放器

最后一件事值得注意的是,当您使用 Twitch Embedded Player.

时,您可以 收听正在上线或下线的频道

回复可能有点晚,不过现在你可以看看Twitch WebHooks

它们允许您订阅特定的流,以便在流上升或下降时让 Twitch 通知您的回调URL。

这似乎比自己查询 twitch 更准确 bandwidth-saving。