【CakePHP】FlickrAPIをつかってウホホイな画像検索を組み込もう!

IMAG0502

2012年10月25日(木)

今回はいつぞやののYoutubeAPIに引き続き、FlickrAPIについて、ついでに触れておこう。 Flickrでなにができるんだ?ってとこですが、Flickrアカウントの画像をサイト内に設置したり、サイト内にFlickr検索を設置できたりできます。これって、WEBサービスを作るうえで以外にも便利な機能だったりする。 Flickrなんなんだというのは、画像を見たりアップロードして楽しむことができるものだと思う。 簡単には以下サイトで紹介されてました。   もちろんこれだけではなく、いろいろなマッシュアップが考えられますね。 なんか考え付いたら教えてくれー! なんか面白いものでも作りましょう。 ちなみに僕も多少は考えているので、なにか作成したら再度投稿させて頂こうかと思う。 (みんなで切磋琢磨しようぜ!)   環境は、 CakePHPでZend Frameworkを使用します。 Zendって色々と便利。 公開されている有名どころのAPI類は結構網羅されてライブラリ化されている。  

まず準備

  • Zend Frameworkをダウンロード
  • 下記URLからZend Framework 1.12.0 Minimalをダウンロードします。 http://framework.zend.com/downloads/latest  
  • cakephpを準備
  • 今回はちょっと古いけど、なれているので、 下記URLからcakephp 1.3.15をダウンロードします。 http://cakephp.jp/    

    作業開始だっちゃ

  • 1.Zendディレクトリをcakephpのvendorsへ移動
  •   app/vendors/Zend  
  • 2.ZendFrameworkLoader Compornentを作成する。
  •   app/controllers/components/zend.php  
    <?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);
    	}
    }
    
     
  • 3.Flickr APIを使うためにAPI Keyを発行します。
  •   下記URLから登録してKeyを発行します。 http://www.flickr.com/services/api/keys/    
  • 4.Controllerの作成
  •   app/controllers/flickr_controller.php  
    <?php
    class FlickrController extends AppController{
        public $name = 'Flickr';
        public $uses = null;
        public $layout = 'default';
        public $components = array('Zend');
        public function index(){
        	// Zend_Flickr読み込み
        	$this->Zend->loadClass('Zend_Service_Flickr');
    		$flickr = new Zend_Service_Flickr('あなたのAPI_KEYをここに!!','');
    		// 通常検索実行
    		//$ImageFeed = $flickr->tagSearch('水着');		//tag検索
    		$imageFeed = $flickr->textSearch('グラビアアイドル');		//text検索
    		$this->set('imageFeed', $imageFeed);
    		// User画像検索
    // 		$option = array('per_page' => 30);
    // 		$userFeed = $flickr->userSearch('大好きなユーザーを入れてクレろ', $option);
    // 		$this->set('userFeed', $userFeed);
    		// UserPhotoSet検索
    // 		$photosetList = $flickr->photosetsList('中ぐらい好きなユーザーをいれてくんろ' ,$option);
    // 		$this->set('photosetList', $photosetList);
    		// UserFavarites検索
    // 		$FavaritesList = $flickr->favoritesSearch('気になるユーザーをいれてほしいの' ,$option);
    // 		$this->set('FavaritesList', $FavaritesList);
        }
    }
    
     
  • 5.Modelはつくらない
  •   別にModelがなくとも動くので今回は特に作成しません。  
  • 6.Viewはつくる
  •   Controllerから渡されたデータを表示するためにViewは作ります。 app/view/flickr/index.php 下記はControllerから渡されるデータの中味です。(※通常検索実行の場合)
    <?php
    	foreach($ImageFeed as $Image){
    		// 画像のタイトル
    		$Image->title;
    		// 投稿者の名前
    		$Image->ownername;
    		// 投稿された時間
    		$Image->datetaken;
    		// 色々なサイズで取得
    		$Image->Square->uri;
    		$Image->Thumbnail->uri;
    		$Image->Small->uri;
    		$Image->Medium->uri;
    		$Image->Large->uri;
    		$Image->Original->uri;
    		$Image->Small 320->uri;
    		$Image->Medium 640->uri;
    		$Image->Medium 800->uri;
    		/*
    		 * ☆height/widthを知りたい場合は以下でとれるよ☆
    		 * $Image->サイズ名->height;
    		 * $Image->サイズ名->width;
    		 */
    	 }
    
    これで画質のきれいなウホホイなものがとれると思う。 適宜出力してどんな値が格納されているのか出力してみてみてください♪ きっと素敵なものが取れるでしょう。  
  • 7.Layoutもつくるが割愛します。
  •   レイアウトはデザインに関する事なので、ここでの説明は省かせていただきます。 個人のセンスで考えるようにしようね。 app/view/layout/default.php  

    最後に

    Flickr APIのいろいろ これを参考にして色々できます。結構幅広い操作がAPIで提供されています。色々な機能を駆使して素敵なマッシュアップできればいいですね。なかにはZendではサポートされてないものが多々あるので注意してください。 やっぱりリスト系を操作できたらかっこいいよね! その辺のやつで次回あたりは操作してみようと思う。。。 (次回FlickrAPIを操作する機会があれば・・・)

    スポンサードリンク

    運営サービスPR

    スポンサードリンク

    運営サービスPR