ブルーシュ

IT技術の勉強記録

ホーム > Tips > Google API

キーワードでYouTubeの動画を全件検索する – PHPでYouTube Data API

サンプルコードの概要

YouTube Data APIを使って、キーワードに合致する動画を検索します。

 
まずは、下準備として

をごらんください。
 
その他のサンプルコードはこちらGoogle APIの記事一覧
 

サンプルコード

<?php
if (!file_exists(__DIR__ . '/vendor/autoload.php')) {
  throw new \Exception('please run "composer require google/apiclient:~2.0" in "' . __DIR__ .'"');
}

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

$DEVELOPER_KEY = 'APIキーをここに入れる';

$client = new Google_Client();
$client->setDeveloperKey($DEVELOPER_KEY);

$youtube = new Google_Service_YouTube($client);

$htmlBody = '';

try {
	$condition = array(
		'q'	=> '#ほげ',
		'type'	=> 'video',
		'maxResults'=> 50,
		'order'	=>'viewCount',
		'type'	=> 'video'
	);
	do{
		$searchResponse = $youtube->search->listSearch('id,snippet', $condition);

		foreach ($searchResponse['items'] as $searchResult) {
			$htmlBody .= "<li>{$searchResult['id']['videoId']} : {$searchResult['snippet']['title']}</li>";
		}

		$condition["pageToken"] = $searchResponse["nextPageToken"];

	} while($searchResponse["nextPageToken"]); //次のページがなくなるまで繰り返す

} catch (Google_Service_Exception $e) {
	$htmlBody .= sprintf('<p>A service error occurred: <code>%s</code></p>',
		htmlspecialchars($e->getMessage()));
} catch (Google_Exception $e) {
	$htmlBody .= sprintf('<p>An client error occurred: <code>%s</code></p>',
		htmlspecialchars($e->getMessage()));
}
?>
<!doctype html>
<html>
  <head>
	<title>YouTube Search</title>
  </head>
  <body>
	<ul><?=$htmlBody?></ul>
  </body>
</html>

YouTube Data API公式ページ ⇒ 検索(Search) ⇒ リスト(list)メソッドにあるSearch: listのPHPサンプルコードをベースにしています。

 

nextPageTokenとは?

このメソッドでは50件ずつしか取得できません。
じゃあ、50件以上の動画があるときは・・・?
そこで、「まだまだ動画があるよ」という場合には、レスポンスにその目印が含まれて返ってきます。
その目印(=nextPageToken)を次の検索条件に含めて、再度検索します。
「もう動画はないよ」となったら、レスポンスのnextPageTokenが空になります。
「1度は検索して、nextPageTokenが空になるまで、繰り返し処理する」というわけで、do…while文を使ってみました。

キーワードでYouTubeの動画を全件検索する – PHPでYouTube Data API #Google API #ウェブデザイン #ウェブ制作 #WEBデザイン #WEB制作 #PHP

作者の似顔絵

秋田市在住のプログラマーです。
プログラミングを始めて18年、まだまだ日々勉強。調べたことをブログにまとめていきます。
記事の感想・質問・間違い指摘などはツイッター ( @blooshcompany ) へお願いします。