YouTube から動画の情報を取得するための API について調べてみました。
API を使ってやりたいことは、
特定のチャンネルにアップロードされている動画の一覧を取得して各動画の詳細(タイトル、説明、再生数など)を取得する
です。
調べたところ YouTube Data API を使うと実現できそうでした。
この記事は API の使い方のみを記載しています。Python から実際に API 利用して動画の情報を取得する内容についてはこちらの記事をご覧ください。
https://zenn.dev/yorifuji/articles/youtube-data-api-python
基本的なことチャンネルや動画の情報を取得するには YouTube Data API を使うチャンネルの検索、チャンネルの概要の取得、プレイリストの取得(動画の一覧)、動画の詳細情報の取得、など無料で利用できる(大規模な利用だと有料かもしれない、要確認) 認証API を利用するためには GCP にプロジェクトを作成する必要があるOAuth認証 もしくは APIKEY で API の認証をする利用者の個人情報にアクセスするならOAuth認証でそれ以外はAPIKEYみたいな使い分けで良さそう QuotaQuotaQuota の割り当ては GCP の管理画面で確認ができるIAMと管理 -> 割り当て10,000 / Queries per day1,800,000 / Queries per minute例えば Search API の 1 回の消費量は 100 なので、1 日あたりの上限は 100 回、割と厳しい増加申請のフォーム https://support.google.com/youtube/contact/yt_api_form?hl=ja参考:https://qiita.com/DevIwatan/items/e58d49b329cc981ab077API で取得するデータの量を増やすと Quota の消費が増えるかも参考:https://mmcd-web.sounds-stella.jp/8325/data-usage-on-youtube-data-api/ 動画の情報を取得する流れ冒頭に記載したことを実現するための API の利用の流れは以下の通り。
Search:list でチャンネルを検索するchannelId を取得するChannels:list でチャンネルの情報を取得するアップロード済み動画 のリストが含まれているプレイリストの ID(playlistId)が取得できるPlaylistItems:list で playlistId に含まれている動画の一覧を取得する各動画の概要と videoId が取得できるVideos:list でビデオの詳細を取得する再生数やいいねなどが取得できる Search:listhttps://developers.google.com/youtube/v3/docs/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:listhttps://developers.google.com/youtube/v3/docs/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:listhttps://developers.google.com/youtube/v3/docs/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:listhttps://developers.google.com/youtube/v3/docs/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 }} まとめここまでの内容で冒頭に記載した 特定のチャンネルにアップロードされている動画の一覧を取得して各動画の詳細(タイトル、説明、再生数など)を取得する は実現できそうでした。
参考になったらいいねしてもらえると嬉しいです。