首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将API集成到不和谐机器人-更有效的方式?

将API集成到不和谐机器人-更有效的方式?
EN

Stack Overflow用户
提问于 2017-04-28 17:59:44
回答 1查看 1.7K关注 0票数 0

我目前正在用C#写一个不和谐的机器人。我已经完成了大部分的机器人,但在这下一个更新,我想增加的能力,以检查是否流线已运行。目前,我正在轮询Twitch,并提取它拥有的JSON文件,并检查JSON对象是否为Null。但这需要3-5分钟后的彩带才能运行,直到它最终看到流不是空,即使我每5秒轮询一次JSON。还有更有效的办法吗?我的代码如下:

代码语言:javascript
复制
       private const string Url = "https://api.twitch.tv/kraken/streams/streamer";
        var request = (HttpWebRequest)WebRequest.Create(Url);

        request.Method = "Get";
        request.Timeout = 12000;
        request.ContentType = "application/vnd.twitchtv.v5+json";
        request.Headers.Add("Client-ID", "ID");

        using (var s = request.GetResponse().GetResponseStream())
        {
            using (var sr = new System.IO.StreamReader(s))
            {

                var jsonObject = JObject.Parse(sr.ReadToEnd());
                var jsonStream = jsonObject["stream"];

                // twitch channel is online if stream is not null.
                LastTwitchStatus = jsonStream.Type != JTokenType.Null;
            }
        }
EN

回答 1

Stack Overflow用户

发布于 2017-04-28 19:30:01

看起来这是Twitch的预期行为。他们肯定更专注于推动他们的马力流,而不是直接通过API提供数据。

虽然可能存在这样的限制,但是如果时间安排很关键,并且不想等待3到5分钟已经发生的事情,您可以尝试取消页面。一种方法是每5s左右轮询页面,然后查询HTML文档以获得区分脱机和在线通道的特性。

在JavaScript中废弃的想法(只需在.NET中复制):

例如,我尝试用以下方法查询(https://www.twitch.tv/username)中的JavaScript用户页面:

代码语言:javascript
复制
$(".recent-past-broadcast").length > 0

对于没有广播的用户,它会产生true,而对于广播用户,它会产生false。不过,问题可能在于没有最近广播历史的用户。

您也可以尝试查看视频页面(https://www.twitch.tv/username/videos/all)中的活动指示符,例如:

代码语言:javascript
复制
$(".cn-livestatus__circle").length > 0

它将产生流用户的true和不流的false (即使他/她在线)。

当然,这是最不有效的方法,需要大量下载,而不是仅仅轮询,但是.尽管如此,它似乎比每5s询问API更及时,并且仍然使实际状态延迟3-5分钟。

只需在.NET中复制像上面这样的查询就可以了。

您也可以混合两种方法,如果您看到有人开始流,只需禁用页报废和交换到仅API调用,以检查您是否还在最新。

用于报废的有用工具:

要解析HTML文档,可以使用像AngleSharp这样的解析器在.NET:https://github.com/AngleSharp/AngleSharp中完成这一任务。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43686290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档