【问题标题】:Twitch Api: How can I know that stream was finished?Twitch Api:我怎么知道直播已经结束?
【发布时间】:2018-03-20 16:42:44
【问题描述】:

我有一个类似https://www.twitch.tv/streams/26114851120/channel/31809543 的流网址。流在线,我需要捕捉流完成的时刻。

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

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

还有其他方法可以捕捉流的结束吗?

【问题讨论】:

    标签: api twitch


    【解决方案1】:

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

    官方 Twitch 开发者网站上有相当多的问答需要此功能,但我能找到的所有问答都以相同的“目前不可能”回答。

    请记住,您可以使用逗号分隔列表和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 相关的操作有一个 separate rate limit,通常每 30 秒 20 条命令/消息,如果是 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 时,您可以收听在线或离线频道。

    【讨论】:

      【解决方案2】:

      回复可能有点晚,但现在您可以查看Twitch WebHooks

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

      这似乎比自己查询 twitch 更准确且节省带宽。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-17
        相关资源
        最近更新 更多