Youtube APIを利用してアイドル部のデータを取得する_Part1

Youtubeが公開しているAPI
YouTube Data API の概要  |  YouTube Data API (v3)  |  Google Developers

これを使ってアイドル部メンバーのチャンネル情報を取得、AndroidのRecyclerViewを使って表示しよう!というのが趣旨。
今回はYoutube APIを利用するまでの手順を解説したいと思います。

APIを利用するための準備

YoutubeAPIは、APIキーの情報も乗せてリクエスト送信する必要があります。 そのため、事前にAPIキーの取得をしきましょう。

  • Google Cloud Platformを開く。
  • プロジェクトを選択する。(ない場合は新規に作成する)
  • 左のサイドバーから[ライブラリ]を選択する。
  • 検索バーに[Youtube]を入れると選択肢に[YouTube Data API v3]が表示されるので選択する。
  • [有効にする]を選択する。
  • 選択後、遷移した画面の[認証情報を作成]を選択する。
  • 下記のようにユースケースに合わせて選択し、[必要な認証情報]を選択する。 f:id:hamup:20190519172457p:plain

  • 最後にAPIキーが発行されるので確認して完了。 f:id:hamup:20190519172954p:plain

承認の認証情報を取得する  |  YouTube Data API (v3)  |  Google Developers

実際に使ってみる

APIキーを発行したので、実際叩けるようになったのか確認。
例として、たまちゃん(夜桜たま)のチャンネル情報を取得してます。

チャンネルの情報を取得するためには、チャンネル固有のIDを指定する必要があるのでそちらを先に調べておきます。
チャンネルIDは、チャンネルのTOPページのURLのchannel以降の文字列となります。
f:id:hamup:20190519172515p:plain

あとはSerach(検索)用のAPIにたまちゃんのチャンネルIDを指定するだけ。
これでチャンネルの動画情報を取得することができます。
Search: list  |  YouTube Data API (v3)  |  Google Developers

リクエス

下記のHTTPリクエストを発行。

https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCOefINa2_BmpuX4BbHjdk9A&key=APIキー

ただ、これだけのパラメータ指定だと、実際データを扱う際に色々不便なところが多いです。
例えばデフォルトだと5件の動画情報しか取れない、日付順に並んでいない、最大50件までしか取得できない...etc
公式のリファレンスを見るとわかりますが、パラメータ指定してあげれば上の問題は解決します。(余力があったら実際のリクエストも追記します。)

取得データ

いい感じに取得できていますね。
あとはAndroid側でAPI叩けるようにして画面に表示するだけです。

