【发布时间】:2012-09-24 08:55:06
【问题描述】:
我目前正在尝试从 YouTube 用户上传供稿中提取有关视频的数据。此提要包含某个用户上传的所有视频,并通过以下请求从 API 访问:
http://gdata.youtube.com/feeds/api/users/USERNAME/uploads
其中 USERNAME 是拥有该 Feed 的 YouTube 用户的姓名。
但是,我在尝试访问超过 1000 个视频的供稿时遇到了问题。由于对 API 的每个请求都可以返回 50 个项目,因此我使用 max_length 和 start_index 遍历提要,如下所示:
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_index 增加 50。直到:
http://gdata.youtube.com/feeds/api/users/USERNAME/uploads?start-index=1001&max-results=50&orderby=published
此时我收到 400 错误,通知我“您不能请求超过第 1000 项。”这让我很困惑,因为我假设查询只会返回 50 个视频:1001-1051,按最近发布的顺序排列。浏览了documentation,我发现了这个:
结果计数和可访问结果的限制
...
对于任何给定的查询,您将无法检索超过 1,000 个 即使有更多的结果。 API 将返回错误 如果您尝试检索超过 1,000 个结果。因此,API 将 如果将 start-index 查询参数设置为一个值,则返回错误 1001 或更高。如果总和也会返回错误 start-index 和 max-results 参数大于 1001。
例如,如果您将 start-index 参数值设置为 1000,则 您必须将 max-results 参数值设置为 1,如果您将 start-index 参数值为 980,则必须设置 max-results 参数值设为 21 或更小。
我不知道如何以一致的方式访问一般用户的第 1001 个最后上传的视频及以后的视频,因为仅使用 max-results 和 start-index 无法对它们进行索引。有没有人对如何避免这个问题有任何有用的建议?我希望我已经清楚地概述了困难!
【问题讨论】:
标签: youtube youtube-api gdata