【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)
統計情報を追加する。
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
レイティングでランキング
評価の高い順の並べ替えは、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
高評価(likeCount)が多い順に並ぶのかと思っていたが、違うようだ。
おわりに
今回は、YouTube Data APIを使ってランキングを作成してみた。次は、動画情報やチャンネル情報を使って何かやってみたいと思う。
この記事が気に入ったらサポートをしてみませんか?