サンプルコードそのままですが、英語でコメント書かれたソースコードをサクサク読めないので、少しだけノート代わりに書き残しておく。
やりたいこと
キーワードやチャンネルでYouTubeの動画を検索する。(Search API)
検索結果(APIレスポンス)で得られた動画情報をPHPであれこれする。
必要であれば、動画の詳細情報をさらに取得する。
サンプルコード
YouTubeさんのGitHubから。
ライブラリ
検索結果を表示するサンプル
require_once __DIR__ . '/vendor/autoload.php';
検索フォーム
$htmlBody = <<<END <form method="GET"> <div>Search Term: <input type="search" id="q" name="q" placeholder="Enter Search Term"></div> <div>Max Results: <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とサービス>認証情報で取得したAPIキーをセットし、YouTubeのサービスを使用するための定義をする。
$DEVELOPER_KEY = 'APIキーを取得してくる!!'; $client = new Google_Client(); $client->setDeveloperKey($DEVELOPER_KEY); $youtube = new Google_Service_YouTube($client);
リクエスト
listSearch(part,options[])
pに検索キーワード、maxResultsに検索件数を指定して検索結果を取得する。
$searchResponse = $youtube->search->listSearch('id,snippet', array( 'q' => $_GET['q'], 'maxResults' => $_GET['maxResults'], ));
optionsはAPIパラメータを指定できる。上記以外だと、channelId(チャンネルID)など。
レスポンス
動画タイトル、チャンネル名、投稿日時、説明文、サムネイルURLなど基本的な部分は確実に取得できる。
あとはそれぞれで
ここまででとりあえず検索結果の取得ができたので、あとはvar_dumpしながらforeachでさばいていくような感じで。
思ったよりも、ドキュメントが充実してなくてつらい。
このあたり漁ってみれば、できそうなこと見つかりそう。
listSearch(part,options)に関してもソースコード見て学んだ。
YouTube以外のAPIもおもしろそう!!
ドライブとか翻訳とか、ちょっとイケてるCloudNaturalLanguageとかね。