本記事では、YouTube Data API V3
を使って、特定のチャンネルに投稿された動画の一覧データを取得する流れをまとめています。
チャンネルに投稿された動画の一覧データを取得するのはチャンネルIDをパラメーターに指定すれば1発で取れそうなイメージがありますが、実際にはchannnels
にリクエストして、そのレスポンスデータを使って、playlistItems
を実行する、という2つのリソースへのアクセスが必要でした。
そして、この事が公式ドキュメントを探した限り出てこなくてハマったので、記事に残そうと思います。
実践
(1)
Google Cloud コンソールを開き、プロジェクトを作成する。
作成済みであれば、プロジェクトを選択する。
(2)
検索ボックスにyoutube
と入力するとYouTube Data API V3が出るので選択する
(3)
YouTube Data API V3製品詳細ページへ遷移するので、有効にする
ボタンをクリック
(5)
前のページに戻り、左のサイドメニューから認証情報
を選択する
ページの上部にある+認証情報を作成
をクリックて、APIキー
を選択するとAPIキーが作成されるので、控えておきます。
(6)
再度ヘッダーの検索ボックスにyoutube
と入力して、YouTube Data API V3製品詳細ページを開き、ページの下の方に、Learn more
というリンクがあるので、クリックして開く
(7)
ページが開いたら、ヘッダーのメニューからサンプル
を選択し、YouTube Data API (V3)の下に各言語のリンクが並んでいるので、JavaScript
を選択
(8)
ユースケースとコード スニペットというページが開きます。ここでリソース、メソッドを選択してAPIを実行できます。
本記事では特定のチャンネルのアップロード動画を取得したいと思います。
チャンネルIDを用意しておいてください。(*チャンネルIDの確認の仕方は省略)
リソース、メソッドは以下を選択します。
リソース:channels
メソッド:list
サンプル名の横にある赤色のコードアイコン</>
をクリックします。
(9)
API Explorerモーダルが開くので、チャンネルIDをid
パラメーターに指定し、下にあるExecuteボタンをクリックする。
*partに入っているのはレスポンスオブジェクトに含める情報で、デフォルトのままでOK
(10)
200が返って成功するとレスポンスに以下が含まれます。
"contentDetails": {
"relatedPlaylists": {
"likes": "",
"uploads": "UUL6JY2DXJNDOIqCP1CRADng"
}
}
contentDetails.relatedPlaylists.uploads
が次のリソース(playlistItems)に必要なplaylistIdとなります。
(11)
続いて、リソース、メソッドは以下を選択します。
リソース:playlistItems
メソッド:list
同様に赤色のコードアイコン</>
をクリックしてAPI Explorerモーダルを開き、playlistId
をパラメーターに指定して、Executeします。成功するとitems
に各動画のチャンネルID、タイトル、サムネイル(サイズ別)など必要なデータが揃ったオブジェクトが配列で格納されます。
API Explorerの右側にCurlコマンド、各言語での実装サンプルも出してくれてます。
それには冒頭で取得したAPIキーが必要になります。
channels
を叩いて、playlist IDを取得し、playlistItems
を叩いて、アップロード動画一覧が取得できるのですが、2つのチャンネルでテストしてみた結果、どうやらplaylist ID
はチャンネルIDの2文字目をC
からU
に変えただけぽかったです。
この決まりであれば、playlistItems
だけリクエストすればいいのかなと思いましたが、確証ははないので、本記事のように2つのリソースにリクエストするやり方が確実だと思います。
某チャンネルID
UCL6JY2DXJNDOIqCP1CRADng
playlist ID
UUL6JY2DXJNDOIqCP1CRADng
某チャンネルID
UCBRZGokm2-SNYfvFWy3hfYg
playlist ID
UUBRZGokm2-SNYfvFWy3hfYg