startindex> = 100时为空响应

经过大量调试后,我终于发现,在使用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,所以根据这个资源,这似乎是预期的结果(尽管它告诉我某种错误信息,我没有得到?)。

但是,这里是踢球者:当我使用

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响应中的导航链接来检索所有评论。

假设你使用像这样的链接来获取第一个,但你明白了:

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

嵌入json中的“feed”(以及注释之前)将是一个名为“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

原始网址为:

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中的零注释以确定何时停止)。

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

希望这可以帮助。

链接地址: http://www.djcxy.com/p/19409.html

上一篇: Empty response when startindex >= 100

下一篇: where do I put my application logic?