And*_*ont 7 c# youtube api livechat unity-game-engine
我正在尝试获取 YouTube 实时聊天的所有评论。我WWW
通过 Unity 中的客户请求成功获得了它们。YouTube API 提供了nextPageToken = {RANDOM_TOKEN}
获取下一页结果的方法,因为它只显示第一页上的 75 条评论。
我的客户使用提供的 nextPageTokens 浏览所有这些页面,并获取所有评论并将它们存储在本地。不幸的是,YouTube 似乎只允许 API 中定义的每 10 秒请求一次,pollingIntervalMillis = 10000
所以当我想要获取下一页评论时,我需要一遍又一遍地等待 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));
Run Code Online (Sandbox Code Playgroud)
该请求有效,但现在我收到错误 401 未经授权。我再次检查了 API 网站,错误 401 甚至没有列在包含的可能错误中,liveChatMessages list因为我唯一需要的是我liveChatId和我的 API 访问密钥。我两者都有,但甚至不需要登录。如果我的代码如下所示:
WWW www = new WWW(url_2);
StartCoroutine(WaitForRequest(www));
Run Code Online (Sandbox Code Playgroud)
我得到了结果,但这是我的原始代码,所以我必须等待 10 秒才能发出下一个请求。有什么帮助吗?
更新 2
我发现这pollingIntervalMillis取决于实际直播的流媒体以及收到的评论量。当我的流媒体离线时,我的评论数量pollingIntervalMillis为 10000。当我开始在线直播时,我的评论数量pollingIntervalMillis为 6000。当我向聊天发送垃圾邮件时,我的评论数量为 10000。我的评论数量pollingIntervalMillis达到了 1000 左右。因此,我最初的问题不再是真正的问题,因为当直播且聊天处于活动状态时,刷新率会大幅下降。
也许这篇文章也可以帮助其他人!
| 归档时间: |
|
| 查看次数: |
1565 次 |
| 最近记录: |