【R】YouTube Data APIを使って「にじさんじ」でランキングを作成してみる

前回は、YouTube Data APIを使って、にじさんじのデータを取得してみた。

今回は、視聴回数とレイティングでランキングを作成してみる。

準備

APIキーなどをベタ打ちするのは良くないので、api_key.txtに保存し、それを読み込む処理に変更。

library(tidyverse)

api_key <- read_lines("api_key.txt")
keyword <- "にじさんじ"

APIのURIの作成と実行を関数にする。

genApiUrl <- function(ep, params){
 query <- paste0(sprintf("%s=%s", names(params), params), collapse = "&")
 api_url <- sprintf("https://www.googleapis.com/youtube/v3/%s/?%s", ep, query)
 api_url
}

executeYdApi <- function(ep, params, ...){
 api_url <- genApiUrl(ep, params)
 res <- RCurl::getURL(api_url, .encoding = "UTF-8", ...) %>%
   jsonlite::fromJSON()
 res
}

視聴回数でランキング

検索結果の並べ替えはorderで指定する。視聴回数の場合は、order="viewCount"。

res_view_count <- executeYdApi(
 "search",
 params = c(key=api_key, 
            part="snippet",
            q=keyword,
            type="video",
            order="viewCount",
            maxResults=10)
)

res_view_count$items$snippet %>%
 select(title)

スクリーンショット 2021-01-21 13.50.29

統計情報を追加する。

video_ids <- res_view_count$items$id$videoId

video_vc <- executeYdApi(
 "videos",
 params = c(key=api_key, part="statistics", id=paste0(video_ids, collapse = ","))
)
view_count_rank_data <- res_view_count$items$snippet %>%
 select(title) %>%
 bind_cols(video_vc$items$statistics)

view_count_rank_data

スクリーンショット 2021-01-21 13.52.14

レイティングでランキング

評価の高い順の並べ替えは、order="rating"。

res_rating <- executeYdApi(
 "search",
 params = c(key=api_key, 
            part="snippet",
            q=keyword,
            type="video",
            order="rating",
            maxResults=10)
)

統計情報を追加。

video_ids <- res_rating$items$id$videoId

video_r <- executeYdApi(
 "videos",
 params = c(key=api_key, part="statistics", id=paste0(video_ids, collapse = ","))
)
rating_rank_data <- res_rating$items$snippet %>%
 select(title) %>%
 bind_cols(video_r$items$statistics)

rating_rank_data

スクリーンショット 2021-01-21 13.55.56

高評価(likeCount)が多い順に並ぶのかと思っていたが、違うようだ。

おわりに

今回は、YouTube Data APIを使ってランキングを作成してみた。次は、動画情報やチャンネル情報を使って何かやってみたいと思う。

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