クイックノート

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

【R】複数のチャンネルを切り替えて動画投稿する【tuber】

R から YouTubeAPIを利用するのに便利なパッケージが「tuber」です。

これを使うと、動画投稿を自動化したり、
サムネイル画像の設定を自動化することができます。

clean-copy-of-onenote.hatenablog.com

動画投稿の際には、
動画のテーマに応じて、
別々のチャンネルに投稿したいということがよくあります。

このチャンネルを切り替えて動画投稿をすることも、
tuber でもちろんできるのですが、
その方法が分かりづらかったのでまとめておきます。

サブチャンネルの作り方

まずは、複数チャンネルを用意しましょう。
すでに持たれている方はこの手順はスキップして下さい。

  1. https://www.youtube.com/channel_switcher にアクセスする
  2. 「新しいチャンネルを作成」をクリック f:id:u874072e:20181019161738p:plain
  3. チャンネル名を設定
  4. 携帯メール or SMS で確認コードを受け取り入力 f:id:u874072e:20181019162019p:plain

tuber でのチャンネル切り替え

YouTubeAPI では、認証を行う際に、
チャンネルに紐づけて認証が行われます。

そのため、チャンネルを切り替えるには、
別のチャンネルで認証を行うことで切り替えが行えます。

とはいえ、毎回手動で認証していては自動化できないので、
認証済みのトークンをチャンネル毎に取得して、
このトークンを切り替えることでチャンネルの切り替えを実現します。

tuberでは、このトークンの切り替えが少々やっかいになります。 というのも、tuber で用意された認証の関数yt_oauthを使うと、
トークンは.httr-oauthにしか保存できないからです。
このままだと、一つのチャンネルの一つのトークンしか持っておくことができません。

複数のトークンを用意する

デフォルトの認証方法では、トークンが同じファイルに書き込まれてしまうので、
認証を別に行い、その時のトークンを残すようにしましょう。

トークンを別途生成する

認証は次で行います。

google_token = oauth2.0_token(oauth_endpoints("google"),
                              oauth_app("google",
                                     "[クライアントID]",
                                     "[クライアントシークレット]"),
                              scope = "https://www.googleapis.com/auth/youtube.force-ssl")

[クライアントID][クライアントシークレット] には認証のための情報を入力します。

上を実行すると、ブラウザ画面が開き、 アカウントの選択及びチャンネルの選択が要求されます。

この時選択したチャンネルに対するトークンがgoogle_tokenに格納されます。

トークンを保存する

トークンを取得したら、
チャンネル毎にトークンを別のファイルに格納しておきましょう。

save(google_token, file = "token1")

これでtoken1というファイルに先ほど生成したトークンが保存されます。

上の手順をそれぞれのチャンネル毎に行うことで、
チャンネル毎のトークンファイルを生成します。

トークンを読み込んで動画を投稿する

上でチャンネル毎のトークン生成が終わったら、
後は、必要に応じてトークンを読み込み、
動画を投稿すれば、トークンに対応したチャンネルに投稿することができます。

トークンの読み込み

トークンの読み込みは次の手順で行います。

load("token1")
options(google_token=google_token)

loadでファイルに保存したトークンを読みだして、
tuberで使うトークンとして、optionsgoogle_tokenとして設定しています。

チャンネル切り替えの確認

上の操作で実際にチャンネルを切り替えれているかどうかは、
tuber で現在扱っている自分のチャンネルを表示してみれば分かります。

現時点で選択しているチャンネルは、次のようにして確認することができます。

get_channel_stats(mine=T)

これで、現在認証を行っている自分のチャンネルの情報が表示されるので、
それが今から投稿しようとしているチャンネルと合っているかを確認しましょう。

チャンネルに動画を投稿する

チャンネルに動画を投稿するときは、通常のtuberで動画を投稿する手順と同じです。

upload_video("[動画ファイル]",snippet = list(title="[タイトル]",
                                           description="[動画説明欄]")

これで、読み込んだトークンに対応したチャンネルに動画が投稿されます。

まとめ

tuber を利用してRからYouTubeに動画を投稿するときに、
複数のチャンネルを切り替える方法をまとめました。

チャンネルを切り替えるには、認証しているチャンネルを、
トークンを利用して切り替えることになりますが、
tuber で用意されているyt_oauthでは複数のチャンネルのトークンを保存することができないので、
自前でトークンを用意するというのがポイントですね。

あとは、トークンを都度読み込めば、チャンネルの切り替えが実現できました。

プライバシーポリシー