【PHP】指定したYouTuberの動画情報を一括で全件取得する方法

PHP

前回の記事では、指定したYouTuberの動画情報を一括で取得する方法をご紹介しました。

ところが、前回の記事では指定した期間の中で、最大で50件しか一度に取得できません。今回は指定した期間の中で50件を超えた場合でも、全ての動画情報を取得する方法をご紹介します。

プログラムコード

さっそくですが、指定したYouTuberの動画情報を一括で全件取得するコードは以下になります。

コードの説明

nextPageToken で残りの結果を取得する

今回のポイントは以下の部分です。一度に最大 50件 までしか取得できないため、1年分の動画を取得した場合、100本の動画があっても、残り50件が取得できません。そのため、以下のように nextPageToken を取得して、再度同じ関数を呼び出しています。こうすることにより、全件取得できます。

グローバルな配列変数に取得結果を格納する

取得した結果を配列変数に入れていますが、配列変数を関数の外で初期化しています。これは、nextPageToken を取得する際に自身の関数を再帰的に呼び出しており、関数内で変数を初期化してしまうと、最後の結果しか残らないからです。このように関数の外で初期化した変数を使用するには global キーワードを変数の前につけます。

使用方法

APIキーとチャンネルIDを記載する

以下の場所にYouTubeAPIキーと取得したいYouTuberのチャンネルを入れます。

APIキーの取得方法とチャンネルIDの取得方法は以下の記事を参考にしましょう。

・APIキーの取得方法

【Youtube】APIキーの取得手順(2021/04/08時点のキャプチャ) - Qiita
はじめにYoutubeのAPIがあれば動画情報の取得が出来ます。YoutubeはWEBスクレイピングを規約違反としているのでAPI経由で情報を取得する必要があります。私は↓のPythonライブ…

・チャンネルIDの取得方法

他人のYouTubeのチャンネルIDを調べる - ilr - アイ・エル・アール
概要 自分自身のチャンネルIDはYouTube Studio>カスタマイズ>基本情報 で確認することができますが、他人のチャンネルでカスタム URLを使用されているチャンネルはチャンネルIDがわかりません。 ソースから確
取得する動画の範囲を指定する

以下の部分では取得する動画の期間を指定しています。以下の例では 1年前の今日の日付~今日の日付 までの範囲を取得しています。この部分はご自由に変更してください。また、”T00:00:00Z”を日付の後ろにつけないとエラーになります。

実行結果

ごちゃごちゃ で分かりにくいのですが、146件分(※添え字が0から始まるため)の動画情報が一度に取得できたことがわかります。

配列の中身を取り出すときは以下のようにするといいと思います。

こちらで取り出した結果は以下の画像になります。

きちんと取得できていますね!

さいごに

いかがだったでしょうか。今回は指定した期間の動画情報を一括で取得する方法をご紹介しました。

今回はPHPで作成していますが、Pythonで取得する方法は以下になります。

是非ご活用ください。

ではまた。

・以下の記事を参考にさせて頂きました。

youtubeの動画一覧をチャンネル毎にpythonで取得してCSVで保存する
最近youtubeの検索にちょっと不満がありまして、チャンネル内でのシリーズ動画ってあるじゃないですか、再生リストを作ってくれていてもあれは手動で作る物なのでたまに抜けていたりしますし、再生リストが無い場合はチャンネルページの動画タブから永

コメント