YouTube Data APIを使ってチャンネルに含まれる動画を取得する流れ
YouTube から動画の情報を取得するための API について調べてみました。
API を使ってやりたいことは、
特定のチャンネルにアップロードされている動画の一覧を取得して各動画の詳細(タイトル、説明、再生数など)を取得する
です。
調べたところ YouTube Data API
を使うと実現できそうでした。
この記事は API の使い方のみを記載しています。Python から実際に API 利用して動画の情報を取得する内容についてはこちらの記事をご覧ください。
基本的なこと
-
チャンネル
や動画の情報を取得するには YouTube Data API を使う- チャンネルの検索、チャンネルの概要の取得、プレイリストの取得(動画の一覧)、動画の詳細情報の取得、など
- 無料で利用できる(大規模な利用だと有料かもしれない、要確認)
認証
- API を利用するためには GCP にプロジェクトを作成する必要がある
-
OAuth認証
もしくはAPIKEY
で API の認証をする- 利用者の個人情報にアクセスするなら
OAuth認証
でそれ以外はAPIKEY
みたいな使い分けで良さそう
- 利用者の個人情報にアクセスするなら
Quota
- Quota
- Quota の割り当ては GCP の管理画面で確認ができる
-
IAMと管理
->割り当て
10,000 / Queries per day
1,800,000 / Queries per minute
- 例えば
Search
API の 1 回の消費量は 100 なので、1 日あたりの上限は 100 回、割と厳しい
-
- 増加申請のフォーム https://support.google.com/youtube/contact/yt_api_form?hl=ja
- API で取得するデータの量を増やすと Quota の消費が増えるかも
動画の情報を取得する流れ
冒頭に記載したことを実現するための API の利用の流れは以下の通り。
-
Search:list
でチャンネルを検索する-
channelId
を取得する
-
-
Channels:list
でチャンネルの情報を取得する-
アップロード済み動画
のリストが含まれているプレイリストの ID(playlistId
)が取得できる
-
-
PlaylistItems:list
でplaylistId
に含まれている動画の一覧を取得する- 各動画の概要と
videoId
が取得できる
- 各動画の概要と
-
Videos:list
でビデオの詳細を取得する- 再生数やいいねなどが取得できる
Search:list
-
汎用の検索用の API、動画やチャンネルが検索できる
-
今回はチャンネルの ID(
channelId
)を取得するために使う- ブラウザでチャンネルを開いた時に末尾に表示される文字列が
channelId
- 例えば私のチャンネルだと URL は https://www.youtube.com/channel/UCu7DJCfp1VgHTIDWmQjhFwg なので末尾の
UCu7D...
がchannelId
- ブラウザでチャンネルを開いた時に末尾に表示される文字列が
-
なので通常は
Search:list
を使わなくてもchannelId
は分かる- チャンネルを検索したり情報(概要、サムネイルなど)を取得したい時に
Search:list
を使う
- チャンネルを検索したり情報(概要、サムネイルなど)を取得したい時に
-
下記は
HikakinTV
という query でSearch:list
を呼び出した時のレスポンス-
"channelId": "UCZf__ehlCEBPop-_sldpBUQ"
がchannelId
に該当
-
{
"kind": "youtube#searchListResponse",
"etag": "MbmXZk8nA8FgTh0Izv-n8JTXs8I",
"nextPageToken": "CAUQAA",
"regionCode": "JP",
"pageInfo": {
"totalResults": 95625,
"resultsPerPage": 5
},
"items": [
{
"kind": "youtube#searchResult",
"etag": "K9MC--aTjZ_QSSRwSZ1-KJ7i20Y",
"id": {
"kind": "youtube#channel",
"channelId": "UCZf__ehlCEBPop-_sldpBUQ"
},
"snippet": {
"publishedAt": "2011-07-19T11:31:43Z",
"channelId": "UCZf__ehlCEBPop-_sldpBUQ",
"title": "HikakinTV",
"description": "HikakinTVはヒカキンが面白いものを紹介するチャンネルです。 ◇プロフィール◇ YouTubeに ...",
"thumbnails": {
"default": {
"url": "https://yt3.ggpht.com/ytc/AKedOLQZxfFwNwOkE2Kp_uQtMdjRMLONxs1OFdOKFh8MJw=s88-c-k-c0xffffffff-no-rj-mo"
},
"medium": {
"url": "https://yt3.ggpht.com/ytc/AKedOLQZxfFwNwOkE2Kp_uQtMdjRMLONxs1OFdOKFh8MJw=s240-c-k-c0xffffffff-no-rj-mo"
},
"high": {
"url": "https://yt3.ggpht.com/ytc/AKedOLQZxfFwNwOkE2Kp_uQtMdjRMLONxs1OFdOKFh8MJw=s800-c-k-c0xffffffff-no-rj-mo"
}
},
"channelTitle": "HikakinTV",
"liveBroadcastContent": "none",
"publishTime": "2011-07-19T11:31:43Z"
}
},
...
Channels:list
-
channelId
を指定すると当該のチャンネルの情報が取得できる -
チャンネルにアップロードされた動画は
プレイリスト
毎に管理されている、アップロード済み動画
もプレイリストのうちの一つ -
今回は
アップロード済み動画
の ID(playlistId
)を取得するために使う -
API リクエストで
contentDetails
を指定するとplaylistId
が取得できる -
以下は Hikakin さんのチャンネル(
channelId:UCZf__ehlCEBPop-_sldpBUQ
)に対してChannels:list
でcontentDetails
を取得した時のレスポンス-
"uploads": "UUZf__ehlCEBPop-_sldpBUQ"
がアップロード済み動画のplaylistId
-
{
"kind": "youtube#channelListResponse",
"etag": "VkhzwWMfbS-AImFCVbdk9bsAkHU",
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 5
},
"items": [
{
"kind": "youtube#channel",
"etag": "DmQDzl3s73mpYdvhg652SASTHzY",
"id": "UCZf__ehlCEBPop-_sldpBUQ",
"contentDetails": {
"relatedPlaylists": {
"likes": "",
"uploads": "UUZf__ehlCEBPop-_sldpBUQ"
}
}
}
]
}
PlaylistItems:list
-
Channels:list
で取得したplaylistId
を使うとプレイリストに含まれる動画のリストが取得できる -
リクエストで
snippet
を指定するとプレイリストに含まれている各動画の概要と ID(videoId
)が取得できる -
以下は先ほど取得した playlistID
UUZf__ehlCEBPop-_sldpBUQ
を使って snippet を取得した時のレスポンス-
items
の配列に動画のリストが含まれている - タイトル・概要・サムネイルの URL・
videoId
などが取得できる
-
{
"kind": "youtube#playlistItemListResponse",
"etag": "BYCEJTIzwWnSGP8xRcbE-wMKY88",
"nextPageToken": "EAAaBlBUOkNBVQ",
"items": [
{
"kind": "youtube#playlistItem",
"etag": "mF-v7__x9vtSAUlAu7KIBvS4R98",
"id": "VVVaZl9fZWhsQ0VCUG9wLV9zbGRwQlVRLjdLc2F4MldHTm5R",
"snippet": {
"publishedAt": "2022-03-04T07:17:26Z",
"channelId": "UCZf__ehlCEBPop-_sldpBUQ",
"title": "【都市伝説】海老のかわりにパイの実でエビチリ作るとウマいってマジ…!?【ヒカキンTV】",
"description": "◆チャンネル登録はこちら↓\nhttp://www.youtube.com/user/hikakintv?sub_confirmation=1\n\n◆ツイッター\nhttps://twitter.com/hikakin\n\n◆インスタグラム\nhttps://instagram.com/hikakin/\n\n◆TikTok\nhttps://vt.tiktok.com/BTWxUN/\n\n◆ヒカキンゲームズ\nhttp://www.youtube.com/hikakingames\n\n◆ビートボックス動画のHIKAKINチャンネル\nhttp://www.youtube.com/HIKAKIN\n\n◆ラフな動画のHikakinBlog\nhttp://www.youtube.com/hikakinblog\n\n\n◆ヒカキンLINEスタンプはこちら\nhttps://store.line.me/stickershop/product/1022677/ja\n\n\n◆ヒカキンLINE公式アカウント\n●友達登録はこちら↓\nhttp://line.naver.jp/ti/p/%40hikakin\n\n#パイの実\n#エビチリ\n#料理",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/7Ksax2WGNnQ/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/7Ksax2WGNnQ/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/7Ksax2WGNnQ/hqdefault.jpg",
"width": 480,
"height": 360
}
},
"channelTitle": "HikakinTV",
"playlistId": "UUZf__ehlCEBPop-_sldpBUQ",
"position": 0,
"resourceId": {
"kind": "youtube#video",
"videoId": "7Ksax2WGNnQ"
},
"videoOwnerChannelTitle": "HikakinTV",
"videoOwnerChannelId": "UCZf__ehlCEBPop-_sldpBUQ"
}
},
{
"kind": "youtube#playlistItem",
"etag": "3DilffukqinoaU_e1hjz7vaYpLQ",
"id": "VVVaZl9fZWhsQ0VCUG9wLV9zbGRwQlVRLnFoeHc4MEo3ZHJF",
"snippet": {
"publishedAt": "2022-03-02T09:18:51Z",
"channelId": "UCZf__ehlCEBPop-_sldpBUQ",
"title": "メガネの動きがヤバすぎる人www #Shorts #TikTok",
"description": "◆チャンネル登録はこちら↓\nhttp://www.youtube.com/user/hikakintv?sub_confirmation=1\n\n◆ツイッター\nhttps://twitter.com/hikakin\n\n◆インスタグラム\nhttps://instagram.com/hikakin/\n\n◆TikTok\nhttps://vt.tiktok.com/BTWxUN/\n\n◆ヒカキンゲームズ\nhttp://www.youtube.com/hikakingames\n\n◆ビートボックス動画のHIKAKINチャンネル\nhttp://www.youtube.com/HIKAKIN\n\n◆ラフな動画のHikakinBlog\nhttp://www.youtube.com/hikakinblog\n\n\n◆ヒカキンLINEスタンプはこちら\nhttps://store.line.me/stickershop/product/1022677/ja\n\n\n◆ヒカキンLINE公式アカウント\n●友達登録はこちら↓\nhttp://line.naver.jp/ti/p/%40hikakin\n\n#Shorts\n#TikTok",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/qhxw80J7drE/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/qhxw80J7drE/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/qhxw80J7drE/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/qhxw80J7drE/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/qhxw80J7drE/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "HikakinTV",
"playlistId": "UUZf__ehlCEBPop-_sldpBUQ",
"position": 1,
"resourceId": {
"kind": "youtube#video",
"videoId": "qhxw80J7drE"
},
"videoOwnerChannelTitle": "HikakinTV",
"videoOwnerChannelId": "UCZf__ehlCEBPop-_sldpBUQ"
}
},
...
Videos:list
-
videoId
を指定すると動画の詳細情報が取得できる -
タイトルなどは
snippet
に、再生数などはstatistics
に含まれている -
複数の
videoId
を 1 回のリクエストに含めるとまとめて取得することもできる -
以下は
videoId
に7Ksax2WGNnQ
を指定して取得した時のレスポンス
{
"kind": "youtube#videoListResponse",
"etag": "SH45PQYpChpo9r8NNNWyn1T1lrw",
"items": [
{
"kind": "youtube#video",
"etag": "oRlvGMaJZ58fr7W_ofYH0CTNUFs",
"id": "7Ksax2WGNnQ",
"snippet": {
"publishedAt": "2022-03-04T10:00:15Z",
"channelId": "UCZf__ehlCEBPop-_sldpBUQ",
"title": "【都市伝説】海老のかわりにパイの実でエビチリ作るとウマいってマジ…!?【ヒカキンTV】",
"description": "◆チャンネル登録はこちら↓\nhttp://www.youtube.com/user/hikakintv?sub_confirmation=1\n\n◆ツイッター\nhttps://twitter.com/hikakin\n\n◆インスタグラム\nhttps://instagram.com/hikakin/\n\n◆TikTok\nhttps://vt.tiktok.com/BTWxUN/\n\n◆ヒカキンゲームズ\nhttp://www.youtube.com/hikakingames\n\n◆ビートボックス動画のHIKAKINチャンネル\nhttp://www.youtube.com/HIKAKIN\n\n◆ラフな動画のHikakinBlog\nhttp://www.youtube.com/hikakinblog\n\n\n◆ヒカキンLINEスタンプはこちら\nhttps://store.line.me/stickershop/product/1022677/ja\n\n\n◆ヒカキンLINE公式アカウント\n●友達登録はこちら↓\nhttp://line.naver.jp/ti/p/%40hikakin\n\n#パイの実\n#エビチリ\n#料理",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/7Ksax2WGNnQ/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/7Ksax2WGNnQ/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/7Ksax2WGNnQ/hqdefault.jpg",
"width": 480,
"height": 360
}
},
"channelTitle": "HikakinTV",
"tags": [
"ヒカキン",
"ヒカキンtv",
"hikakintv",
"hikakin",
"ひかきん",
"ひかきんtv",
"ユーチューバー",
"YouTube",
"YouTuber",
"商品紹介",
"おもちゃ",
"オモチャ",
"玩具",
"動画",
"ビートボックス",
"Beatbox",
"ボイパ",
"ヒューマンビートボックス",
"ボイスパーカッション",
"レビュー"
],
"categoryId": "24",
"liveBroadcastContent": "none",
"localized": {
"title": "【都市伝説】海老のかわりにパイの実でエビチリ作るとウマいってマジ…!?【ヒカキンTV】",
"description": "◆チャンネル登録はこちら↓\nhttp://www.youtube.com/user/hikakintv?sub_confirmation=1\n\n◆ツイッター\nhttps://twitter.com/hikakin\n\n◆インスタグラム\nhttps://instagram.com/hikakin/\n\n◆TikTok\nhttps://vt.tiktok.com/BTWxUN/\n\n◆ヒカキンゲームズ\nhttp://www.youtube.com/hikakingames\n\n◆ビートボックス動画のHIKAKINチャンネル\nhttp://www.youtube.com/HIKAKIN\n\n◆ラフな動画のHikakinBlog\nhttp://www.youtube.com/hikakinblog\n\n\n◆ヒカキンLINEスタンプはこちら\nhttps://store.line.me/stickershop/product/1022677/ja\n\n\n◆ヒカキンLINE公式アカウント\n●友達登録はこちら↓\nhttp://line.naver.jp/ti/p/%40hikakin\n\n#パイの実\n#エビチリ\n#料理"
},
"defaultAudioLanguage": "ja"
},
"statistics": {
"viewCount": "573613",
"likeCount": "14561",
"favoriteCount": "0",
"commentCount": "1359"
}
}
],
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 1
}
}
まとめ
ここまでの内容で冒頭に記載した 特定のチャンネルにアップロードされている動画の一覧を取得して各動画の詳細(タイトル、説明、再生数など)を取得する は実現できそうでした。
参考になったらいいねしてもらえると嬉しいです。
Discussion