Jon*_*ans 10 youtube youtube-api gdata
我目前正在尝试从YouTube用户上传Feed中提取有关视频的数据.此Feed包含特定用户上传的所有视频,并可通过以下请求从API访问:
http://gdata.youtube.com/feeds/api/users/USERNAME/uploads
Run Code Online (Sandbox Code Playgroud)
USERNAME是拥有Feed的YouTube用户的名称.
但是,我在尝试访问超过1000个视频的Feed时遇到了问题.由于每个API请求都可以返回50个项目,因此我使用max_length和start_index遍历feed,如下所示:
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
Run Code Online (Sandbox Code Playgroud)
依此类推,每次调用时start_index增加50.这完美地工作直到:
http://gdata.youtube.com/feeds/api/users/USERNAME/uploads?start-index=1001&max-results=50&orderby=published
Run Code Online (Sandbox Code Playgroud)
此时我收到400错误通知我'您不能请求超出项目1000'.这让我很困惑,因为我认为查询只会返回50个视频:1001-1051,按照最近发布的顺序排列.浏览完文档后,我发现了这一点:
限制结果计数和可访问结果
...
对于任何给定的查询,即使有多个结果,您也无法检索超过1,000个结果.如果您尝试检索超过1,000个结果,API将返回错误.因此,如果将start-index查询参数设置为值1001或更大,API将返回错误.如果start-index和max-results参数的总和大于1,001,它也将返回错误.
例如,如果将start-index参数值设置为1000,则必须将max-results参数值设置为1,如果将start-index参数值设置为980,则必须设置max-results参数值为21或更低.
我不知道如何以一致的方式访问通用用户上次上传的第1001个视频及其他视频,因为它们无法仅使用max-results和start-index进行索引.有没有人对如何避免这个问题有任何有用的建议?我希望我清楚地概述了这个难点!
Jef*_*ick 12
获取给定帐户的所有视频是受支持的,但您需要确保您对上传源的请求是针对后端数据库而不是搜索索引.因为您orderby=published在请求URL中包含,所以您将违反搜索索引.搜索索引Feed限制为1000个条目.
摆脱它orderby=published,你将获得你正在寻找的数据.无论如何,上传源的默认顺序是反向时间顺序.
这是一个特别容易犯的错误,我们有一个博客文章更详细地解释它:
http://apiblog.youtube.com/2012/03/keeping-things-fresh.html
好消息是,这在API的第3版中不再是问题.
| 归档时间: |
|
| 查看次数: |
2391 次 |
| 最近记录: |