2014-04-06 21 views
6

我一直在努力使用Youtube的API v3,并且无法按照自己想要的方式工作。我的目标是将所选播放列表中的最新视频加载到我的网站中。问题是我只有我的回复中最老的视频。从播放列表排序Youtube API结果

要加载播放列表我的请求下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&

排序结果,并如何获得最新视频第一?我无法在文档中找到任何内容,并且我一直在没有任何运气的情况下使用Google搜索。如果无法对结果进行排序,则此API没有意义。唯一的方法是通过继续按标记加载下一页来加载所有视频,但这只是疯狂的。

有什么想法?听起来像是一个基本的问题,但我找不到解决方案...

回答

10

当前的API没有用于列出播放列表项目的排序选项,但是如果以编程方式插入项目,则可以指定position值插入时会使新视频出现在列表顶部。

如果是别人正在添加视频,那么您必须获取所有网页。由于播放列表限制为200项,因此最多需要4个请求。不理想,但现在是唯一的选择。

+12

好吧,这是我所担心的。如果你问我的话,这是非常无用的API。 – LetsGoRangers

+0

只是注意到结果是根据播放列表设置排序的? (你必须拥有自己才能改变)。 –

5

这看起来似乎是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} 

您也可以搜索视频和查询词和其他几个参数,所以也许你可以得到结果,你想这样。

+0

谢谢@ paul-thomas-gc。我将类型更改为'video',这给了我排序的结果 – kitwalker

+0

我观察到罕见的情况下搜索不会返回所有视频。我的猜测是,即使您使用'safeSearch = none',YouTube也会从搜索中完全删除某些不适当的视频。 –

0

你必须在你这样的查询同时指定playlistID和的channelID:

https://www.googleapis.com/youtube/v3/search?part=snippet&type=video&order=date&maxResults=20&playlistId={playlistID}&channelId={channelID}&key={API_KEY} 
+0

这还不够。刚刚尝试过! –