2014-04-06 24 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

這還不夠。剛剛嘗試過! –