在YouTube用户上传源中访问start_index=1000以外的项目

在YouTube用户上传源中访问start_index=1000以外的项目,youtube,youtube-api,gdata,Youtube,Youtube Api,Gdata,我目前正试图从YouTube用户上传源中获取有关视频的数据。此提要包含某个用户上传的所有视频,可通过以下请求从API访问: http://gdata.youtube.com/feeds/api/users/USERNAME/uploads 其中USERNAME是拥有提要的YouTube用户的名称 但是,我在尝试访问长度超过1000个视频的提要时遇到了问题。由于对API的每个请求可以返回50个项目,因此我使用max_length和start_索引遍历提要,如下所示: http://gdata.y

我目前正试图从YouTube用户上传源中获取有关视频的数据。此提要包含某个用户上传的所有视频,可通过以下请求从API访问:

http://gdata.youtube.com/feeds/api/users/USERNAME/uploads
其中USERNAME是拥有提要的YouTube用户的名称

但是,我在尝试访问长度超过1000个视频的提要时遇到了问题。由于对API的每个请求可以返回50个项目,因此我使用max_length和start_索引遍历提要,如下所示:

http://gdata.youtube.com/feeds/api/users/USERNAME/uploads?start-index=1&max-results=50&orderby=published
http://gdata.youtube.com/feeds/api/users/USERNAME/uploads?start-index=51&max-results=50&orderby=published
以此类推,每次调用时将start_索引增加50。在以下情况之前,此功能一直运行良好:

http://gdata.youtube.com/feeds/api/users/USERNAME/uploads?start-index=1001&max-results=50&orderby=published
此时,我收到一个400错误,通知我“您不能请求超过项目1000的内容”。这让我感到困惑,因为我假设查询只返回了50个视频:1001-1051,按最近发布的顺序排列。翻阅了这本书,我发现:

结果计数和可访问结果的限制

对于任何给定的查询,您将无法检索超过1000个 即使结果不止这些。API将返回一个错误 如果您尝试检索超过1000个结果。因此,API将 如果将开始索引查询参数设置为值,则返回错误 1001或更大。如果 开始索引和最大结果参数大于1001

例如,如果将“开始索引”参数值设置为1000,则 必须将“最大结果”参数值设置为1,如果将 开始索引参数值为980,然后必须设置最大结果 参数值为21或更小


我不知道如何以一致的方式访问普通用户上一次上传的1001st视频及以后的视频,因为它们不能仅使用max results和start index进行索引。有人对如何避免这个问题有什么有用的建议吗?我希望我已经清楚地概述了困难所在

支持获取给定帐户的所有视频,但您需要确保上传提要的请求是针对后端数据库而不是搜索索引的。因为您在请求URL中包含
orderby=published
,所以您违反了搜索索引。搜索索引提要限制为1000个条目

去掉
orderby=published
,您将获得所需的数据。无论如何,上传提要的默认顺序是逆时间顺序

这是一个特别容易犯的错误,我们有一篇博文详细解释了这一点:


好消息是,在API的第3版中,这不再是一个问题。

+1。谢谢你把这件事弄清楚。我删除了我的答案,因为它完全不正确,只会让人困惑。谢谢杰夫。我将相应地更改我的查询!