クイックノート

ちょっとした発見・アイデアから知識の発掘を

【R】APIを使ってYouTubeのサムネイルを設定する【tuber】

YouTube に動画を投稿する場合、
ほぼ必ず設定するのがサムネイルです。

通常であれば、手動で動画の投稿、
サムネイルの設定を行いますが、
これがすべてプログラムで自動でできると、
なにかと捗ります。

YouTube では API が提供されていて、
これを利用することで、
プログラムから動画の投稿やサムネの設定が行えます。

R でもこの API を利用するためのパッケージ「tuber」があるのですが、
動画のアップロードまでは対応していますが、
サムネイル画像の設定までは対応していません。

ここでは、ちょっと手を加えることで、
サムネイル画像の設定を設定する方法を紹介します。

準備

YouTubeAPI を利用するために、
API を有効にすることと、
tuber のインストールが必要です。

API の有効化

Youtube API を有効にするには、
Google アカウントが必要ですが、
そもそも動画投稿するからには持っているはずなので、
アカウント作成の手順は省きます。

プロジェクトを作成する

Google ではプロジェクト単位でAPI の管理を行っています。

↓の記事を参照して、プロジェクトを作成しましょう。 既存のプロジェクトを利用する場合はこの手順は不要です。

clean-copy-of-onenote.hatenablog.com

YouTube API を有効化する

YouTube API を有効にします。

  1. Google Cloud Platformにアクセスする

  2. 検索窓に「youtube data」と入力 f:id:u874072e:20181016160348p:plain:w300
  3. YouTube Data API v3 を有効にする f:id:u874072e:20181016160420p:plain:w300

認証情報を作成する

API を有効にすると、API 利用時に必要な認証情報の作成に進みます。

f:id:u874072e:20181016160542p:plain

この時に表示される
クライアントIDクライアントシークレット
は忘れないように保管しましょう。

tuber のインストール

tuber は R 上で次のコマンドを実行することでインストールします。

devtools::install_github("soodoku/tuber", build_vignettes =TRUE)

これで準備完了です。

サムネイルを設定する

YouTube API で提供されているのは、
すでにアップロードした動画に対して、
後付けでサムネイルを設定するAPIです。

このAPIを利用する関数は「tuber」パッケージの中にはないので、
自前で作る必要があります。

ということで次のset_thumbnail関数を作りましょう。

set_thumbnail = function(vid,file){
  body <- list(media=httr::upload_file(file))
  yt_check_token()
  req <- httr::POST("https://www.googleapis.com/upload/youtube/v3/thumbnails/set", 
                    body = body, query = list(videoId=vid), config(token = getOption("google_token")))
  return(req)
}

yt_check_token <- function() {
  app_token <- getOption("google_token")
  if (is.null(app_token)) stop("Please get a token using yt_oauth().\n")
}

set_thumbnailでは、サムネイルを設定したい動画のIDvidと、
設定するサムネイル画像のファイルパスfileを指定することで、
動画にサムネイルが設定されます。

APIの認証にはtuberで行う認証をそのまま行うようにしています。

実行例

実際に利用する際には、
APIの認証→(動画のアップロード)→サムネイルの設定
という手順になります。

ここでは、その手順にそって、実行例を示します。

API の認証

library(tuber)

YOUTUBE_API_ID="[クライアントID]"
YOUTUBE_API_PASS="[クライアントシークレット]"

yt_oauth(YOUTUBE_API_ID,YOUTUBE_API_PASS)

クライアントID及び、クライアントシークレットには、
認証情報の作成で生成した文字列を入力します。

動画のアップロード

サムネを設定する動画がないと話にならないので、
動画をアップロードしてみましょう。

動画をすでに投稿している場合は、 URLから動画のIDを抽出すればOKです。

res = upload_video("[動画ファイル]")

これで、指定した動画ファイルがアップロードされます。
resに動画IDを含めた動画の情報が格納されています。

サムネイルの設定

それでは、先ほど投稿した動画にサムネイルを設定しましょう。

set_thumbnail(res$content$id,"[サムネイル画像ファイル]")

これだけでサムネイルの設定が完了します。

後は適当に自動化しておけば、 毎回手動でやってた手間が大幅に省けますね。

まとめ

R 上からAPIを使ってYouTubeのサムネイルを
設定する方法について紹介しました。

パッケージに用意されてない機能は自分で作ってしまうのがいいですね。

プライバシーポリシー