我正在尝试获取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。
因此,我的初始问题不再是一个真正的问题,因为当流生效并且聊天处于活动状态时刷新率会大幅下降。
也许这篇文章也可以帮助其他人!