YouTube直播聊天API和pollingIntervalMillis

时间:2017-03-22 16:30:09

标签: c# api unity3d youtube livechat

我正在尝试获取YouTube直播聊天的所有评论。 我成功地使用WWW获取它们 我的客户在Unity请求。 YouTube API提供nextPageToken = {RANDOM_TOKEN} 获得下一页的结果,因为它只在第一页显示75条评论。

我的客户端浏览所有这些页面,并提供nextPageTokens并获取所有评论并将其存储在本地。 很遗憾,YouTube似乎只允许pollingIntervalMillis = 10000中定义的每10秒API请求一次 因此,当我想获得下一页评论时,我需要一遍又一遍地等待10秒。否则它会给我错误rateLimitExceeded

当我在浏览器(Safari)中浏览HTTP请求时,问题不会发生,我可以根据需要尽快发出任何请求(甚至所有其他页面)。

有什么方法可以让每个页面的所有评论都快于每10秒一次? 如果我在每个页面上收到500条评论和75条评论,我需要等待大约一分钟才能得到所有评论。看起来有点奇怪。必须有可能。

希望你们能在这里帮助我:)

更新1 在用户的帮助下将用户代理添加到我的请求中,现在我的请求如下所示:

Dictionary<string, string> headers = new Dictionary<string, string>();
headers.Add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Safari/602.1.50");
WWW www = new WWW(url_2, new byte[] {(byte) 0}, headers);
StartCoroutine(WaitForRequest(www));

请求有效,但现在我收到错误401 Unauthorized。我再次检查了API网站,错误401甚至没有列在liveChatMessages list中包含的可能错误中,因为我唯一需要的是我的liveChatId和我的API访问密钥。我有两个,但甚至不需要登录。 如果我的代码如下:

WWW www = new WWW(url_2);
StartCoroutine(WaitForRequest(www));

我得到了一个结果,但这是我原来的代码,所以我必须等待10秒钟直到我的下一个请求。有什么帮助吗?

更新2 我发现pollingIntervalMillis取决于实际存在的流以及发表的评论数量。 当我的信息流离线时,pollingIntervalMillis为10000。 当我在线开始我的视频流时,pollingIntervalMillis为6000。 当我用大量评论向我的聊天发送垃圾邮件时,我pollingIntervalMillis大约1000。 因此,我的初始问题不再是一个真正的问题,因为当流生效并且聊天处于活动状态时刷新率会大幅下降。

也许这篇文章也可以帮助其他人!

0 个答案:

没有答案