NTTドコモ様_dカーシェア
NTTドコモ様_dカーシェア
2012.10.19

サイト内に画像検索を組み込める!FlickrAPIの使い方

勝利

こんにちは。先日金縛りの縛りに打ち勝った勝利です。

金縛りの時はいつも幽霊的なものからの物理攻撃に対しての警戒心から、目を見開いて防御態勢を敷いています。

さて、今回は前回(CakePHPで作る。APIを使用してサイトにyoutube検索を実装する方法)に引き続き、画像が色々取得できるFlickrAPIについて触れておきます。

その前にFlickrってなんだ?

Flickrってのは、画像を見たりアップロードして楽しむことができるサービスです。簡単には以下サイトで紹介されてました。

Flickrの使い方

 

で、FlickrAPIを使って何ができるかってことなんですが、自分のFlickrアカウントのおしゃれ画像を集めてサイト内に設置したり、サイト内にFlickr検索を設置できたりします。スマホでもアップロードできるので、アップロードすると逐次更新されるものなんかもありますね。

もちろんこれだけではなく、いろいろなマッシュアップが考えられます。

良いアイディアを思いついた段階で僕に教えてもらえたら幸いでございます。

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

ということで、今回はCakePHPでFlickrAPIを利用した自分好みの画像検索を開発したいと思います。

開発環境について

環境は前回(CakePHPで作る。APIを使用してサイトにyoutube検索を実装する方法)とほぼ同じです。

またしてもCakePHPでZend Frameworkを使用します。

Zendって素敵だね。

準備

Zend Frameworkをダウンロード

下記URLからZend Framework 1.12.0 Minimalをダウンロードします。

cakephpをダウンロード

下記URLからcakephp 1.3.15をダウンロードします。

作業開始

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を発行します。

 

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

最後に

FlickrAPIについてはこちらのサイトを参考にして色々できます。結構幅広い操作がAPIで提供されています。色々な機能を駆使して素敵なマッシュアップができればいいですね。中にはZendではサポートされてないものが多々あるので注意してください。サポートされてなかったら自作したらいいよね!楽しいね!!