从播放列表中对 Youtube API 结果进行排序
Posted
技术标签:
【中文标题】从播放列表中对 Youtube API 结果进行排序【英文标题】:Sorting Youtube API result from playlist 【发布时间】:2014-05-18 13:39:41 【问题描述】:我现在一直在努力使用 Youtube 的 API v3,但我无法让它按照我想要的方式工作。我的目标是将所选播放列表中的最新视频加载到我的网站中。问题是我只回复了最旧的视频。
要加载播放列表,我请求以下 API URI: https://www.googleapis.com/youtube/v3/playlistItems
这是一个请求示例(只需单击执行): http://developers.google.com/apis-explorer/#p/youtube/v3/youtube.playlistItems.list?part=id%252Csnippet%252CcontentDetails%252Cstatus&playlistId=PLOU2XLYxmsIKGo-dgliIJQNZ6L3G8UV4b&_h=1&
如何对结果进行排序并优先获取最新视频?我在文档中找不到任何东西,而且我一直在谷歌搜索,但没有任何运气。如果您无法对结果进行排序,则此 API 没有任何意义。唯一的方法是通过令牌继续加载下一页来加载所有视频,但这太疯狂了。
有什么想法吗?听起来像一个基本问题,但我找不到解决方案...
【问题讨论】:
【参考方案1】:当前 API 没有列出播放列表项的排序选项,但如果您以编程方式插入项,则可以在插入时指定 position
值,以使新视频显示在列表顶部。
如果是其他人添加视频,则您必须获取所有页面。由于播放列表限制为 200 个项目,因此最多需要 4 个请求。不理想,但它是现在唯一的选择。
【讨论】:
好吧,这就是我害怕的。如果您要问我,那是非常无用的 API。 刚刚注意到结果是根据播放列表设置排序的? (当然,你必须拥有它才能改变)。 是的,您知道了,我们需要更改播放列表中的设置。在播放列表高级设置中有一个选项“排序”。 播放列表高级设置现已禁用 @Carherpi 刚刚尝试过并且已启用。您只能更改自己的播放列表 ofc 的设置【参考方案2】:这似乎是 YouTube API 当前的一个限制,而且它的创建者似乎相当短视。
这并不能解决您的确切问题,但对于其他有类似问题的人,我发现使用“搜索”查询您可以在一定程度上订购。
这有助于我通过搜索播放列表而不是请求播放列表列表来订购播放列表(不是 playlistItems)查询。因此我的查询:
https://www.googleapis.com/youtube/v3/playlists?part=snippet&maxResults=20&channelId=channelID&key=API_KEY
成为:
https://www.googleapis.com/youtube/v3/search?part=snippet&type=video&order=date&safeSearch=none&maxResults=20&channelId=channelID&key=API_KEY
您还可以搜索视频和查询词以及其他几个参数,所以也许您可以通过这种方式获得您想要的结果。
【讨论】:
感谢@paul-thomas-gc。我将类型更改为video
,这给了我排序结果
我观察到搜索不返回所有视频的罕见情况。我的猜测是,即使您使用 safeSearch=none
,YouTube 也会从搜索中完全删除某些不当视频。【参考方案3】:
这是目前唯一可用的选项。您可以在 youtube 帐户的播放列表设置中对视频列表进行排序,而不是尝试对 Http 请求 URL 中的视频列表进行排序。
在播放列表设置中,您可以手动拖动和更改列表,也可以选择更改顺序。 Youtube Data API 会在播放列表显示数据时输出数据。
总结:更改 youtube 帐户中的播放列表顺序,而不是尝试使用 http 请求过滤数据。
仅供参考:播放列表设置只能由上传者的帐户更改 希望这会有所帮助。
【讨论】:
【参考方案4】:我有同样的问题 .. 而不是使用 API 来获取最新的第一(似乎没有办法做到这一点),你为什么不先对播放列表中的视频进行排序,然后使用 API,它将按照它们在播放列表中出现的顺序返回它们。
类似这样的: https://community.tubepress.com/topic/5624-how-to-customize-sort-order-of-youtube-playlists/
【讨论】:
以上是关于从播放列表中对 Youtube API 结果进行排序的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Youtube 播放列表 API 中过滤掉不可嵌入的视频
Youtube api V3 nextPageToken 重复
youtube API 从频道获取所有播放列表 ID:python