【後編】JAVAでYOUTUBEのAPIを使ってみた

【後編】JAVAでYOUTUBEのAPIを使ってみた

「JAVAでYOUTUBEのAPIを使用してみたい」
「YOUTUBEのAPIの使い方がわからない」

そんな方に向けて、記事を書いています。

はじめまして。現役エンジニアのkazと申します。
私は、JAVAでYOUTUBEのAPIを使用するサイトを作成しました。
その時のコードを用いて、解説していきます。

これからプログラミングをする方のお役に立てばと思います。

YOUTUBEのAPIを使用するために

YOUTUBEのAPIキーを取得していない場合は、以前の記事でYOUTUBEのAPIを使用するための準備を投稿したので、そちらをご確認ください。

JAVAでYOUTUBEのAPIを使ってみる

公式のページにJAVAでAPIを使用する方法が記載されていますので、
参考にしています。

https://developers.google.com/youtube/v3/code_samples/java?hl=ja

1.youtubeのAPIを初期化します。

youtube = new YouTube.Builder(HTTP_TRANSPORT, JSON_FACTORY, new HttpRequestInitializer() {
  public void initialize(HttpRequest request) throws IOException {}
}).setApplicationName("youtube-cmdline-search-sample").build();

2.検索結果としてほしいプロパティ指定します。
※snippet:結果のタイトルや説明などを識別する別のプロパティ

YouTube.Search.List search = youtube.search().list("id,snippet");

3.APIキーを指定する。

search.setKey("apikey");

4.検索する文字列を指定します。
※今回は、すべて検索するとします。

search.setQ("*");

5.検索対象のタイプを指定します。
※動画の場合、videoを選択します。

search.setType("video");

6.検索結果としてほしい内容を指定します。

※2.で指定したプロパティのどの情報を得るか指定するということです。
例えば、idプロパティのvideoIdを取得、snippetプロパティのtitleを取得等です。

search.setFields("items(id/kind,id/videoId,snippet/title,snippet/thumbnails/default/url,snippet/description,snippet/publishedAt),nextPageToken,pageInfo,prevPageToken");

7.検索結果の最大取得数を指定します。

0 以上 50 以下の値を指定できます。デフォルト値は 5 です。

private static final long NUMBER_OF_VIDEOS_RETURNED = 50;
search.setMaxResults(NUMBER_OF_VIDEOS_RETURNED);

8.続いて検索対象のチャンネルIDを指定します。

※チャンネルを指定せず、すべてのチャンネルで検索する場合、不要です。

search.setChannelId("channelId");

9.実行します。

SearchListResponse searchResponse = search.execute();

10.取得したリストを変数に入れます。

List<SearchResult> searchResultList = searchResponse.getItems();

これが一連の流れとなります。

検索結果の動画が50以上ある場合、途中までで切れてしまいます。
続きがある場合、NextPageTokenとして返却されます。

while文などでNextPageTokenの中がNullでなければ、ループするようにすれば、すべての検索結果が取得できます。

while ((searchResponse.getNextPageToken() != null) &amp;&amp; (searchResponse.getNextPageToken() != "")) {
    search.setPageToken(searchResponse.getNextPageToken());
    searchResponse = search.execute();
    searchResultList = searchResponse.getItems();
}

以上が、JAVAでYOUTUBEのAPIの使い方となります。

コード全体を載せておきます。

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.Video;

private static final long NUMBER_OF_VIDEOS_RETURNED = 50;
private static final String channelId = "UC_x5XG1OV2P6uZZ5FSM9Ttw";

private static void searchYoutube() {

	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");
	search.setQ("*");

	search.setType("video");

	search.setFields("items(id/kind,id/videoId,snippet/title,snippet/thumbnails/default/url,snippet/description,snippet/publishedAt),nextPageToken,pageInfo,prevPageToken");
	search.setMaxResults(NUMBER_OF_VIDEOS_RETURNED);
	search.setChannelId(channelId);

	SearchListResponse searchResponse = search.execute();

	List<SearchResult> searchResultList = searchResponse.getItems();

	while ((searchResponse.getNextPageToken() != null) &amp;&amp; (searchResponse.getNextPageToken() != "")) {
    	search.setPageToken(searchResponse.getNextPageToken());
    	searchResponse = search.execute();
    	searchResultList = searchResponse.getItems();
	}
}

YOUTUBEのAPIを使用して、
動画のランキングサイトを作ってみた。

今回紹介した、APIを使用してランキングサイトを作ってみたので、
紹介します。

http://mcbattle-rank.com/rank