YouTube Data API v3の検索をRubyで触ってみた①

APIでデータを集めるコンテンツを作成したいと思い、YoutubeのAPIに触ってみました。

GoogleDevelopersのRubyのサンプルコードを実際に実行してみても動かなかったので、その理由を調べてみました。

YouTube Data API v3の使い方には2つの方法があるようです。(他の方法もあるかもしれませんが)

1つ目は、GoogleDevelopersのサンプルにも書いてある方法で、「google-api-client」というgemを使う方法です。
2つ目は、URLを直に書いてしまう方法です。

どちらを使うにしてもDEVELOPER_KEYが必要です。

google-api-clientで動かなかった理由について

1つ目の方法はサンプルコードを見ると以下のような仕組みでキーワード検索をするようです。(最初に書いた通りgemをただインストールするだけでは動きませんが)

#クライアント作成(google-api-clientを使用)
client = Google::APIClient.new(
    :key => DEVELOPER_KEY,
    :authorization => nil,
    :application_name => $PROGRAM_NAME,
    :application_version => '1.0.0'

#APIの知りたい情報などを作成
search_response = client.execute!(
      :api_method => youtube.search.list,
      :parameters => {
        :part => 'snippet',
        :q => opts[:q],
        :maxResults => opts[:max_results]
      }
    )
#結果の受け取り
search_response.data.items.each do |search_result|
      case search_result.id.kind
        when 'youtube#video'
          videos << "#{search_result.snippet.title} (#{search_result.id.videoId})"
        when 'youtube#channel'
          channels << "#{search_result.snippet.title} (#{search_result.id.channelId})"
        when 'youtube#playlist'
          playlists << "#{search_result.snippet.title} (#{search_result.id.playlistId})"
      end
    end

上記のように綺麗にコードが書けるよい方法なのですが、現在は動きませんでした。

理由を調べた所「google-api-client」というgemが現在は0.9.4なのですが、0.8から0.9になるときに仕様が変わって上記のような方法では動かないという変更があったそうです。

現在の「google-api-client」のGitHubの READMEを見ると、使い方の例の雰囲気が変わっている気がしたので、私は直にURLを書いてしまう方法にすることにしました。

もし上記の方法を取る場合は0.9の新しい方法を調べるか、0.8の「google-api-client」をインストールするという方法がするのがあります。(0.9.4で使える方法を知っている方がいたら、教えて頂けると助かります)

URLを直に各方法については別の記事で紹介します。
YouTube Data API v3の検索をRubyで触ってみた② - crossfabricateのブログ