2013/03/09

flickr APIを使ってPHPでCCライセンスの画像を検索する

写真サイトの flickrってAPIあるんですよねー。とりあえず、こちらの記事を参考にCC(Commons Creative License)ライセンスの写真を検索するサンプルを作ってみました。

API仕様

API仕様は、このページで確認できます。APIコールには、APIキーが必要です。APIキーを取得するには、Flickrでユーザー登録後、アプリ作成のページから発行できます。



※ 「Get you API key」の「Request an API key」からAPIキーを取得できます。アプリのタイプは、Non-Commercial(非商用)。アプリ名などは「Sample」とでも入れておけばAPIキーが発行されます。

PHPサンプル

今回は、PHPでサンプルを作ってみることにしたので、PHPからfclikrのAPIをphpFlickrを使っています。phpFlickrは、サイトから最新版をダウンロードしてください。

<html>
<body>
<h1>Flickr CC Serach</h1>
<form method="get">
 <input type="text" name="q" value="<?php echo @$_GET['q']; ?>"><button type="submit">Search</button>
</form>
<hr>
<ul>
<?php
include_once 'phpFlickr/phpFlickr.php';
define('API_KEY', '** Your API key');
define('API_SECRET', '** Your API key secret');

$result = null;
if (isset($_GET['q'])) {
 $flickr = new phpFlickr(API_KEY, API_SECRET);
 $result = $flickr->photos_search(array(
  "text" => $_GET['q'],
  "per_page" => 200,
  "license" => "1,2,3,4,5,6",
  "sort" => 'relevant'
 ));
}

if ($result) {
 foreach ($result['photo'] as $photo) {
?>
<li style="float: left; margin: 0 10px 10px 0;">
 <a target="_blank" href="http://farm<?php echo $photo['farm']; ?>.static.flickr.com/<?php echo $photo['server']; ?>/<?php echo $photo['id']; ?>_<?php echo $photo['secret']; ?>.jpg" title="<?php echo $photo['title']; ?>">
  <img src="http://farm<?php echo $photo['farm']; ?>.static.flickr.com/<?php echo $photo['server']; ?>/<?php echo $photo['id']; ?>_<?php echo $photo['secret']; ?>_s.jpg">
 </a>
</li>
<?php
 }
}
?>
</ul>
</body>
</html>

URLの組み立て方が少しトリッキーですね。
実行するとこんな感じになります。




photos_search メソッドに指定できるパラメータは、こちらのページでも確認できますが、いくつかピックアップしてみたので参考にしてみてください。

tags - タグ(カンマ区切りで複数)
text - 検索キーワード(フリーワード)
min_upload_date - アップロード日From (YYYY-MM-DDかUNIXタイムスタンプ)
max_upload_date - アップロード日To
min_taken_date - 撮影日From(たぶんExifベース)
max_taken_date - 撮影日To(たぶんExifベース)
license - flickr.photos.licenses.getInfo のサンプルにあるIDをカンマ区切りで指定します。"1,2,3,4,5,6"を指定すれば、すべてのCCライセンスを取得できそうですね。
sort - ソート順 (date-posted-asc|date-posted-desc|date-taken-asc|date-taken-desc|interestingness-desc|interestingness-asc|relevance)
safe_search - セーフサーチ (1:for safe, 2:for moderate, 3:for restricted.)
machine_tags - おそらくExifベースで設定されたタグから検索できるだんと思います
machine_tag_mode - ?
lat - 撮影された場所の緯度(Exifベース)
lon - 撮影された場所の軽度(Exifベース)
per_page - 1ページ内の表示件数
page - ページ

まとめ

CCライセンスの画像は、作者などを表示することで、ブログやWebサイトなどにも貼り付け可能なので、アイキャッチ画像として使ったり結構します。もはや過去の遺物になりつつあるFlickrですが、画像メディアを使ったマッシュアップは、まだまだ利用価値があると思いますので、時間があるときでも何か新しいアイディアを練ってみるのもいいかもしれません。

0 件のコメント:

コメントを投稿