{
    "kind": "youtube#searchListResponse",
    "etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/bW-2tqqtTLESSvKwL9a7Ny7ASYg\"",
    "nextPageToken": "CAUQAA",
    "regionCode": "JP",
    "pageInfo": {
        "totalResults": 180,
        "resultsPerPage": 5
    },
    "items": [
        {
            "kind": "youtube#searchResult",
            "etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/Q5mCuMbj3r1Z-e6gxhSOKYMGE4E\"",
            "id": {
                "kind": "youtube#video",
                "videoId": "Gn-wIcBio6E"
            },
            "snippet": {
                "publishedAt": "2019-03-03T13:57:49.000Z",
                "channelId": "UCOefINa2_BmpuX4BbHjdk9A",
                "title": "【音MAD】タマガツモル feat.ばあちゃる【アイドル部】",
                "description": "お誕生日、たくさんお祝いしてくださってありがとうございました…! これからも楽しいことをいっぱい共有していけるように頑張ります(*´°`*)...",
                "thumbnails": {
                    "default": {
                        "url": "https://i.ytimg.com/vi/Gn-wIcBio6E/default.jpg",
                        "width": 120,
                        "height": 90
                    },
                    "medium": {
                        "url": "https://i.ytimg.com/vi/Gn-wIcBio6E/mqdefault.jpg",
                        "width": 320,
                        "height": 180
                    },
                    "high": {
                        "url": "https://i.ytimg.com/vi/Gn-wIcBio6E/hqdefault.jpg",
                        "width": 480,
                        "height": 360
                    }
                },
                "channelTitle": "夜桜たま",
                "liveBroadcastContent": "none"
            }
        },
        {
            "kind": "youtube#searchResult",
            "etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/vC6W6LRgL53y_4p15XXD7d_9yL8\"",
            "id": {
                "kind": "youtube#video",
                "videoId": "K3c0DjYEo48"
            },
            "snippet": {
                "publishedAt": "2018-10-04T13:30:00.000Z",
                "channelId": "UCOefINa2_BmpuX4BbHjdk9A",
                "title": "【怒ってる?】ツンデレの黄金比は9:1【さくたま流】",
                "description": "「ツンデレ」と言われる女流プロはたくさんいらっしゃいますが、普段はふわふわ卓上ではきりり。 そのギャップにこっちはめろめろ(∩ˊ꒳​ˋ...",
                "thumbnails": {
                    "default": {
                        "url": "https://i.ytimg.com/vi/K3c0DjYEo48/default.jpg",
                        "width": 120,
                        "height": 90
                    },
                    "medium": {
                        "url": "https://i.ytimg.com/vi/K3c0DjYEo48/mqdefault.jpg",
                        "width": 320,
                        "height": 180
                    },
                    "high": {
                        "url": "https://i.ytimg.com/vi/K3c0DjYEo48/hqdefault.jpg",
                        "width": 480,
                        "height": 360
                    }
                },
                "channelTitle": "夜桜たま",
                "liveBroadcastContent": "none"
            }
        },
        {
            "kind": "youtube#searchResult",
            "etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/2s-dBLSzy51UCdWXhwsUgy0irQs\"",
            "id": {
                "kind": "youtube#video",
                "videoId": "WjhFJZ726eE"
            },
            "snippet": {
                "publishedAt": "2018-09-14T13:00:09.000Z",
                "channelId": "UCOefINa2_BmpuX4BbHjdk9A",
                "title": "【自己紹介】はじめまして!夜桜たまです!",
                "description": "3度の飯より麻雀が好き! 立派な電脳雀士になりたいVTuberです(∩ˊ꒳​ˋ∩)・* ✿Twitter https://twitter.com/YozakuraTama ✿公式サイト https://vrlive.party/...",
                "thumbnails": {
                    "default": {
                        "url": "https://i.ytimg.com/vi/WjhFJZ726eE/default.jpg",
                        "width": 120,
                        "height": 90
                    },
                    "medium": {
                        "url": "https://i.ytimg.com/vi/WjhFJZ726eE/mqdefault.jpg",
                        "width": 320,
                        "height": 180
                    },
                    "high": {
                        "url": "https://i.ytimg.com/vi/WjhFJZ726eE/hqdefault.jpg",
                        "width": 480,
                        "height": 360
                    }
                },
                "channelTitle": "夜桜たま",
                "liveBroadcastContent": "none"
            }
        },
        {
            "kind": "youtube#searchResult",
            "etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/Hx25AZuuVuhx47dRMwGMFKs1IhM\"",
            "id": {
                "kind": "youtube#video",
                "videoId": "EYdnZW0Xlho"
            },
            "snippet": {
                "publishedAt": "2018-07-20T15:15:01.000Z",
                "channelId": "UCOefINa2_BmpuX4BbHjdk9A",
                "title": "【PUBG】戦闘訓練する【アイドル部】",
                "description": "皆さん、こんばんは! 私立ばあちゃる学園のアイドル部、そして麻雀部の部長を兼任しております。 夜桜たまです。 今日は立派なアイドルにな...",
                "thumbnails": {
                    "default": {
                        "url": "https://i.ytimg.com/vi/EYdnZW0Xlho/default.jpg",
                        "width": 120,
                        "height": 90
                    },
                    "medium": {
                        "url": "https://i.ytimg.com/vi/EYdnZW0Xlho/mqdefault.jpg",
                        "width": 320,
                        "height": 180
                    },
                    "high": {
                        "url": "https://i.ytimg.com/vi/EYdnZW0Xlho/hqdefault.jpg",
                        "width": 480,
                        "height": 360
                    }
                },
                "channelTitle": "夜桜たま",
                "liveBroadcastContent": "none"
            }
        },
        {
            "kind": "youtube#searchResult",
            "etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/WszUy5cPkZWZ_qWKqM-U2wBipKE\"",
            "id": {
                "kind": "youtube#video",
                "videoId": "c_P3_Zs6Ib4"
            },
            "snippet": {
                "publishedAt": "2018-09-07T12:33:25.000Z",
                "channelId": "UCOefINa2_BmpuX4BbHjdk9A",
                "title": "Prologue_夜桜たま",
                "description": "夜桜たまTwitter:https://twitter.com/YozakuraTama .LIVE公式サイト:https://vrlive.party/member/",
                "thumbnails": {
                    "default": {
                        "url": "https://i.ytimg.com/vi/c_P3_Zs6Ib4/default.jpg",
                        "width": 120,
                        "height": 90
                    },
                    "medium": {
                        "url": "https://i.ytimg.com/vi/c_P3_Zs6Ib4/mqdefault.jpg",
                        "width": 320,
                        "height": 180
                    },
                    "high": {
                        "url": "https://i.ytimg.com/vi/c_P3_Zs6Ib4/hqdefault.jpg",
                        "width": 480,
                        "height": 360
                    }
                },
                "channelTitle": "夜桜たま",
                "liveBroadcastContent": "none"
            }
        }
    ]
}

まとめ

今回はAPIでのチャンネル情報取得について書きました。
次の記事では実際にAndroidでのAPIの叩き方、画面表示の仕方、の2つについて解説したいと思います。

話変わりますが、今日は「アイドル部1周年ライブ はんぱないパッション」の当日です。みんなさん!ライブ楽しもうね!!