【R】YouTube Data APIを使って「にじさんじ」のデータを取得してみる

YouTubeは、実は様々なAPIを提供しており、結構いろんなデータ取れる。
例えば、こちら。

チャンネルや動画の情報や、検索結果を取得することが出来る。
今回は、このAPIを使ってデータを取得するところまでを紹介したい。

APIキーの取得

まず最初に、APIキーというものを取得する必要がある。
取得していない方は、こちらを参考に取得して欲しい。

検索結果の取得

APIキーが入手出来たら、あとは取得したいデータのAPIを叩くだけだ。
Webに詳しくない方のために、簡単に説明すると、YouTube Data APIのようなWeb APIを使ったデータ取得は、取得したい条件をパラメータとしたURLを作成してアクセスするだけだ。

例えば、今流行っている「にじさんじ」について検索した場合のデータを取得する場合、以下のようなURLになる

https://www.googleapis.com/youtube/v3/search?key=<取得したAPIキー>&part=snippet&q=にじさんじ

?以降がパラメータで、パラメータ名1=パラメータ値1&パラメータ名2=パラメータ値2&... のようにパラメータの指定を&で繋げてURLが完成する。
どんなパラメータがあるかは、公式リファレンスを見てほしい。

実行結果は、以下のようなものになる。

スクリーンショット 2021-01-20 15.42.56

さて、JSON形式のままでは、人間にやさしくないので、Rを使って利用しやすい形にしてみる。

RでAPIを利用する

今回は、Rでやってみる。Rで、Web APIを利用するには、RCurlパッケージを使う。RCurlパッケージのgetURL関数を使うと、指定したURLのコンテンツを読み込むことが出来る。
YouTube Data APIは、JSON形式であるので、読み込んだJSONを処理するために、jsonliteパッケージのfromJSON関数を利用する。

library(tidyverse)

app_key <- "<取得したAPPキー>"
keyword <- "にじさんじ"
url <- sprintf("https://www.googleapis.com/youtube/v3/search?key=%s&part=snippet&q=%s",
              app_key, keyword)

x <- RCurl::getURL(url, .encoding = "UTF-8") %>%
 jsonlite::fromJSON()

結果は、リスト形式となっており、欲しい情報を変数名で辿っていくことでアクセス出来る。

x$items$snippet

スクリーンショット 2021-01-20 15.51.19

検索の1番目の動画について、動画とチャンネルの統計情報を見てみる。

videoId <- x$items$id$videoId[1]
url <- sprintf("https://www.googleapis.com/youtube/v3/videos?key=%s&part=statistics&id=%s",
              app_key, videoId)

video <- RCurl::getURL(url, .encoding = "UTF-8") %>%
 jsonlite::fromJSON()

video$items$statistics

スクリーンショット 2021-01-20 16.07.26

続いて、チャンネルの統計情報。

channelId <- x$items$snippet$channelId[1]
url <- sprintf("https://www.googleapis.com/youtube/v3/channels?key=%s&part=statistics&id=%s",
              app_key, channelId)

channel <- RCurl::getURL(url, .encoding = "UTF-8") %>%
 jsonlite::fromJSON()

channel$items$statistics

スクリーンショット 2021-01-20 16.08.25

おわりに

今回は、YouTube Data APIを使って、任意のデータ取得出来る事を確認した。次回以降、もっと汎用的に使えるように実装を進めていこうと思う。
気が向いたら、パッケージ作って公開するかも知れない。

この記事が気に入ったらサポートをしてみませんか?