2016-08-18 6 views
0

PlaylistItemは、videoIdplaylistIdで検索されません。この状況は、maxResultsの範囲内にない場合に発生します。maxResultsの範囲からvideoIdとplaylistIdを使用してplaylistItemを取得するにはどうすればよいですか?

商品を受け取るには、以下のデータが必要です。

GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=3&playlistId=PLLALQuK1NDrgb03P3lIgK7SrBdYbuh4_5&videoId=H4lRmVy_qYc&key={YOUR_API_KEY} 

今回はアイテムを取得できませんでした。

GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=2&playlistId=PLLALQuK1NDrgb03P3lIgK7SrBdYbuh4_5&videoId=H4lRmVy_qYc&key={YOUR_API_KEY} 

Try it here

唯一の違いの事はmaxResultsの数だけあります。 playlistItemにはインデックス3があるため、検索されませんでした。

最大数がmaxResultsでないPlaylistItemを取得しようとしない限り問題はありません。しかし、私はそれをしなければなりません。それは私をたくさん挫折させます。

回避策はありますか?

+0

'PlaylistItem'リソースからのどの情報が' Video'リソースに含まれていない必要がありますか?言い換えれば、動画を直接クエリしないでください(「GET https://www.googleapis.com/youtube/v3/videos?part = snippet&id = H4lRmVy_qYc&key = {YOUR_API_KEY} ')? – paolo

+0

@paolo PlaylistItemが 'videoId'と' playlistId'だけでプレイリストにあるかどうかを知る必要があります。 –

+0

[documentation](https://developers.google.com/youtube/v3/docs/playlistItems/list)には、必要なパラメータがpartであり、指定する必要のあるフィルタが既に記述されていますこれらのパラメータの1つ(idとplaylistId)。 maxResultsはオプションのパラメータであることを覚えておいてください。そこにあるすべてのパラメータの説明を読んで、その使用方法を知ってください。 – KENdi

答えて

1

このAPIの動作は実際はかなり混乱していますが、私はそれが起こるようなことは期待しません。結局のところ、documentation for the maxResults parameterは次のように述べています。

maxResultsパラメーターは、結果セットに返されるアイテムの最大数を指定します。

ビデオがプレイリストに2回あるので、maxResultsパラメータを2または3またはそれより高い任意の数に設定した要求が両方のアイテムを返すと仮定する必要があります。

可能な回避策

あなただけの50にmaxResultsパラメータを上げることができませんでしたが、これは動作しますなぜ私は本当に理解していない:

まず、すべて動画のリストを取得(videoIdパラメータなし)。そうすれば、プレイリスト内の50の動画ごとに1つのリクエストを行う必要がありますが、少なくともこの方法は信頼性があります。レスポンスの中の任意のnextPageTokenプロパティを確認してください。これはmaxResultsを超えたアイテムを取得する最も簡単な方法です。

(ビデオの説明などの)詳細情報が必要ない場合は、パラメータをitems(snippet(position,resourceId/videoId)),nextPageTokenに設定することもできます。そうすれば、必要な情報だけが返され、応答のサイズが小さくなります。今、あなたは内のすべての項目の動画IDを持っていることを

GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=50&playlistId=PLLALQuK1NDrgb03P3lIgK7SrBdYbuh4_5&fields=items(snippet(position%2CresourceId%2FvideoId))%2CnextPageToken&key={YOUR_API_KEY} 

fieldsパラメータが「それを試してみてください!」エリアで、フィールドエディターを使用して構成されていた)

:あなたのクエリは、このようになります。あなたのIDがその中にあるかどうかを確認するだけです。

+0

私の状況は 'maxResults'を超過したアイテムに関するものです。すべてのビデオを取得することは、ビデオがプレイリストに含まれていることを知るための唯一の方法ですか? –

+1

それが唯一の方法かどうかはわかりませんが、うまくいきます。私が言ったように、私は 'maxResults'のこの動作を説明することができず、私はそれが非常に奇妙であると感じます。それはちょうどAPIのバグかもしれない、私は知らない。 – paolo

関連する問題