【YouTube Data API】Youtubeの動画の諸データを取得する
公式にも使用方法が纏まっていたが、一応纏めた。
前準備
以下のサイトの「作業を始める前に」に従って準備をする。
Youtube Data API の概要
情報の取得方法
動画の情報を取得する際は、
https://www.googleapis.com/youtube/v3/videos?id={videoID}&key={apiKey}&part={parts}&fields={fields}
のURLを叩けば良い。(fieldsは任意)
idパラメータはビデオID(動画のURL末尾の11桁の英数記号)、keyパラメータはAPIキーを指定する。
partパラメータ(必須)
このパラメータは、取得する情報の大まかな種類を決める。「大まかな」と書いたのは、最上位のカテゴリしか指定できないからだ。
より細かい項目ごとの指定は、この後解説する"fields"パラメータで行う。
よく使うところとしては、
- snippet 動画の基本的な情報(タイトル、説明、カテゴリなど)が格納される。
- contentDetails 動画の長さとアスペクト比を含む、動画コンテンツに関する情報が格納される。
- status 動画のアップロード、処理、プライバシーのステータスに関する情報が格納される。
- statistics 動画に関する統計情報が格納される。
具体的な取得できる値については公式サイトに乗っている。
fieldsパラメータ(任意)
詳しく所得する情報を指定できるこのパラメータは、階層構造にそって指定していく。説明するより具体例を見たほうが良いと思うので、具体例を紹介する。(パラメータのところのみ掲載。)
- snippet内のデータのみ取得 : fields=items(snippet(title))
- 動画名のみ取得 : fields=items(snippet(title))
- 動画IDと公開日時、動画名を取得 : fields=items(id,snippet(publishedAt,title))
もちろん、上記の例では part=snippet は必須になる。
ソースコード
以上を踏まえて、動画名を取得するコードをC#で記述してみる。
string youtubeID = "jNQXAC9IVRw"; string apiKey = "*****";//自分の取得したAPIキー //YoutubeビデオIDが有効か if(Regex.IsMatch(youtubeID, @"[0-9a-zA-Z-_]{11}")) { //APIを叩く string youtubeDataJson = Encoding.UTF8.GetString(wc.DownloadData($"https://www.googleapis.com/youtube/v3/videos?id={youtubeID}&key={apiKey}&part=snippet&fields=items(snippet(title))")); //最後の"までを削除 youtubeDataJson = youtubeDataJson.Remove(youtubeDataJson.LastIndexOf("\"")); //最後の"から後だけ残す(これで動画名の取得) youtubeDataJson = youtubeDataJson.Substring(youtubeDataJson.LastIndexOf("\"") + 1); }
ゴリゴリと削って動画名を取得しているが、Json.NETというJson形式のファイルをキレイにデコードしてくれるNuGetパッケージもあるので、そちらもおすすめだ。