読者です 読者をやめる 読者になる 読者になる

くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

YouTube Data APIを使ってみる

API を使用することで検索結果を取得したり、動画や再生リストなどのリソースを取得、挿入、更新、削除したりできます。

APIが使うために、APIキーを払い出す

  1. Google Developers Consoleから"YouTube Data API v3"を選択し、有効にする
  2. APIキーを作成する
  3. API は、APIキーとOAuth 2.0の2 種類の認証情報をサポートしてる。
  4. 今回はAPIキーでやる

  5. refs: 承認の認証情報を取得する - 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'
}

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とかを見て、欲しい機能を作っていこうかな〜

[PR] めもらばではこんなあぷりを作っています!