【CakePHP】YoutubeAPIを使って検索する方法まとめ[DEMOサイト付]!!

youtube

2012年08月30日(木)

今回は、YoutubeAPIを利用してCakePHPで色々な動画を検索してみよう!ということでYoutubeAPIの使用方法を解説させて頂きます! かなり簡単なのでみなさんも試してみてください! またYoutubeAPIの検索のみをつかったDEMOサイトも構築したので参考までに!         では、早速ですが始めさせて頂きます! もうすでにDEMOサイトを見たい!という方はこちらまで!! http://otanoshimi.pk-brs.com/youtube/     まず準備してほしいものがあります!

初期準備

ZendGdata-1.11.13 http://framework.zend.com/download/gdata cakephp 1.3.15 http://cakephp.jp/
  こちらを用意して頂ければと思います。 ZendGdataにはYoutubeAPIのライブラリが入っていて、 とても重宝するので絶対にお勧めでございます!!   きちんとZendをCakePHPで使用できる解説もあるので安心してください。   では作業の方を開始していきます。  

作業開始

1.ダウンロードしたzenddataの中のlibraryのZendディレクトリをcakephpのvendorsへ移動 app/vendors/Zend   2.ZendFrameworkLoader Compornentを作成する。 app/controllers/components/zend.php —
class ZendComponent extends Object {
	public function startup() {
		$include = get_include_path();
		$include.= PATH_SEPARATOR. APP . 'vendors' . DS;
		$successful = set_include_path($include);
		if (!$successful) {
			throw new Exception('ZendComponent failed to set include path.', E_ERROR);
		}
		require_once('Zend/Loader.php');
	}
	public function loadClass($class, $dirs = null){
		Zend_Loader::loadClass($class, $dirs);
	}
	public function loadFile($filename, $dirs = null, $once = false){
		Zend_Loader::loadFile($filename, $dirs, $once);
	}
	public function isReadable($filename) {
		Zend_Loader::isReadable($filename);
	}
}
—   これでCakePHPから呼び出せるようにします!     3.Controllerの作成 app/controllers/youtube_controller.php —
class YoutubeController extends AppController{
	public $name = 'Youtube';
	public $uses = null;
	public $layout = 'default';
	public $components = array('Zend');

	public function index(){
		$this->Zend->loadClass('Zend_Gdata_YouTube');
		$yt = new Zend_Gdata_YouTube();
		
		$searchTerms = "グラビア 水着";
		try{
			$query = $yt->newVideoQuery();
			$query->setRacy('include');				//制限なし
			$query->setMaxResults(15);				//15件取得
			$query->setOrderBy('viewCount');		//視聴回数でソート
			$query->setVideoQuery($searchTerms);	//検索対象

			// 検索実行
			$videoFeed = $yt->getVideoFeed($query);
			// 検索結果
			$this->set('videoFeed', $videoFeed);
		}
		catch(Exception $e){
			// Exceptionの際にどうぞ
		}
	}
}
—   ※指定できるQueryのサンプル。あとは自分で調べてくださいませ。
/* * ●setAuthor * エントリの投稿者を設定します。投稿者の名前は YouTube のユーザー名と同じです。 * ●setFormat * 動画のフォーマットを指定します。モバイル向け動画の再生用の RTSP ストリーミング URL か、埋め込み型 Flash プレーヤーへの HTTP URL の 2 種類のどちらかを示す数値パラメータを指定できます。 * ●setRacy * 結果に制限付きコンテンツを含めるかどうかを指定します。’include’ か ‘exclude’ の 2 つのパラメータのみ指定できます。 * ●setMaxResults * 一度に返すエントリの最大数を設定します。 * ●setStartIndex * 取得される最初の結果に 1 から始まるインデックスを設定します (複数のページで結果を表示するため)。 * ●setOrderBy * リストのエントリの順序を設定します。RELEVANCE、VIEW_COUNT、UPDATED、RATING などによる順序を指定できます。 * ●setTime * 標準フィードの結果を TODAY、THIS_WEEK、THIS_MONTH、ALL_TIME の期間に限定するように設定します。 * ●setVideoQuery * 検索キーワードを設定します。動画のすべてのメタデータ (タイトル、タグ、説明など) 内で、指定した文字列が検索されます。 */
  3.Modelはつくらない 今回DBを操作するような事はしないのでModelは作成しません。       4.Viewの作成 app/view/youtube/index.php —
// 検索結果の全件数
$get_Totalcount = $videoFeed->getTotalResults()->text;
// 検索結果の1ページ当たりの件数
$get_Itemcount = $videoFeed->getItemsPerPage()->text;

foreach ($videoFeed as $videoEntry) {

	//対象の動画のタイトル
	$videoEntry->getVideoTitle();
	
	//対象の動画の大画面リンク
	$videoEntry->getFlashPlayerUrl();

	//対象の動画のサムネイル画像があります。
	$arrVideoThumbnails = $videoEntry->getVideoThumbnails();
	foreach ( $arrVideoThumbnails as $thumbnailValue ) {
		$thumbnail_img = $thumbnailValue['url'];
	}
}
—   こんな感じでControllerから渡された変数を使用できるので、 あとは表示させたりして確認してみてください!   5.Layoutの作成 app/view/layout/index.php   こちらは特に関係ないのでデフォルトのものでも可能です。 みなさんのデザインセンスに任せます!!w       これで一通りの作業は終了です!   どうですか? 簡単ですよね?   この機能を利用してDEMOサイトを作成しましたので、 機会があれば使ってみてください!   とてもシンプルで検索しかしていないサイトです。(独断と偏見による検索カテゴリーw) 怖いのが好きな人とかはカテゴリーページにある「呪い」というリンクをクリックしてみてくださいww   とても怖いので一人では聞かない方がいいと思います! もし聞いたとしたらきちんと最後まで聞いてください!!! 驚きます!!      

スポンサードリンク

運営サービスPR

スポンサードリンク

運営サービスPR