プレイリストのアップロードでは、PlaylistItemsは全体で20000に制限されているようです。回避策はありますか?
最近アップロードされたプレイリストは20000エントリに制限されていたようです。チャンネルによってアップロードされたすべての動画のリストを取得する方法はありますか?
たとえば、チャンネルUCFL1sCAksD6_7JIZwwHcwjQには、検索時に57849本の動画があります。
https://www.youtube.com/results?search_query=jtbc+entertainment
。
ただし、アップロードプレイリストには20000本の動画しかありません。
https://www.youtube.com/playlist?list=UUFL1sCAksD6_7JIZwwHcwjQ
。
Pythonを介してYouTubeData APIにクエリを実行する場合、20000番目のエントリがあるページに到達した後、nextPageTokenは存在しません。
残りのビデオを見つけるにはどうすればよいですか?
回答
Search.list次のパラメータでクエリされたAPIエンドポイントを繰り返し使用してみてください。
channelId=UCFL1sCAksD6_7JIZwwHcwjQ
、type=video
、order=date
、publishedBefore=...
、maxResults=50
、
ここで、publishedBefore
は適切に計算されます。
イニシャルpublishedBefore
はpublishedAt、でPlaylistItems.list呼び出されたエンドポイントから取得した(時系列で)最後のビデオのプロパティの値の1秒前に設定されますplaylistId=UUFL1sCAksD6_7JIZwwHcwjQ
。
publishedBefore
同様に、の連続する値は、エンドポイントpublishedAtへの前回の呼び出しの(時系列で)最後のビデオのプロパティの値の1秒前に設定されSearch.list
ます。
もう1つの注意:上記のアルゴリズムを使用してAPIで20000の制限を超えることができる場合でも(そうなるかどうかはわかりません。自分でテストする必要があります)、この手順のコストに注意してください。は非常に高くなります。各Search.list
エンドポイント呼び出しのクォータコストは100ユニットです(確かに高価です)。