LoginSignup
2
3

More than 3 years have passed since last update.

YouTube Data API (v3) を Docker で動かしてみた

Posted at

こんにちは。
Web・iOSアプリエンジニアの三浦です。

https://qiita.com/takayuki-miura0203/items/4fa4cdc9ef0c07a857a9
こちらでは puppeteer を Docker 上で動かしてみましたが、今回は YouTube Data API (v3) を動かしてみたいと思います。

なお、今回のコードはこちらにまとめてあります。
https://github.com/takayuki-miura0203/docker-youtubeApi-sample

準備

技術選定

YouTube Data API を動かすに当たり、 様々な言語のライブラリが提供されているようですが、今回は業務で PHP を使うことが多いため、 PHP の Docker 環境を整えてみる意味も含め PHP用のライブラリ で行くことにしました。

YouTube Data API (v3) の有効化

YouTube Data API (v3) を使用するに当たり、 API を有効化する必要があります。
これには Google のアカウントが必要です。

  1. Google API のコンソールへ行く。
  2. 左メニュー「ライブラリ」をクリックし、「YouTube Data API (v3)」を検索・クリックし、有効化する。
  3. コンソールに戻り、左メニュー「認証情報」をクリック。「認証情報を作成」から「APIキー」を選択し、作成する。

実装してみる

では実際に作ってみましょう!

Docker

まずは Dockerfile からです。
今回は、最低限 composer install でき、またコマンドラインから PHP を実行して YouTube Data API を叩けることを要件とし、以下のように作ってみました。

# CLI だけなら apache は不要かもしれません
FROM php:7.3.4-apache

# composer install のために、 git や unzip が必要
RUN apt-get update && apt-get install -y \
    git \
    unzip \
    vim

WORKDIR /app

# install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

docker-compose

こちらもあまり特殊なことはしません。
ディレクトリをマウントし、ホストから PHP ファイル等を編集できるようにするくらいです。

version: '3.7'

services:
  youtube:
    build: youtube
    image: youtube-image:1.0.0
    container_name: youtube-container
    init: true
    tty: true
    volumes:
      - /path/to/youtube/app:/app
    working_dir: /app

PHP

今回は、「VTuber」で検索してチャンネル情報を取得し、それらの登録者数・動画総再生数を表示するコードを組んでみました。

<?php

require_once('../vendor/autoload.php');

class YoutubeApi
{
    public function run()
    {
        $client = new Google_Client();
        $client->setApplicationName('Sample Application');
        // Note: ここは自分の API Key を入れてください
        $client->setDeveloperKey('xxxx');

        $youtube = new Google_Service_YouTube($client);

        // 検索結果を取得
        // channel で検索するときは、 order を view count にしても動画総再生順には並ばないようです
        $searchResponse = $youtube->search->listSearch(
            'snippet',
            [
                'q' => 'Vtuber',
                'type' => 'channel',
                'order' => 'viewCount',
                'maxResults' => 10,
                'regionCode' => 'JP'
            ]
        );

        foreach($searchResponse->items as $item) {
            // 取得したチャンネルIDをもとに、チャンネルの詳細情報を取得
            $channelsResponse = $youtube->channels->listChannels(
                'statistics',
                ['id' => $item->snippet->channelId]
            );

            echo('channel title   : ' . $item->snippet->channelTitle);
            echo("\n");
            echo('subscriber count: ' . $channelsResponse->items[0]->statistics->subscriberCount);
            echo("\n");
            echo('view count      : ' . $channelsResponse->items[0]->statistics->viewCount);
            echo("\n");
            echo("----\n\n");
        }
    }
}

$youtubeApi = new YoutubeApi();
$youtubeApi->run();

実行!

それでは実行してみます!
まずはコンテナを実行します。

# image をビルドして…
docker-compose build --no-cache

# コンテナを実行し、そのままコンテナ内に入ります。
docker-compose run --rm --entrypoint /bin/bash youtube

コンテナに入ったら…

# composer install して…
composer install

# PHP ファイルを実行します
cd src
php youtubeApi.php

結果

2019/05/01 09:30 頃の実行結果は、以下のようになりました。

channel title   : Siro Channel
subscriber count: 625202
view count      : 79972749
----

channel title   : Mirai Akari Project
subscriber count: 746014
view count      : 54467514
----

channel title   : Kaguya Luna Official
subscriber count: 954807
view count      : 84966355
----

channel title   : ひなたチャンネル (Hinata Channel)
subscriber count: 503727
view count      : 30622902
----

channel title   : バーチャル番組チャンネル
subscriber count: 237756
view count      : 14332002
----

channel title   : Choco Ch. 癒月ちょこ
subscriber count: 100606
view count      : 9217195
----

channel title   : YuNi - virtual singer -
subscriber count: 274216
view count      : 44797187
----

channel title   : アキロゼCh。Vtuber/ホロライブ所属
subscriber count: 27301
view count      : 1136670
----

channel title   : 佃煮のりおちゃんねる【犬山たまき】
subscriber count: 126962
view count      : 7979312
----

channel title   : ケリン
subscriber count: 152154
view count      : 10973355
----

無事取得できました!
ただチャンネルに関しては、特に view count 順に並んでいるわけではなさそうですね。

さいごに

というわけで、やろうとしたことがかなり少なかったこともあり、結構シンプルに環境を整えることができました。
ここから更にいろいろやろうと思ったら、 Dockerfile にて更にエクステンション等を入れていけば良さそうです。

ここまで読んでいただきありがとうございました!

参考文献

以下のサイトを参考にさせていただきました。
ありがとうございました!

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3