YouTube Data API v3 で動画の検索 実践編


検索ワードを決めてから、たった3行でYouTubeの動画検索結果をPHP用連想配列化!!
ちょー簡単バージョン。

前回「YouTube Data API v3 で動画の検索 準備編」では、

YouTube Data API v3 で動画の検索 準備編
GoogleのAPIでYouTube Data API v3を使って動画検索をPHPでプログラミングしようと思います。 Google Developers ConsoleからAPIキーを取得 今回は準備編として、Google D...

GoogleのYouTube Data API v3のAPIキーを取得しました。
今回は、このAPIキーを使用して動画の検索をしてみようと思います。

APIで動画検索する動作検証

今利用しているレンタルサーバーには、Composerがインストールされてないので
PHP用のGoogle APIのクライアントライブラリをインストールは難しい。
なので、Googleが提供しているAPIのコードサンプルは使用できません。
(ライブラリをGithubから直接ダウンロードしても良いのですが、autoload.phpがすんなり動作しない場合もあり、リスクが高そう)

直接APIにリクエスト送ることにします。
動画検索のリクエストは、

  https://www.googleapis.com/youtube/v3/search?part=snippet&q=検索キーワード&maxResults=結果要求数&key=APIキー

実験的に、
検索キーワード=「DA PUMP U.S.A.」
結果要求数 = 25(件)
このリクエストは、

  https://www.googleapis.com/youtube/v3/search?part=snippet&q=DA+PUMP+U.S.A.&maxResults=25&key=APIキー

で、ブラウザで送ってみます。

素晴らしい!
すんなり結果が返ってきてます。

これは、JSONフォーマットのデータがベタで返って来たような感じです。
ソースを調べてもJSONらしきもの

json_decode関数でPHPの連想配列に変換出来そうです。

もっとも簡単なYouTube動画検索

方針は、決まりました。

基本3行のコマンド!!
1.APIへのリクエストURLをsprint関数で作成
2.file_get_content関数で検索結果(JSONデータ)を受け取る
3.json_decode関数でPHP 連想配列に変換する
以上

PHP YouTube動画検索ソースコード

では動画検索をするサンプルコード

基本は変わらず3行のコマンドです。

サンプルでは、
エラー処理用の分岐。
汎用の為の変数化等で行数は多くなってます。

<?php
header('Content-Type: text/html; charset=UTF-8');
mb_language("Japanese");
mb_internal_encoding("UTF-8");
mb_http_input("UTF-8");
mb_http_output('UTF-8');

$htmlBody = <<<END
<form method="GET">
  <div>
    検索文字列: <input type="search" id="q" name="q" placeholder="Enter Search Term">
  </div>
  <div>
    結果要求数: <input type="number" id="maxResults" name="maxResults" min="1" max="50" step="1" value="25">
  </div>
  <input type="submit" value="Search">
</form>
END;

// APIキー
$api_key = "APIキーに置き換えます";

$q      = $_GET['q'];
$maxres = $_GET['maxResults'];

// 文字列間の空白は、AND検索として+
$q = trim($q);
$q = str_replace(" ", "+", $q);

if ($q && $maxres) {
  $req_url = sprintf("https://www.googleapis.com/youtube/v3/search?part=snippet&q=%s&maxResults=%s&key=%s"
                        , $q, $maxres, $api_key);

  if($json = @file_get_contents($req_url)){
    // リクエスト成功

    // PHP連想配列に変換
    $res_array = json_decode( $json , true);

    // 検索結果の加工処理
    var_dump($res_array);

  }else{
      //エラー処理
      echo "APIリクエスト失敗\n";
      echo "($req_url)\n";

  }
}

$htmlBody .= <<<END
END;
?>

<!doctype html>
<html>
  <head>
    <title>YouTube Search</title>
  </head>
  <body>
    <?=$htmlBody?>
  </body>
</html>

動作チェック

サーバー上のPHPサンプルコードにブラウザでアクセス

検索文字列に「DA BUMP U.S.A.」
「Search」をクリックします。

動作結果

DA BUMPの U.S.A.に関する動画の情報が連想配列で取得出来てます。