APIで取得した画像をphpで一覧表示する
前回、前々回では、FlickrAPIが提供している画像検索メソッド flickr.photos.searchを使用して、画像の検索~画像URLの作成・表示までをやりました。
今回は、phpを使ってflickr.photos.searchで取得した画像情報から画像を一覧表示してみてみます。

リクエスト例は前回と同じ物を使います。(「猫」に関連する画像の要求です。)
(*[取得したキー]の部分は皆さんのFlickrAPIキーに置き換えてください。)
http://www.flickr.com/services/rest/?method=flickr.photos.search&format=rest&api_key=[取得したキー]&per_page=20&license=1,2,3,4,5,6&extras=owner_name&text=%E7%8C%AB

サンプルphpプログラム(simplexml_load_file())
phpのサンプルプログラムです。
「猫」に関連する画像を1行に4枚づつ合計20枚表示するプログラムです。
phpの実行環境の用意できる方は、[取得したキー]の部分は皆さんのFlickrAPIキーに置き換えれば実行できると思います。

<?php
define (APIKEY , "[取得したキー]");

$searchWord = "猫";	//検索したい画像のキーワード
$pictureSize = "t";	//画像サイズ

$url = "http://www.flickr.com/services/rest/?"
	 . "method=flickr.photos.search"
	 . "&format=rest"
	 . "&api_key=".APIKEY
	 . "&per_page=20"
	 . "&license=1,2,3,4,5,6"
	 . "&extras=owner_name"
	 . "&text=".urlencode($searchWord);

$xml = @simplexml_load_file($url);
//print_r($xml);

$iLoop = 0;
echo "<table>";
foreach($xml->photos->photo as $photoValue){
	if( $iLoop == 0){
		echo "<tr><td>";
	} else {
		echo "<td>";
	}
	$farmId = $photoValue['farm'];
	$serverId = $photoValue['server'];
	$photoId = $photoValue['id'];
	$secret = $photoValue['secret'];
	$owner = $photoValue['owner'];
	$ownername = $photoValue['ownername'];
	//改行はレイアウトのため
	echo "<a href=\"http://www.flickr.com/photos/{$owner}/{$photoId}/\">
	<img src=\"http://farm{$farmId}.static.flickr.com/{$serverId}/
	{$photoId}_{$secret}_{$pictureSize}.jpg\" /></a><br>";
	echo "author by <a href=\"http://www.flickr.com/photos/{$owner}/\">
	{$ownername}</a>";
	$iLoop++;
	if( $iLoop == 4){
		echo "</td></tr>";
		$iLoop = 0;
	} else {
		echo "</td>";
	}
}
if( $iLoop != 0 ){
	echo "</tr>";
}
echo "</table>";

?>

phpの基本的な文法についてはここでは述べません。
simplexml_load_file()は、APIからのレスポンス(XMLドキュメント)をphpで処理しやすいオブジェクトに変換する関数です。
そして、その後のforeachループ内で画像URL、画像元URL、著作者情報URLを生成して出力しています。
(*画像URLL、画像元URL、著作者情報URLの作成に関しては前回の記事を参考にしてください。)
実行結果
上記phpプログラムの実行結果です。
猫の画像が20枚表示されています。

author by sakuraquiet

author by Noelas

author by Noelas

author by hisashi_0822

author by hisashi_0822

author by hisashi_0822

author by hisashi_0822

author by hisashi_0822

author by hisashi_0822

author by hisashi_0822

author by hisashi_0822

author by hisashi_0822

author by hisashi_0822

author by hisashi_0822

author by hisashi_0822

author by hisashi_0822

author by hisashi_0822

author by hisashi_0822

author by hisashi_0822

author by helloraine


watchout(投稿日時 : 2009/11/12 19:24:24)
$searchWord = mb_convert_encoding($searchWord,"UTF-8","auto");
を追加してUTF-8にしてから、urlencodeする必要がありそうです。

てっちん(投稿日時 : 2009/04/12 07:50:46)
動きませんがな。。。

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