プレイリストのアップロードでは、PlaylistItemsは全体で20000に制限されているようです。回避策はありますか?

Aug 21 2020

最近アップロードされたプレイリストは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は存在しません。

残りのビデオを見つけるにはどうすればよいですか?

回答

2 stvar Aug 21 2020 at 13:49

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ユニットです(確かに高価です)。