(最終更新日:2009/2/10)
Zend Gdataモジュールを使ったphpのYoutube DATA APIサンプルプログラム
前回でZend Gdataモジュールが利用できるようになったので、ここでは実際にGdataモジュールを利用した簡単なphpサンプルプログラムを作成してみます。
<?php

require_once("/add/add/lib/Zend/Loader.php");
Zend_Loader::loadClass('Zend_Gdata_YouTube');

//$keywordはAPIに要求するキーワード、$dispNumは要求する動画数
function getAndDispFunc( $keyword, $dispNum ){
//Zend_Gdata_YouTubeクラスを作成
$yt = new Zend_Gdata_YouTube();
//リクエストURL作成
$requestUrl = "http://gdata.youtube.com/feeds/api/videos?";
$requestUrl .= "vq=" . urlencode( $keyword ); //日本語はUTF-8へurlエンコード
$requestUrl .= "&orderby=relevance_lang_ja";
$requestUrl .= "&max-results=" . $dispNum;
//APIリクエストの実行
$videoFeed = $yt->getVideoFeed($requestUrl);
//全動画数を表示
echo "<div id=\"vCap\">■■■ 「{$keyword}」関連の全動画数は" . $videoFeed->getTotalResults() . "件 ■■■</div>\n";
echo "<div id=\"vCapSub\">(そのうちの" . $videoFeed->getItemsPerPage() . "件を表示します。)</div>\n";
//
foreach ($videoFeed as $videoEntry) {
echo "<div class=\"oneVideo\">\n";
//タイトル
echo "<div class=\"vTitle\">" . $videoEntry->getVideoTitle() . "</div>\n";
echo "<table>\n";
echo "<tr><td>\n";
//動画
foreach ($videoEntry->mediaGroup->content as $content) {
if ($content->format === "5") {
echo "<object width=\"380\" height=\"330\"><param name=\"movie\" value=\"" . $content->url . "\"></param><embed src=\"" . $content->url . "\" type=\"" . $content->type . "\" width=\"380\" height=\"330\"></embed></object>\n";
}
}
echo "</td><td>\n";
//詳細分
echo "<div class=\"vDesc\">" . $videoEntry->getVideoDescription() . "</div>\n";
//視聴回数
echo "<div class=\"vCount\">視聴回数:" . $videoEntry->getVideoViewCount() . "回</div>\n";
//画像
echo "<div class=\"vImg\">\n";
$arrVideoThumbnails = $videoEntry->getVideoThumbnails();
foreach ( $arrVideoThumbnails as $thumbnailValue ) {
echo "<img src=\"" .$thumbnailValue["url"] . "\" />\n";
}
echo "</div>\n";
//大画面リンク
echo "<div class=\"vLink\"><img src=\"/img/button/icon_orange_pin.gif\" /><a href=\"" . $videoEntry->getFlashPlayerUrl() . "\" target=\"_blank\" >動画を大画面で見る</a></div>\n";
echo "</td></tr>\n";
echo "</table>";
echo "</div>\n";
}
}

?>
ソース中にコメントを書き込んでいるんで、phpの基礎を知っていればこのソースも簡単に理解できると思います。
また、Zend_Gdata_YouTubeクラスなどのGdataモジュール関連のメソッド、プロパティはAPIリファレンスなどの公式マニュアルを参考にして下さい。
APIリファレンスはダウンロードしたフォルダ内のdocumentation/api/フォルダにあります。
オンラインマニュアル(Programmer's Reference Guide Chapter 22. Zend_Gdata)

そして、下のように関数getAndDispFunc()を呼び出して利用します。
<?php getAndDispFunc( "子猫", 3 ); ?>
第1引数に要求するキーワード、第2引数には要求する動画数を指定します。
よって、上の例だと子猫関連の動画を3つAPIにリクエストしていることになります。
実行結果
下のような結果表示になります。

■■■ 「子猫」関連の全動画数は81089件 ■■■
(そのうちの3件を表示します。)
子猫のなきごえ最高~
s-url.jp?26445 ←ネコちゃんとどこでも一緒に行ける!
視聴回数:177718回
夕飯準備の飼い主さんに必死にすがる子猫たち
riped: nico nico douga www.nicovideo.jp
視聴回数:364081回
子猫拾いました。テトのデジャブ
今日拾った子猫です。 これから里親探しをしたいと思います。 毎日更新猫ブログ ちゃとらとはちわれmochamugi.blog88.fc2.com
視聴回数:342063回
必要なphpの知識
上でも書きましたが、基本的なphpの知識(変数、配列の扱い方、if,forなどの制御構文)とクラスの概念が必要になってくると思います。
ネットにあるphpのプログラミング講座を見る、または初心者用のphp入門書を1冊購入すれば充分でしょう。
後は、Zend Gdataのドキュメントを見ながら自分で頑張りましょう。
ウェブサービス(API)にはキャッシュ機能を使うべき
今回のYoutubeのウェブサービス(API)に限らずウェブサービス全般に言える事ですが、ウェブサービスを利用する場合はなるべくキャッシュ機能を利用をつけましょう。
キャッシュ機能を利用することでHP作成者、HPに訪問してくれるユーザ、ウェブサービスを提供しているサイト全てにメリットがあります。
キャッシュ機能をつければ同じリクエストなら毎回ウェブサービスをリクエストする必要がなくなり、サーバの負荷がなくなりますしスピードも速くなります。
また、ウェブサービスには大体「○秒に○回までのリクエストを上限にする」という規約があります。
それを考慮するとキャッシュ機能は必須です。
(と言っておきながら上の例ではキャッシュ機能をつけていませんが…。まずは余計なコードをつけずになるべく簡略化したかったからです。要望があればキャッシュ機能をつけたソースプログラムも今度公開します。)
そして、phpではキャッシュ機能が作れるpearモジュールCache_Liteがあります。
Cache_Liteの詳細、使い方については別ページで説明していますのでそちらを参考にして下さい。
phpのキャッシュ機能にpearのCache_Lite()を使用する

kura(投稿日時 : 2009/05/12 14:48:40)
はじめまして。googleの検索で知りました。
サンプルプログラムを試したいと思いましたが、当方、超々素人です。
youtubeのデベロッパーキーはどこに書き込めばよろしいのでしょうか?
お手数ですが宜しくお願いします。

コメントを投稿する
名前 : 
URL : 
 *入力文字数は全角700文字までです。
Powered by
おすすめPHP入門書