【Rails】東海オンエアから学ぶYouTube Data API(概要と基本的なリクエストの送り方)

投稿日:

プログラミング初心者の勉強ブログ #110

YouTube Data APIをRailsで使う場合、どのようにデータを取得できるかを確認してみた。このようなAPIを使って、何かサービスのアイデアのきっかけにでもなればと思ったからである。とりあえず基本的なリクエストの送り方と、得られる情報含め、感想を書こうと思う。

 

目次

 

YouTube Data API

YouTube Data APIサムネイル

Google Developersの中の1つに、この「YouTube Data API」が存在する。Oauth用のAPIとかと同じで、Googleが提供するAPIの一つとして提供されている。

このAPIを使って得られるレスポンス、つまりYouTubeさんのDBから参照できるデータについて軽くまとめてみる。

API Reference | YouTube Data API (v3) | Google Developers

基本的に上記のリファレンスをもとに色々試したことを書いていく。具体的な例があった方がわかりやすいので、今回はみんな大好き「東海オンエア」からYouTube Data APIでできることを見ていこうと思う。

 

前提として

「YouTube Data API」は簡単に言えば、「YouTubeさんのDBを元に、指定したデータを参照できる、または、指定したアクションを実行してくれるサービス」である。Railsでの具体的な実装方法は後として、

  • gem「google/api_client」のインストール
  • YouTubeAPIのAPIキー取得

この二つを行うことで生成できる「client」インスタンスのメソッドを使うことからAPIの利用が始まる。今回は「指定したデータを参照」する方面のみ書いている。「指定したアクションを実行してくれる」については、またいつかやってみたいと思う。

 

リファレンス抜粋

 

このclientインスタンスによって、「youtube」インスタンスが生成できる。

 

リファレンス抜粋

 

このyoutubeインスタンスが、実際にYouTubeさんのDBとの通信を行うことができるメソッドを持っている。この流れがこのAPIの基礎である。clientから生成されたyoutubeインスタンスの様々なメソッドを使っていくことで、色々なデータを取得ができる。

 

東海オンエアから学ぶYouTube Data API

リファレンスをみると色々載っているが、実際に興味あるデータで考えた場合、YouTubeさんのDBから取得できるデータで主役となるのはチャンネル情報(channelsメソッド)と動画情報(videosメソッド)かなと思うので、そこをメインにまとめていく。また、キーワードや属性によってチャンネルや動画を探す、検索(searchメソッド)もあるので、これもまとめる。とりあえず題材は全て「東海オンエア」である。(厳密には東海オンエアからは学んでいない。)

search

searchについては、

Ruby コード サンプル | YouTube Data API (v3) | Google Developers

リファレンスにRubyで書いてあるので、こっちみた方が確かな情報である。

メインのコードは

 

リファレンス抜粋

 

これである。

 

※opts[:q]やopts[:max_results]は、

ここで設定したものであり、「Trollop」とは、gem「trollop」のインストールにより利用できるオブジェクトとなる。このgemも「google-api-client」と同じく予めインストールする。

 

細かくみていく。まず、

ここではapi_methodを何にするかを書き込んでいる。youtubeインスタンスに対し、「search」というメソッドを当てている。更につながる「list」というのは、channelsリファレンス

これはリファレンスのスクショだが、listはchannelsのメソッドの1つであり、「リクエスト条件に一致するゼロ個以上の channel リソースを返します。」とある。要は、検索結果は複数あるけど、それをリスト(Rubyの配列)のデータ型で返しますよ、というメソッドとなる。

次に

ここだが、これはレスポンスのデータの設定になる。下二つはoptsに関してであり、先ほとのコードを見ればなんとなくわかるが、気になるのはpartの行。

partに対し、snippetを設定している。最初見たときは意味わからなかった。リファレンスを見ると、

partリファレンス

 

こう書いてあるが、正直これを見てもピンとこなかった。 そこで、改めてレスポンスのデータの構造を確認してみる。

channelリソース表現

これは、レスポンスで帰ってくるchannelリソースのJSONの構造体だ。こんな感じハッシュ名と入れ子構造でchannelデータは形成されているということか。見覚えのある単語がある。「snippet」だ。partパラメータの説明には「contentDetails」もあったが、どうやらこれを指定するのがpartパラメータの役割らしい。確かにこの構造体全て含めた長ったるいデータのやりとりはしたくない。

仕組みは何となく確認できたので、実際にリクエストを送ってみる。

今回はデフォルトの検索ワードに「東海オンエア」を入れ、レスポンスは3つにした。 partもタイトルや概要コメントがわかるsnippetのまま検索する。

まずはsearch_responseをそのまま表示してみる。

serch_response

ちゃんと東海オンエアの情報がかえってきている。チャンネル名とは別に、一意に識別するためのchannelIDを確認。JSON形式の東海オンエアは面白くない。やっぱりYouTubeで見るべきだと再確認。

もう少しキレイに表示するには、

のようにすると、検索ヒットしたデータのみを配列で取り出せる。

検索結果のみのデータを表示

今回は3つ取得だったのでこれらが上位3ヒットだったのかなと、[0]がチャンネル情報、[1]と[2]はどちらも最近投稿された動画情報だ。list形式の東海オンエアの動画も、このように面白くない。

 

Channels

ここからはおまけです。先ほど取得した検索結果より、東海オンエアのchannelIdとvideoIdがわかったので、それぞれ直接リクエストしてみます。

少し変えるだけです。 youtube.channels.listとすることでリクエストします。

結果、

channel結果

東海オンエアのこの時点でのチャンネル登録者数は、約435万人だということがわかります。総再生数も約37億再生です。ブログやってみると、この数字がやばい規模感であることをより認識できます。

 

videos

これもchannelとほとんど同じです。

最後に、snippetから取得できる東海オンエアの概要欄のコメントを表示させてみます。

東海オンエア概要欄

スマホだと読みづらいかもしれません。てか気になる方は動画見た後概要欄読みましょう。

 

まとめ

楽しい勉強でした。何かしらの形で、このYouTube APIを使ったものを作りたいと思ってます。一つだけアイデアが浮かんだので、とりあえずそれは作成しようと思ってます。興味のあることから勉強することで、きっと自分が活躍できる仕事にたどり着けるんだろうなと思ってます。ポジティブな発言もたまには加えてみます。

以上ありがとうございました。

-プログラミング学習
-, ,

Copyright© s u p ? , 2019 All Rights Reserved.