この記事ではYouTube Data APIの使い方について解説します。YouTube Data APIのリクエストを発行してその結果を見るだけであればブラウザーのみで実行できますので、まずはブラウザーでYouTube Data APIを実行してみることで、YouTube Data APIの理解を深めることを目指します。
YouTube Data APL 実行サンプル 1
YouTube Data APIを実行するには事前準備が必要なのですが、諸々解説していく前にまずは実行サンプルを示します。YouTube Data APIの実行は至ってシンプルです。
実行はブラウザーから以下のようなURLを記述してenterボタンを押すだけなのですが
https://www.googleapis.com/youtube/v3/videos?part=id,snippet,contentDetails,liveStreamingDetails,player,recordingDetails,statistics,status,topicDetails&id=s_O66WBYkcI&key=【取得したAPIキー】
そうすると、以下のような実行結果が返ってきます。
{
"kind": "youtube#videoListResponse",
"etag": "dVZkgxj6D_WYPwd1ps3plbFPgp8",
"items": [
{
"kind": "youtube#video",
"etag": "OOYTuVghbhIy1q7vl1WBfD_Qr_E",
"id": "s_O66WBYkcI",
"snippet": {
"publishedAt": "2024-08-14T10:00:54Z",
"channelId": "UCnoYhOtV0IXZ6lv2R-ZnB_Q",
"title": "【ハロ!ステ#542】モーニング娘。'24「なんだかセンチメンタルな時の歌」定点LIVE J=J「トウキョウ・ブラー」ハロプロ研修生コーナー河野空愛 キッチン松永里愛 MC:小田さくら&牧野真莉愛",
"description": "Hello! Project 2024 Summer ALL OF US 「ベガ」 からモーニング娘。'24の新曲「なんだかセンチメンタルな時の歌」定点LIVE映像 Juice=Juice「トウキョウ・ブラー」をお届け!ハロプロ研修生コーナースタート!今回は「河野空愛」を紹介!!ハロー!キッチンは松永里愛が作る「桃と生ハムの冷製パスタ」が完成!\n\n MC: 小田さくら(モーニング娘。'24)&牧野真莉愛 (モーニング娘。'24)\n00:00~ 定点LIVE映像「なんだかセンチメンタルな時の歌」/モーニング娘。'24(7.13 TACHIKAWA STAGE GARDEN)\n03:08~ オープニング\n06:11~ ハロー!キッチン 松永里愛\n15:42~ MCトーク!一問一答(前半)\n20:39~ MCトーク!一問一答(後半)\n23:34~ 新コーナー ハロプロ研修生コーナー 河野空愛を紹介!!~MCトーク\n31:10~ MCトーク!モーニング娘。'24 74thシングル「なんだかセンチメンタルな時の歌/最KIYOU」発売!!\n35:02~ 「トウキョウ・ブラー」/Juice=Juice(7.13 TACHIKAWA STAGE GARDEN)\n39:11~ エンディング\n\nチャンネル登録よろしくお願いします。\n\n▼ハロ!ステ 毎週水曜日 19時~(約30分)\nhttps://www.youtube.com/c/helloprojectstation\n⇒ハロー!プロジェクトアーティストのライブ映像やスペシャル企画などを公開。\n\n▼アプカミ 毎週木曜日 19時~(約30分)\nhttps://www.youtube.com/c/upcomi\n⇒アップフロントグループに所属する様々なアーティストのレコーディング映像、ヘアメイクなど、制作の裏側を公開。\n\n▼M-line Music 毎週金曜日 19時~(約30分)\nhttps://www.youtube.com/c/mlinemusic/\n⇒M-line clubを中心としたメンバーの音楽活動をお届け!\n\n▼OMAKE CHANNEL\nhttps://www.youtube.com/c/omake\n⇒短い時間でお楽しみいただける動画を随時 公開中。\n\n▼君に伝えたい物語\nhttps://www.youtube.com/c/kimitsuta/\n⇒「感動する物語」「涙する物語」ハロー!プロジェクトメンバー参加の動画を公開中。\n\n\n▼ハロー!プロジェクトオフィシャルサイト\nhttp://www.helloproject.com",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/s_O66WBYkcI/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/s_O66WBYkcI/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/s_O66WBYkcI/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/s_O66WBYkcI/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/s_O66WBYkcI/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "ハロ!ステ",
"tags": [
"ハロー!プロジェクト",
"アンジュルム",
"Juice=Juice",
"カントリー・ガールズ",
"ハロステ",
"ハロ!ステ",
"ハロプロ研修生",
"モーニング娘。",
"こぶしファクトリー",
"つばきファクトリー",
"ハロプロ研修生北海道",
"ハロプロ",
"アイドル",
"BEYOOOOONDS",
"ビヨーンズ"
],
"categoryId": "10",
"liveBroadcastContent": "none",
"localized": {
"title": "【ハロ!ステ#542】モーニング娘。'24「なんだかセンチメンタルな時の歌」定点LIVE J=J「トウキョウ・ブラー」ハロプロ研修生コーナー河野空愛 キッチン松永里愛 MC:小田さくら&牧野真莉愛",
"description": "Hello! Project 2024 Summer ALL OF US 「ベガ」 からモーニング娘。'24の新曲「なんだかセンチメンタルな時の歌」定点LIVE映像 Juice=Juice「トウキョウ・ブラー」をお届け!ハロプロ研修生コーナースタート!今回は「河野空愛」を紹介!!ハロー!キッチンは松永里愛が作る「桃と生ハムの冷製パスタ」が完成!\n\n MC: 小田さくら(モーニング娘。'24)&牧野真莉愛 (モーニング娘。'24)\n00:00~ 定点LIVE映像「なんだかセンチメンタルな時の歌」/モーニング娘。'24(7.13 TACHIKAWA STAGE GARDEN)\n03:08~ オープニング\n06:11~ ハロー!キッチン 松永里愛\n15:42~ MCトーク!一問一答(前半)\n20:39~ MCトーク!一問一答(後半)\n23:34~ 新コーナー ハロプロ研修生コーナー 河野空愛を紹介!!~MCトーク\n31:10~ MCトーク!モーニング娘。'24 74thシングル「なんだかセンチメンタルな時の歌/最KIYOU」発売!!\n35:02~ 「トウキョウ・ブラー」/Juice=Juice(7.13 TACHIKAWA STAGE GARDEN)\n39:11~ エンディング\n\nチャンネル登録よろしくお願いします。\n\n▼ハロ!ステ 毎週水曜日 19時~(約30分)\nhttps://www.youtube.com/c/helloprojectstation\n⇒ハロー!プロジェクトアーティストのライブ映像やスペシャル企画などを公開。\n\n▼アプカミ 毎週木曜日 19時~(約30分)\nhttps://www.youtube.com/c/upcomi\n⇒アップフロントグループに所属する様々なアーティストのレコーディング映像、ヘアメイクなど、制作の裏側を公開。\n\n▼M-line Music 毎週金曜日 19時~(約30分)\nhttps://www.youtube.com/c/mlinemusic/\n⇒M-line clubを中心としたメンバーの音楽活動をお届け!\n\n▼OMAKE CHANNEL\nhttps://www.youtube.com/c/omake\n⇒短い時間でお楽しみいただける動画を随時 公開中。\n\n▼君に伝えたい物語\nhttps://www.youtube.com/c/kimitsuta/\n⇒「感動する物語」「涙する物語」ハロー!プロジェクトメンバー参加の動画を公開中。\n\n\n▼ハロー!プロジェクトオフィシャルサイト\nhttp://www.helloproject.com"
},
"defaultAudioLanguage": "ja"
},
"contentDetails": {
"duration": "PT40M58S",
"dimension": "2d",
"definition": "hd",
"caption": "false",
"licensedContent": true,
"contentRating": {},
"projection": "rectangular"
},
"status": {
"uploadStatus": "processed",
"privacyStatus": "public",
"license": "youtube",
"embeddable": true,
"publicStatsViewable": true,
"madeForKids": false
},
"statistics": {
"viewCount": "55280",
"likeCount": "2012",
"favoriteCount": "0",
"commentCount": "263"
},
"player": {
"embedHtml": "\u003ciframe width=\"480\" height=\"270\" src=\"//www.youtube.com/embed/s_O66WBYkcI\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen\u003e\u003c/iframe\u003e"
},
"topicDetails": {
"topicCategories": [
"https://en.wikipedia.org/wiki/Entertainment",
"https://en.wikipedia.org/wiki/Pop_music",
"https://en.wikipedia.org/wiki/Television_program"
]
},
"recordingDetails": {}
}
],
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 1
}
}
このように実行結果はJsonというデータ形式で応答されます。上記を見ればわかるように{}で囲んだ階層構造になっていて、データ項目名と設定値が”:”でつながっているので、コンピュータ向けのデータ形式であるものの、人間が見てもかなりわかりやすいデータ構造になっているのがJson形式の特徴と言えると思います。
上記を見て、「 “title”:」の箇所に動画のタイトルが、「 “description”:」の箇所に概要欄の内容が記載されているのが容易にわかると思います。
YouTube APIの仕様
YouTube Data APIの仕様は
ここに必要なことがすべて書かれているのですが、慣れるまでは少しとっつきにくいかもしれません。
API実行のための準備
APIキーの取得
YouTube Data APIを実行するにはGoogleにAPIキーを発行してもらう必要があります。また、APIキーを発行してもらうにはGoogleアカウントが必要になります。なので、人によってはGoogleアカウントの作成から必要になってしまい、ここから説明しようとするとかなり長い記事を書くことが必要になります。幸いなことに、APIキー作成については先人により大量のWebページがありますので、APIキー作成についてはググっていただき自分にとってわかりやすいページを探すのは容易化と思いますので、それを見てAPIキーを発行してみてください。
なお、APIキーは無料で使用できるものの、1日で利用できる回数が制限されているので、Googleアカウントを複数持っている人はAPIキーを複数取得しておくと便利だと思います。
リクエストURLの構造
実行サンプル1で示したリクエストURLはかなり長い内容でしたが、それを分解すると以下のようになっています。
項目 | 分解したURL |
共通URL | https://www.googleapis.com/youtube/v3/ |
リソース | videos |
必須パラメータ | ?part=id,snippet,contentDetails,statistics,player,topicDetails,recordingDetails |
フィルタ | &id=s_O66WBYkcI |
APIキー | &key=[取得したAPIキー] |
「リソース」「フィルタ」という項目名が馴染みにくいですが、要は項目「フィルタ」の”&id=”の後に動画固有のVideoIDを設定しているわけで、このVideoIDを他の動画のものに変更すれば、同じような情報が取得できるということは容易に理解できると思います。項目「リソース」「必須パラメータ」の設定値の意味は上記の仕様書を見ればわかりますが、目的が個々の動画の情報を取得したいということであれば、このままのリクエストURLの状態でVideoIDのみ変更して使用していく使い方でもよいのではないかと思います。
YouTube Data APL 実行サンプル 2
実行サンプル2として、特定のチャンネルに対して指定した時刻以降に公開された動画の情報を取得するサンプルを示します。リクエストURLは以下のとおりです。
https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCEbxO0RPlOQIVWrDaeepvuA&maxResults=50&order=date&type=video&publishedAfter=2024-08-16T00:00:00Z&key=【取得したAPIキー】
応答はこんな感じになります。
{
"kind": "youtube#searchListResponse",
"etag": "eea3QHckmM4_-Gb3RmoiEkzplI4",
"regionCode": "JP",
"pageInfo": {
"totalResults": 2,
"resultsPerPage": 2
},
"items": [
{
"kind": "youtube#searchResult",
"etag": "d9krWVrAzmCLBlnfv12a5wTtM3c",
"id": {
"kind": "youtube#video",
"videoId": "Km0GFxhfYoo"
},
"snippet": {
"publishedAt": "2024-08-16T12:00:22Z",
"channelId": "UCEbxO0RPlOQIVWrDaeepvuA",
"title": "OCHA NORMA『友達天体図』Promotion Edit",
"description": "2024年9月11日発売のOCHA NORMA 4thシングル『ちはやぶる/友達天体図』 から「友達天体図」のPromotion Editです。 作詞: ...",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/Km0GFxhfYoo/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/Km0GFxhfYoo/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/Km0GFxhfYoo/hqdefault.jpg",
"width": 480,
"height": 360
}
},
"channelTitle": "OCHA NORMA",
"liveBroadcastContent": "none",
"publishTime": "2024-08-16T12:00:22Z"
}
},
{
"kind": "youtube#searchResult",
"etag": "RYoNNAxOAvdIs8cxi-V4EjIJaSk",
"id": {
"kind": "youtube#video",
"videoId": "_bx_BgGRsZs"
},
"snippet": {
"publishedAt": "2024-08-16T03:00:31Z",
"channelId": "UCEbxO0RPlOQIVWrDaeepvuA",
"title": "【#オチャウケ】オチャウケ番外編!新曲「友達天体図」のここに注目!",
"description": "ハロー!プロジェクトのOCHA NORMAのメンバーが47都道府県それぞれで、独断と偏見をもってお茶の間に合う『オチャウケ( ...",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/_bx_BgGRsZs/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/_bx_BgGRsZs/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/_bx_BgGRsZs/hqdefault.jpg",
"width": 480,
"height": 360
}
},
"channelTitle": "OCHA NORMA",
"liveBroadcastContent": "none",
"publishTime": "2024-08-16T03:00:31Z"
}
}
]
}
この実行サンプルはOCHA NORMA公式チャンネルに対して、2024年8月16日午前0時以降に公開された動画をリクエストしているものになります。このURLを実行したのが、2024年8月17日の午前中なので、8月16日に公開された2本の動画の情報が帰ってきました。
リクエストURLの構造
項目 | 分解したURL |
共通URL | https://www.googleapis.com/youtube/v3/ |
リソース | search |
必須パラメータ | ?part=snippet |
フィルタ | &channelId=UCEbxO0RPlOQIVWrDaeepvuA &maxResults=50 &order=date &type=video &publishedAfter=2024-08-16T00:00:00Z |
APIキー | &key=[取得したAPIキー] |
このサンプルではリソースに「search」を使用しています。そして、「フィルタ」にて特定のチャンネルにて、最大50個までの範囲で指定した時刻以降に公開された動画情報をリクエストしています。
特定のチャンネルを示すために上記のようにチャンネルIDを指定しています。
チャンネルIDの確認方法
VideoIDは動画を再生するときのURLで簡単に確認できるのですが、チャンネルIDは確認方法を知らないと確認に手間取るかもしれませんので以下の図でチャンネルの確認方法を示します、図で示すように簡単に確認することができます。
VideoIDを使用して情報取得
実行サンプル2では「概要欄」が途中で切れてしまっています。なので、更新された動画の情報を完全に得る場合には、実行サンプル2で帰ってきたVideoIDを使って実行サンプル1を実行すればよいことになります。
https://www.googleapis.com/youtube/v3/videos?part=id,snippet,contentDetails,liveStreamingDetails,player,recordingDetails,statistics,status,topicDetails&id=Km0GFxhfYoo&key=【取得したAPIキー】
上記のように実行サンプル2で取得した動画タイトル「OCHA NORMA『友達天体図』Promotion Edit」のVideoIDを設定してリクエストURLを実行します。
{
"kind": "youtube#videoListResponse",
"etag": "Y3AYA-iCAV_FIqxjKrDzbLOiMIo",
"items": [
{
"kind": "youtube#video",
"etag": "yuavixOaZ0n3OOBwT0DReTuO6jA",
"id": "Km0GFxhfYoo",
"snippet": {
"publishedAt": "2024-08-16T12:00:22Z",
"channelId": "UCEbxO0RPlOQIVWrDaeepvuA",
"title": "OCHA NORMA『友達天体図』Promotion Edit",
"description": "2024年9月11日発売のOCHA NORMA 4thシングル『ちはやぶる/友達天体図』 から「友達天体図」のPromotion Editです。 \n\n作詞:児玉雨子 作曲:山崎あおい 編曲:炭竃智弘\nMV Director:金子由里奈\n\n●【初回生産限定盤A】\nEPCE-7867 ¥2,090 (税抜価格 ¥1,900)\n特典:BD付\n\n●【初回生産限定盤B】\nEPCE-7869 ¥2,090 (税抜価格 ¥1,900)\n特典:BD付\n\n●【初回生産限定盤SP】\nEPCE-7871 ¥5,500 (税抜価格 ¥5,000)\n特典:BD付\n\n●【通常盤A】EPCE-7873 定価 ¥1,300 (税抜価格 ¥1,182)\n●【通常盤B】EPCE-7874 定価 ¥1,300 (税抜価格 ¥1,182)\n\n【通常盤】\n特典:トレーディングカードソロ10種+集合1種よりランダムにて1枚封入\n(通常盤A:ちはやぶる Ver.)\n(通常盤B:友達天体図 Ver.)\n\nAmazon⇒https://www.amazon.co.jp/s?k=OCHA+NORMA+%E5%8F%8B%E9%81%94%E5%A4%A9%E4%BD%93%E5%9B%B3&__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=2GU2ZTGWEKQ23&sprefix=ocha+norma+%E5%8F%8B%E9%81%94%E5%A4%A9%E4%BD%93%E5%9B%B3%2Caps%2C153&ref=nb_sb_noss\n\n\n\n#OCHANORMA #オチャノーマ #友達天体図 #ハロプロ #Helloproject",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/Km0GFxhfYoo/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/Km0GFxhfYoo/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/Km0GFxhfYoo/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/Km0GFxhfYoo/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/Km0GFxhfYoo/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "OCHA NORMA",
"tags": [
"OCHA NORMA",
"オチャノーマ",
"Hello! Project",
"ハロプロ",
"ハロー!プロジェクト",
"Idol",
"アイドル",
"J-POP",
"japanese",
"Music",
"お茶の間",
"米村姫良々",
"石栗奏美",
"中山夏月姫",
"窪田七海",
"斉藤円香",
"広本瑠璃",
"西﨑美空",
"北原もも",
"筒井澪心",
"田代すみれ",
"Yonemura Kirara",
"Ishiguri Kanami",
"Nakayama Natsume",
"Kubota Nanami",
"Saito Madoka",
"Hiromoto Ruli",
"Nishizaki Miku",
"Kitahara Momo",
"Tsutsui Roko",
"Tashiro Sumire"
],
"categoryId": "10",
"liveBroadcastContent": "none",
"defaultLanguage": "ja",
"localized": {
"title": "OCHA NORMA『友達天体図』Promotion Edit",
"description": "2024年9月11日発売のOCHA NORMA 4thシングル『ちはやぶる/友達天体図』 から「友達天体図」のPromotion Editです。 \n\n作詞:児玉雨子 作曲:山崎あおい 編曲:炭竃智弘\nMV Director:金子由里奈\n\n●【初回生産限定盤A】\nEPCE-7867 ¥2,090 (税抜価格 ¥1,900)\n特典:BD付\n\n●【初回生産限定盤B】\nEPCE-7869 ¥2,090 (税抜価格 ¥1,900)\n特典:BD付\n\n●【初回生産限定盤SP】\nEPCE-7871 ¥5,500 (税抜価格 ¥5,000)\n特典:BD付\n\n●【通常盤A】EPCE-7873 定価 ¥1,300 (税抜価格 ¥1,182)\n●【通常盤B】EPCE-7874 定価 ¥1,300 (税抜価格 ¥1,182)\n\n【通常盤】\n特典:トレーディングカードソロ10種+集合1種よりランダムにて1枚封入\n(通常盤A:ちはやぶる Ver.)\n(通常盤B:友達天体図 Ver.)\n\nAmazon⇒https://www.amazon.co.jp/s?k=OCHA+NORMA+%E5%8F%8B%E9%81%94%E5%A4%A9%E4%BD%93%E5%9B%B3&__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=2GU2ZTGWEKQ23&sprefix=ocha+norma+%E5%8F%8B%E9%81%94%E5%A4%A9%E4%BD%93%E5%9B%B3%2Caps%2C153&ref=nb_sb_noss\n\n\n\n#OCHANORMA #オチャノーマ #友達天体図 #ハロプロ #Helloproject"
},
"defaultAudioLanguage": "ja"
},
"contentDetails": {
"duration": "PT5M4S",
"dimension": "2d",
"definition": "hd",
"caption": "true",
"licensedContent": true,
"contentRating": {},
"projection": "rectangular"
},
"status": {
"uploadStatus": "processed",
"privacyStatus": "public",
"license": "youtube",
"embeddable": true,
"publicStatsViewable": true,
"madeForKids": false
},
"statistics": {
"viewCount": "38827",
"likeCount": "3121",
"favoriteCount": "0",
"commentCount": "437"
},
"player": {
"embedHtml": "\u003ciframe width=\"480\" height=\"270\" src=\"//www.youtube.com/embed/Km0GFxhfYoo\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen\u003e\u003c/iframe\u003e"
},
"topicDetails": {
"topicCategories": [
"https://en.wikipedia.org/wiki/Music",
"https://en.wikipedia.org/wiki/Music_of_Asia",
"https://en.wikipedia.org/wiki/Pop_music"
]
},
"recordingDetails": {}
}
],
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 1
}
}
このように、新たに公開された「OCHA NORMA『友達天体図』Promotion Edit」の動画情報を完全に取得することができました。第1回で僕はチャンネル毎にYouTube Data APIで最終更新日付以降に公開された動画情報を更新することをボタン押下1回で実現している旨のことを書きましたが、実際にはSearchリソースのリクエストURLとVideoリソースのリクエストURLを発行することで実現してます。こうしたひと手間もしっかりプログラミングすることで、ボタン押下1回で実現することができるのです。
まとめ
以上、ブラウザでのYouTube Data APIの実行サンプルを示してきましたが、割と簡単にかつわかりやすく利用できることが分かったかと思います。ブラウザだけで実行できるので、上記のサンプル以外でもYouTube Data APIの仕様書ページを見ながらリクエストを色々試してみて、そこで取得できる内容を確認してプログラムからの利用イメージを膨らませてからプログラムの設計・開発に臨むのがよいと思います。
次回は、Excel VBAを使った利用方法を説明します。
コメント