API を使用することで検索結果を取得したり、動画や再生リストなどのリソースを取得、挿入、更新、削除したりできます。
APIが使うために、APIキーを払い出す
- Google Developers Consoleから"YouTube Data API v3"を選択し、有効にする
- APIキーを作成する
- API は、APIキーとOAuth 2.0の2 種類の認証情報をサポートしてる。
今回はAPIキーでやる
APIの概要を知る
- YouTube Data API の概要 - YouTube — Google DevelopersにAPIの概要が書いてあるのでそっちを読んだ
Client Libraryを取得する
- Java用のYouTube Data API Client Libraryを取得する。
- jarのダウンロードもできるが、Mavenリポジトリからも取得できるのでPomやGradleでも扱えるよう
- 今回はGradleを利用した
dependencies {
compile 'com.google.apis:google-api-services-youtube:v3-rev121-1.19.0'
}
- 詳細は下記のURLを参考に。
- [YouTube Data API Client Library for Java(https://developers.google.com/api-client-library/java/apis/youtube/v3)
Sample Codeを使って、APIを試してみる
公式のサンプルがあるので試してみた。試したのは「トピックで検索」
Youtubeオブジェクトの生成する
おまじない的なあれ。正直まだよく見れてないです。。。
YouTube youtube = new YouTube.Builder(HTTP_TRANSPORT, JSON_FACTORY, new HttpRequestInitializer() { public void initialize(HttpRequest request) throws IOException { } }).setApplicationName("youtube-cmdline-search-sample").build();
検索のパラメタを設定する
検索に関するあれやこれやを設定
YouTube.Search.List search = youtube.search().list("id,snippet"); search.setKey(apiKey); // APIキーを設定 search.setQ(queryTerm); // 検索するキーワードを設定 search.setType("video"); // 検索対象のTypeを設定。他にchannelとplaylistが設定できる search.setMaxResults(25); // 取得するヒット数の最大値を設定 search.setFields("items(id/kind,id/videoId,snippet/title,snippet/thumbnails/default/url)"); // 取得するフィールドを設定
検索を実行する
execute()を呼び出すと検索でき、SearchListResponseオブジェクトに結果が格納される。
SearchListResponse searchResponse = search.execute();
Sytem.out.println(searchResponse.toPrettyString()); // レスポンスのJSONを表示
検索結果を表示する
検索結果の個々は「SearchResult」に格納されている。
List<SearchResult> searchResultList = searchResponse.getItems(); while (searchResultList.hasNext()) { SearchResult singleVideo = searchResultList.next(); ResourceId rId = singleVideo.getId(); if (rId.getKind().equals("youtube#video")) { Thumbnail thumbnail = singleVideo.getSnippet().getThumbnails().getDefault(); System.out.println(" Video Id" + rId.getVideoId()); System.out.println(" Title: " + singleVideo.getSnippet().getTitle()); System.out.println(" Thumbnail: " + thumbnail.getUrl()); } }
おわりに
とりあえずサンプルが動いて、内容を確認できた。あとは、Referenceとかを見て、欲しい機能を作っていこうかな〜