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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

YouTube API

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

Q&A

解決済

1回答

3113閲覧

youtubeから視聴回数をとって来たい

makioo

総合スコア28

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

YouTube API

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

0グッド

1クリップ

投稿2018/09/19 03:26

編集2018/09/19 10:10

youtube api 検索の仕方

ここを参考にしながらYoutubeで検索をかけてその結果の動画の視聴回数をとってこようと思ったのですが、視聴回数がとってこれません

search.setFields("items(id/kind,id/videoId,snippet/title,snippet/thumbnails/default/url)");

の部分からよりそもそもstatisticsを持ってきていないから当たり前なのですがstatisticsをいれようとするとInvalid fieldと言われました。
ご教授お願いします。

###追記
fieldについてこのあたりを見るととってこれそうな感じもするのですが...

search.setFields("items(id/kind,id/videoId,snippet/title,snippet/thumbnails/default/url)");

この部分をコメントにしてすべての情報を持ってきてみるとそもそもstatisticsは入っていませんでした。]

import com.google.api.client.googleapis.json.GoogleJsonResponseException; import com.google.api.client.http.HttpRequest; import com.google.api.client.http.HttpRequestInitializer; import com.google.api.client.http.HttpTransport; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.JsonFactory; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.services.youtube.YouTube; import com.google.api.services.youtube.model.ResourceId; import com.google.api.services.youtube.model.SearchListResponse; import com.google.api.services.youtube.model.SearchResult; import com.google.api.services.youtube.model.Thumbnail; import com.google.api.services.youtube.model.VideoStatistics; import com.google.api.services.youtube.model.*; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Iterator; import java.util.List; import java.util.Properties; public class Search { private static String PROPERTIES_FILENAME = "youtube.properties"; private static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport(); private static final JsonFactory JSON_FACTORY = new JacksonFactory(); /*max 50らしい*/ private static final long NUMBER_OF_VIDEOS_RETURNED = 1; private static YouTube youtube; public static void main(String[] args) { Properties properties = new Properties(); try { InputStream in = Search.class.getResourceAsStream("/" + PROPERTIES_FILENAME); properties.load(in); } catch (IOException e) { System.err.println("There was an error reading " + PROPERTIES_FILENAME + ": " + e.getCause() + " : " + e.getMessage()); System.exit(1); } try { youtube = new YouTube.Builder(HTTP_TRANSPORT, JSON_FACTORY, new HttpRequestInitializer() { public void initialize(HttpRequest request) throws IOException {} }).setApplicationName("youtube-cmdline-search-sample").build(); String queryTerm = getInputQuery(); YouTube.Search.List search = youtube.search().list("id,snippet"); String apiKey = properties.getProperty("youtube.apikey"); search.setKey(apiKey); search.setQ(queryTerm); search.setType("videos"); // search.setFields("items(id/kind,id/videoId,snippet/title,snippet/thumbnails/default/url)"); //search.setFields("items(id,snippet,statistics)"); search.setMaxResults(NUMBER_OF_VIDEOS_RETURNED); SearchListResponse searchResponse = search.execute(); List<SearchResult> searchResultList = searchResponse.getItems(); if (searchResultList != null) { prettyPrint(searchResultList.iterator(), queryTerm); } } catch (GoogleJsonResponseException e) { System.err.println("There was a service error: " + e.getDetails().getCode() + " : " + e.getDetails().getMessage()); } catch (IOException e) { System.err.println("There was an IO error: " + e.getCause() + " : " + e.getMessage()); } catch (Throwable t) { t.printStackTrace(); } } private static String getInputQuery() throws IOException { String inputQuery = ""; System.out.print("Please enter a search term: "); BufferedReader bReader = new BufferedReader(new InputStreamReader(System.in)); inputQuery = bReader.readLine(); if (inputQuery.length() < 1) { inputQuery = "YouTube Developers Live"; } return inputQuery; } private static void prettyPrint(Iterator<SearchResult> iteratorSearchResults, String query) { System.out.println("\n============================================================="); System.out.println( " First " + NUMBER_OF_VIDEOS_RETURNED + " videos for search on \"" + query + "\"."); System.out.println("=============================================================\n"); if (!iteratorSearchResults.hasNext()) { System.out.println(" There aren't any results for your query."); } while (iteratorSearchResults.hasNext()) { SearchResult singleVideo = iteratorSearchResults.next(); System.out.println(singleVideo); ResourceId rId = singleVideo.getId(); // Double checks the kind is video. if (rId.getKind().equals("youtube#video")) { Thumbnail thumbnail = (Thumbnail) singleVideo.getSnippet().getThumbnails().get("default"); System.out.println(" Video Id" + rId.getVideoId()); System.out.println(" Title: " + singleVideo.getSnippet().getTitle()); System.out.println(" Thumbnail: " + thumbnail.getUrl()); // System.out.println("view all Count" + singleVideo.getStatistics().getViewCount()); System.out.println("\n-------------------------------------------------------------\n"); } } } }

###追記2( )

上のserachメソッドより得られたvideoIdをもとにList<Viedo> videoのような変数に新しく追加していくことなどできれば行けそうですが、どうでしょうか

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/09/19 04:58

どのようなコードでどこでどう詰まっているのでしょうか。現在のコードをご提示ください。またエラーメッセージは基本的にそのままコピペしてください。
makioo

2018/09/19 05:34

現在のコードはyoutube api検索の仕方のままです。
makioo

2018/09/19 05:35

今もう一度考え直したり、リファレンスをみなおしています。
makioo

2018/09/19 05:42

エラーが出るというよりは考え方があってないというような感じだと思います
m.ts10806

2018/09/19 05:48

疑っているわけではないですが「そのまま」と提示されて100%同じというケースは見ません。コピペしたコードであっても実際に動いているのは質問者さんの環境のものであって、参照下ではありません。動いている場所が違えば100%同じとは言えません。あくまで「自身が書いた自身の環境で動いているコード」として質問本文に提示してください。でないと「本当に参照元と同じか」という検証は誰にもできませんし、正しく再現確認がとれず、アドバイスが難しくなります。
makioo

2018/09/19 05:58

コード追記しました。
makioo

2018/09/19 05:58

よろしくおねがいします。
m.ts10806

2018/09/19 13:01

バタバタしており見れてなくてすみません。解決したようで何よりです
makioo

2018/09/19 13:03

こちらこそありがとうございました!
guest

回答1

0

自己解決

似たようなものがありました
参考

投稿2018/09/19 11:09

編集2018/09/19 11:10
makioo

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問