質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

解決済

Youtube API 視聴回数の取得

isumidaichi
isumidaichi

総合スコア7

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

1回答

0リアクション

0クリップ

3924閲覧

投稿2018/03/01 13:03

編集2018/03/01 13:06

Youtube公式サイトをいじり、Rubyで動画情報の取得を試みています。
以下がコードです。

Ruby

class Youtube < ApplicationRecord require 'rubygems' gem 'google-api-client', '>0.7' require 'google/api_client' require 'trollop' DEVELOPER_KEY = ######################### YOUTUBE_API_SERVICE_NAME = 'youtube' YOUTUBE_API_VERSION = 'v3' def self.get_service client = Google::APIClient.new( :key => DEVELOPER_KEY, :authorization => nil, :application_name => $PROGRAM_NAME, :application_version => '1.0.0' ) youtube = client.discovered_api(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION) return client, youtube end def self.main opts = Trollop::options do opt :q, 'Search term', :type => String, :default => 'アウディ' opt :max_results, 'Max results', :type => :int, :default => 5 end client, youtube = get_service begin # Call the search.list method to retrieve results matching the specified # query term. search_response = client.execute!( :api_method => youtube.search.list, :parameters => { :part => 'snippet', :q => opts[:q], :maxResults => opts[:max_results] } ) urls = [] titles = [] descriptions = [] channels = [] thumbnails = [] views = [] # Add each result to the appropriate list, and then display the lists of # matching videos, channels, and playlists. search_response.data.items.each do |search_result| case search_result.id.kind when 'youtube#video' urls << "http://www.youtube.com/watch?v=#{search_result.id.videoId}" titles << "#{search_result.snippet.title}" descriptions << "#{search_result.snippet.description}" channels << "#{search_result.snippet.channelTitle}" thumbnails << "#{search_result.snippet.thumbnails.default.url}" views << "#{search_result.statistics.viewCount}" end end puts "Urls:\n", urls, "\n" puts "Titles:\n", titles, "\n" puts "Descriotions:\n", descriptions, "\n" puts "Channels:\n", channels, "\n" puts "Thumbnials:\n", thumbnails, "\n" puts "Views:\n", views, "\n" rescue Google::APIClient::TransmissionError => e puts e.result.body end end end

視聴回数を取得するために、下記の:partの部分を 「:part => 'snippet, statistics'」としているのですが、エラーが出ます。

search_response = client.execute!( :api_method => youtube.search.list, :parameters => { :part => 'snippet', :q => opts[:q], :maxResults => opts[:max_results] } )

####エラー画面

{ "error": { "errors": [ { "domain": "youtube.part", "reason": "unknownPart", "message": "statistics", "locationType": "parameter", "location": "part" } ], "code": 400, "message": "statistics" } }

statisticsは視聴回数を取得するためのプロパティだと認識しています。
どこが間違っているのでしょうか。ご教授お願いいたします。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。