【问题标题】:Accessing an item beyond start_index=1000 in a YouTube user upload feed在 YouTube 用户上传供稿中访问 start_index=1000 以外的项目
【发布时间】: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


    【解决方案1】:

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

    摆脱orderby=published,您将获得所需的数据。无论如何,上传 Feed 的默认顺序都是按时间倒序排列的。

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

    http://apiblog.youtube.com/2012/03/keeping-things-fresh.html

    好消息是这在 API 版本 3 中将不再是问题。

    【讨论】:

    • +1。感谢您清除此问题。我删除了我的答案,因为它完全不正确,只会让人们感到困惑
    • 太棒了,谢谢杰夫。我会相应地更改我的查询!
    猜你喜欢
    • 2016-04-25
    • 1970-01-01
    • 2016-04-16
    • 2020-04-10
    • 1970-01-01
    • 2015-09-20
    • 2010-12-03
    • 2011-10-28
    • 1970-01-01
    相关资源
    最近更新 更多