高見知英の技術ログ

技術関係のログをQiitaから移行してきました。プログラミングのほか、使っているアプリの細かい仕様についてなど書いていきます。

YouTubeの動画をプレイリストに自動登録するツールを作った

YouTubeには、以前プレイリストに動画を自動追加する機能がありました。ただ、いつの間にかこの機能は削除されてしまいました。

アップロードした動画の場合はアップロード中の設定画面でプレイリストを選択できるのでそんなに登録し忘れることはないのですが、ライブ配信の場合、プレイリストに動画を登録するタイミングがないので忘れてしまいがちです*1

そんなことで動画を自動的にプレイリストを自動登録するツールをGASで作りました。

gist.github.com

使い方

使い方はこのスクリプトをGASの新規プロジェクトに貼り付けるだけ。トリガーを設定して定期的に実行するように設定すればすぐ使えます。

以下の条件をすべて満たす動画が直近にアップロードされた50件の動画にあったときに、その動画をプレイリストに登録します。

  • 動画のタイトルの先頭が「プレイリストの名前:動画のタイトル」になっている(:は全角でも半角でも構いません)
  • その名前のプレイリストが存在する
  • そのプレイリストに該当の動画が登録されていない

プレイリストの自動作成などは(想定外のプレイリストが作られないように)行っていませんので、比較的安心して動かせるツールかと思います。

やってること

やってることは単純で、次のような処理を行っています。コメントにも一応書いてありますが。

  1. まず自チャンネルの情報と自チャンネルのプレイリスト一覧、最新50個の動画一覧を取得する。
  2. ビデオをForeachでまわして「プレイリストの名前:動画のタイトル」になっている動画を探す。
  3. プレイリストの名前が実在するプレイリストであるかどうか確認する(そうでなければcontinue)。
  4. 3で見つけたプレイリストに、探した動画が既に登録されているかどうか確認する(もうあればcontinue)。
  5. プレイリストに動画を登録する。

YoutubeAPIはOAuthを使うなど事前準備が多くて面倒ですが、Google Apps Scriptであれば簡単に使うことができますので便利です。レコードの構造が複雑だったりしてやや使いづらいのは変わり無しですが・・・。

注意点

Google Apps ScriptのYouTube APIには、YouTube.newPlaylistItemSnippet()などのメソッドがあり、おそらくAPIの動作に有用なレコードを生成することができます。

ただし、例えば階層構造があるレコードなどそのままメソッドを呼んだだけでは動作しないものがあるため、これらは使わずGoogle Apps Scriptのリファレンスにかかれているレコードを自分で作ったほうがよさそうです。

参照情報

*1:とくにStreamYardやRECentralなどを使って動画枠を作成し配信する場合、YouTubeを表示するタイミング自体が全くありませんので