YoutubeのプレイリストをSlackから操作しようとして失敗した話

#api#Youtube

今使っているコワーキングスペースで音楽を流してくれています。 しかしPCをスピーカーに繋いでスタッフが一人曲の度に操作していて幸せではない。 これ自動化できたらいいし、なんなら利用者が自由に再生してほしい音楽を登録できたら幸せだな、と思った次第です。   やりたいこと

  • Slackから共用Youtubeのプレイリストに曲

  結論を言うと、望んだことはできませんでした。 プレイリストへの曲の追加はプレイリストを作成したユーザのアカウントでOAuth認証しなくてはならないので。 APIキー発行できるので、そのユーザのアカウントでAPIキー発行すれば誰でも編集できるかと思ったのですが無理でした。 せっかくなので途中までの経緯を残します。   Slack bot作成に関してはこっちでまとめした。

Youtube Data API v3

再生リスト作成

まずはYoutubeで再生リストを作ります。 空の再生リストは作れないので、最初の一曲だけ追加しましょう。   画像は最近お気に入りの曲ペルソナ4 ダンシング・オールナイトの主題歌「Dance!」です。ノリノリのアップテンポです。   これで再生リストが作られたのでIDを確認できます。 ライブラリから今作成したプレイリストを開きましょう。 URLにlistというクエリパラメータが表示されるのでそれをメモっておきます。   YouTube Data APIの公式でAPIを叩いてプレイリストを取得できるかチェックしましょう。 Playlistsのlistを開きます。 以下の説明を見ると、partに文字列でid、idにplaylistのidを指定すれば良さそうです。

出典: Playlists: list

  実際に試してみます。 partに文字列でid、idには先ほどコピペしたプレイリストのidを入力します。   EXECUTEをクリックするとOAuth認証画面が出ます。 うまく行けば、ステータスコード200番とともに内容が返ってきます。 APIでプレイリストを認識することができました。 *この時点で下の認証方法にAPIキーが選択可能でした。勝手な思い込みで「よしよしAPIキーでいけるな」と思ってました。

APIを叩いて曲を追加

次はYouTube Data APIを使って曲を追加してみましょう。 今度はペルソナQのオープニングを追加します。 ポップですね。動画のidはw0M7u4iX3scです。メモっておきましょう。   PlaylistItemsのinsertを開きます。 以下の例を参考にpartをsnippetにして、playlistIdとresourceIdを指定して実行。

出典: Adding a video to a playlist

  ブラウザでプレイリストを開いてみます。 ちゃんと追加されていました!

APIキーによる認証ではプレイリストに動画を追加できない

ここまではOAuth認証で実行しました。 つまり、実行時にGoogleアカウントへのログインが確認されていました。   ちなみにAPIキーを発行してYoutube Data APIを利用することもできるのですが、利用できるサービスの範囲が異なります。 APIキーではアカウントに関する情報はアクセスできません。 今回の例で言えば、プレイリストの内容の取得は(公開リストであれば)公の情報なのでAPIキーで取得できます。 一方、プレイリストへの追加は作成したユーザのみに許された行動なのでOAuth認証が必要になります。   ちゃんと上の方に書いてあるんですが、よく読んでなかったです。 確かに今確認したところ、以下の文言PlaylistsのlistにはなくてPlaylistItemsのinsertにはちゃっかり書いてあるんです。 listとinsertで認証の厳しさが違うってことでした。   ちなみに、APIキーの取得方法は以下の通り。 自分のアカウントでGoogle APIsのリソースマネージャにログインします。 プロジェクトを作成から適当に今回用のプロジェクトを作ります。   YouTube Data API v3を検索します。 有効にするをクリック。   こんな画面になるので「認証情報を作成」。   必要な情報を入力して、   問題なければAPIキーが発行されます。メモしておきましょう。

利用料金

Cloud consoleから無料枠の確認ができます。 1,000,000ユニットが1日の無料枠として割り当てられています。 1回に10や100ユニットしか使わないようなので、よっぽどのことがない限り無料で使えるでしょう。   以下のページで利用料金を試算することができます。 使用するAPIに応じて利用する割り当ての量が変わるので気をつけてください。 また公に公開する際も料金にお気をつけを。

まとめ

Youtube Data API経由でプレイリストに動画を追加する場合はOAuth認証が必要になります。 つまり自分のプレイリストに曲を追加できるのは自分だけ。 共用プレイリストにみんなで曲を入れいていくって言うのはうまくできなさそう。 専用のGoogleアカウントを共有すればできるけど、切り替え面倒だし。 そこまでするならマニュアルで追加していった方が早い。   Slack bot作る方に関してはこっちにまとめました。

参考