【PHP】Youtube Data APIによる動画情報取得

Youtube Data APIを試してみました。
PHPの環境があれば、数分で実行まで行けるんじゃないかと思います。
環境：Windows
言語：PHP

コマンドプロンプトで実行できるものです。
これを、ファンクション化したりと、使いまわしできたらいいんじゃないかなと。
##参考サイト
[公式](https://developers.google.com/youtube/v3/getting-started?hl=ja)

##事前準備
まず、必要なライブラリをインストール　対象のphpファイルを置くディレクトリとかで。
```composer require google/apiclient:^2.0
```
####APIキーの取得
[GoogleのAPIとサービス](https://console.developers.google.com/)

こちらの[APIキーの取得](https://qiita.com/kuzira_vimmer/items/dfd9f4febaec11851c06)の手順が参考になります。
APIキーを生成したら、メモっておいてください。

####証明書の配置
以下のURLの「証明書の配置」が参考になります。
http://azwoo.hatenablog.com/entry/2017/12/15/004353
[cacert.pem](https://curl.haxx.se/ca/cacert.pem)をダウンロードし、
「C:\php\extras\ssl\cacert.pem」のように、PHPインストールフォルダ内に配置してください。

##コード
```php:youtubeApitest.php
<?php

require_once __DIR__ . '/vendor/autoload.php';

const MAX_SNIPPETS_COUNT = 5;
const DEFAULT_ORDER_TYPE = 'date';
const DEFAULT_TYPE = 'video';
const CHHANNEL_ID = 'UCL6JY2DXJNDOIqCP1CRADng';//某ちゃんねる
const API_KEY = "AIzaSyA-YBJhfKrI-aaaaaaaaaaaaaaaaaaaa";

  // Googleクライアントのインスタンス
  $http = new GuzzleHttp\Client([
    'verify' => 'C:\php\extras\ssl\cacert.pem'
    ]);
  $client = new Google_Client;
  $client->setHttpClient($http);
  $client->setApplicationName("youtube-api-data-test");
  $client->setDeveloperKey(API_KEY);

  // Youtubeのインスタンス
  $youtube = new Google_Service_YouTube($client);

  //ここに好きなYouTubeのチャンネルIDを入れる
  $params['channelId'] = CHHANNEL_ID;
  $params['type'] = DEFAULT_TYPE;
  $params['maxResults'] = MAX_SNIPPETS_COUNT;
  $params['order'] = DEFAULT_ORDER_TYPE;
  try {

      $searchResponse = $youtube->search->listSearch('snippet', $params);

  } catch (Google_Service_Exception $e) {
      echo htmlspecialchars($e->getMessage());
      exit;
  } catch (Google_Exception $e) {
      echo htmlspecialchars($e->getMessage());
      exit;
  }

  foreach ($searchResponse['items'] as $searchResult) {
    switch ($searchResult['id']['kind']) {
      case 'youtube#video':
        $videos = sprintf('<li>%s (%s)</li>',
            $searchResult['snippet']['title'], $searchResult['id']['videoId']);
            echo "タイトル：".$searchResult['snippet']['title']." URL：https://www.youtube.com/watch?v=".$searchResult['id']['videoId'];
        break;

    }
  }

```

##実行コマンド
```
php  youtubeApitest.php
```


##補足
この定数に、上記の事前準備で取得したAPIキーをセットします。
```const API_KEY = "AIzaSyA-YBJhfKrI-aaaaaaaaaaaaaaaaaaaa";
```

#####Googleクライアントの初期化をします。上記の「証明書の配置」で配置したパスを「verify」で指定します。
```
  $http = new GuzzleHttp\Client([
    'verify' => 'C:\php\extras\ssl\cacert.pem'
    ]);
  $client = new Google_Client;
  $client->setHttpClient($http);
  $client->setApplicationName("youtube-api-data-test");
  $client->setDeveloperKey(API_KEY);
```

#####これをやらないと、以下の感じがでます。コンポーザーでインストールした「google/apiclient」のバージョンも影響あるらしく、エラー解消しない場合は、再インストールを・・。（自分はそれで解消）
```
PHP Fatal error:  Uncaught exception 'GuzzleHttp\Exception\RequestException' with message 'cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)' in C:\develop\ga-php\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php:187
```


#####条件指定をします。パラメータについては、[リファレンス Videos](https://developers.google.com/youtube/v3/docs/videos)の「プロパティ」を見てみてください。
```
  $params['channelId'] = CHHANNEL_ID;
  $params['type'] = DEFAULT_TYPE;
  $params['maxResults'] = MAX_SNIPPETS_COUNT;
  $params['order'] = DEFAULT_ORDER_TYPE;
```

#####取得結果です。echoの所で、動画タイトルとURLを出力しています。取得内容については、先ほどの[リファレンス Videos](https://developers.google.com/youtube/v3/docs/videos)の「プロパティ」を見てみてください。
```
 foreach ($searchResponse['items'] as $searchResult) {
    switch ($searchResult['id']['kind']) {
      case 'youtube#video':
        $videos = sprintf('<li>%s (%s)</li>',
            $searchResult['snippet']['title'], $searchResult['id']['videoId']);
            echo "タイトル：".$searchResult['snippet']['title']." URL：https://www.youtube.com/watch?v=".$searchResult['id']['videoId'];
        break;

    }
  }
```