gpt4 book ai didi

youtube-api - startindex >= 100 时的空响应

转载 作者:行者123 更新时间:2023-12-04 02:42:09 28 4
gpt4 key购买 nike

经过大量的调试,我终于发现,在使用 v2 YouTube-API 获取评论时,看似 Youtube 只发布前 100 条评论。我终于尝试使用:

curl -Lk -X GET "http://gdata.youtube.com/feeds/api/videos/MShbP3OpASA/comments?alt=json&start-index=100&max-results=50"

我得到的只是一个没有 entry 的回复范围。也就是说,我没有收到错误响应或类似的东西 - 我得到了非常好的响应,但没有 entry范围。

再深入一点,在我的回复中 openSearch$totalResults 的值是 100,所以根据 this resource这似乎是预期的结果(尽管它讲述了我没有得到的某种错误消息?)。

但问题来了:当我使用
curl -Lk -X GET "http://gdata.youtube.com/feeds/api/videos/MShbP3OpASA/comments?alt=json&start-index=1&max-results=50&orderby=published"
openSearch$totalResults等于 3141,评论的实际计数。

现在我的问题是:由于大约一周前正式弃用了 v2 API,Google 是否可能只是对评论设置了限制?所以只能访问前 100 条评论?由于 v3 API 不允许检索评论,这对我来说将是一件非常令人沮丧的事情。

有没有人有任何想法?

最佳答案

我已经弄清楚如何使用嵌入在 json 响应中的导航链接来检索所有评论。

假设您使用如下链接检索第一个(此处为 python,但您明白了):

r' https://gdata.youtube.com/feeds/api/videos/ ' + aVideoID + r'/comments?alt=json&start-index=1&max-results=50&prettyprint=true&orderby=published'

嵌入在“feed”下(以及评论之前)的 json 中将是一个名为“link”的四元素数组。第四个元素将被称为“rel”:“next”,在“href”下将有一个链接,您可以使用它来获取接下来的 50 条评论。该链接将类似于:

https://gdata.youtube.com/feeds/api/videos/fH0cEP0mvlU/comments?alt=json&orderby=published&alt=json&start-token=EgkI2NqyoZDRvgIosK%2FPosPRvgIw653cmsXRvgI4AUAC&max-results=50&orderby=published

对于原始 URL:

https://gdata.youtube.com/feeds/api/videos/fH0cEP0mvlU/comments?alt=json&start-index=1&max-results=50&prettyprint=true&orderby=published

如果您点击下一个链接,它将返回与原始链接类似的 json,还有另外 50 条评论。一遍又一遍地继续这个过程,直到你得到所有的评论(在我的代码中,我检查 json 中是否缺少此项或 json 中的零评论以确定何时停止)。

您需要原始 URL 中的“&orderby=published”,否则“下一个”链接最终会变得太大并导致错误(API 使用 token 中的某些内容来跟踪您在默认 orderby 中看到的评论)很大的空间)。关于已发布的 orderby 的某些内容使“start-token”保持较小,而在使用默认 orderby 进行大约 500 条评论后,您将开始收到 414 Request URI too long 错误。

希望这可以帮助。

关于youtube-api - startindex >= 100 时的空响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22288123/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com