【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が完成する。
どんなパラメータがあるかは、公式リファレンスを見てほしい。
実行結果は、以下のようなものになる。
さて、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
検索の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
続いて、チャンネルの統計情報。
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
おわりに
今回は、YouTube Data APIを使って、任意のデータ取得出来る事を確認した。次回以降、もっと汎用的に使えるように実装を進めていこうと思う。
気が向いたら、パッケージ作って公開するかも知れない。
この記事が気に入ったらサポートをしてみませんか?