2013/03/22

PHPからフォト蔵のAPIを使ってCCライセンスの画像を検索する

以前の記事で、flickrの写真検索APIを紹介したのですが、今回は、いまさらながら、PHPからフォト蔵のAPIを使って、CC(Commons creative)ライセンスの写真を検索してみようと思います。

リクエスト仕様

ドキュメントは、ここにあります。いくつかAPIメソッドがあるようですが、ここでは、検索APIメソッドを紹介します。アクセスキーなどは必要ありません。

http://api.photozou.jp/rest/search_public  (GET or POST)

keyword
検索キーワード(最大100文字)

copyright
著作権設定で検索(normal:ライセンスなし、creativecommons:CCライセンス, all:すべて)

copyright_commercial
CCライセンス下で営利目的での利用(copyrightパラメータにcreativecommonsを指定したときのみ有効)(yes:許可、no:許可しない)

copyright_modifications
CCライセンス下で改変の許可(yes:改変を許可、no:改変を許可しない、share:同一条件化で配付)

limit
検索の上限を指定します。(省略時100件、最大1000件)

offset
検索のオフセットを指定します(0から始まる)。

レスポンス仕様

こんな感じのXMLが帰ってきます。
<?xml version="1.0" encoding="UTF-8" ?>
<rsp stat="ok">
  <info>
    <photo_num>100</photo_num>
    <photo>
      <photo_id>172424880</photo_id>
      <user_id>105169</user_id>
      <album_id>7626966</album_id>
      <photo_title>魁桜</photo_title>
      <favorite_num>0</favorite_num>
      <comment_num>0</comment_num>
      <view_num>0</view_num>
      <copyright>creativecommons</copyright>
      <original_height>1456</original_height>
      <original_width>2184</original_width>
      <copyright_commercial>no</copyright_commercial>
      <copyright_modifications>no</copyright_modifications>
      <date>2013-03-21</date>
      <regist_time>2013-03-22T09:27:09+09:00</regist_time>
      <url>http://photozou.jp/photo/show/105169/172424880</url>
      <image_url>http://kura2.photozou.jp/pub/169/105169/photo/172424880.jpg</image_url>
      <original_image_url>http://kura2.photozou.jp/pub/169/105169/photo/172424880_org.jpg</original_image_url>
      <thumbnail_image_url>http://kura2.photozou.jp/pub/169/105169/photo/172424880_thumbnail.jpg</thumbnail_image_url>
      <large_tag><![CDATA[<a href="http://photozou.jp/photo/show/105169/172424880"><img src="http://kura2.photozou.jp/pub/169/105169/photo/172424880.jpg" alt="魁桜" width="450" height="300"></a><br><a href="http://photozou.jp/photo/show/105169/172424880">魁桜</a> posted by <a href="http://photozou.jp/user/top/105169">(C)のりりん</a>]]></large_tag>
<medium_tag><![CDATA[<a href="http://photozou.jp/photo/show/105169/172424880"><img src="http://kura2.photozou.jp/pub/169/105169/photo/172424880.jpg" alt="魁桜" width="240" height="160"></a><br><a href="http://photozou.jp/photo/show/105169/172424880">魁桜</a> posted by <a href="http://photozou.jp/user/top/105169">(C)のりりん</a>]]></medium_tag>
    </photo>
    ...
</info>
</rsp>

PHPサンプル

PHPで、このAPIを使って簡単なフォト蔵検索を作ってみます。きたないコードでごめん w。文字コードは、utf-8です。最大1000件までしか検索できないので、必要に応じてoffsetパラメータを指定するようにすれば、ページングができると思います。

<html>
<body>
<h1>フォト蔵 CC Serach</h1>
<form method="get">
 <input type="text" name="q" value="<?php echo @$_GET['q']; ?>"><button type="submit">Search</button>
 <select name="limit">
  <option value="100">100</option>
  <option value="200">200</option>
 </select>
</form>
<hr>
<?php
if (isset($_GET['q'])) {
 $limit = intval($_GET['limit']);
 $url = 'http://api.photozou.jp/rest/search_public?copyright=creativecommons&keyword='.urlencode($_GET['q']).'&limit='.$limit;
echo file_get_contents($url);
 $result = simplexml_load_file($url);
?>
<p><?php echo $result->info[0]->photo_num; ?>件がヒット</p>
<ul>
<?php foreach ($result->info[0]->photo as $photo){?>
<li style="float: left; margin: 0 10px 10px 0;">
 <a target="_blank" href="#">
  <img src="<?php echo $photo->thumbnail_image_url ?>">
 </a>
</li>
<?php
 }
}
?>
</ul>
</body>
</html>

動かすとこんな感じになります。ちょっと楽しくなってきました。



まとめ

flickrの写真検索APIと一緒につかうともっとすごい事ができるかもしれません。flickrは写真数が多いのですが、日本語での検索はあまり強くありません。日本語で検索できるフォト蔵のAPIは、まだまだ利用価値はあると思います。

0 件のコメント:

コメントを投稿