JavaScript-Slideshow を使う。(7) – with ZorgAPI

スクリプトはこちら
[Slideshow]
http://www.electricprism.com/aeron/slideshow/

今回は「写真を自動的に取得し、それをスライドショーで表示する」
というプログラムを作成しました。

ZorgのAPIを利用します。
[Zorg API]
http://www.zorg.com/ano/api

写真と言えばFlickrが有名なのですが、
個人的にZorgの写真の方が好きなので・・・・
でもFlickrの写真数は半端じゃないので、FlickrのAPIもいつか使ってみたいと思います。
(日本語対応もされるようですし。)

◆PHP5の設定(余談)
今回は結果をXML形式で取得し、SimpleXMLで加工することにしました。
SimpleXMLは PHP5からの対応なので、
今回レンタルサーバーにPHP5を使用するための設定を追加しました。

私が利用しているレンタルサーバーでは、PHPのバージョンの使い分けができます。
デフォルトはPHP4なのですが、拡張子を追加することでPHP5を使うこともできます。
.htaccessに次の設定をしました。
AddHandler application/x-httpd-php5 .php5
AddHandler application/x-httpd-php4 .php4

これで拡張子.phpと.php4はPHP4、拡張子.php5はPHP5で実行されるようになりました。
(phpinfo();で確認しました。)
デフォルトの.php拡張子をPHP5にすることもできますが、
今回はまだその必要はないのでやめておきます。
(親フォルダに拡張子設定をしたものの、WordPressへの影響を確認していないので・・・)

◆写真情報の取得
PHPプログラムで写真共有APIから「注目のフォト(25件)」を取得します。
http://www.zorg.com/ZServices/?method=zorg.community.getPopularPhotos&usermail=[メールアドレス]&userpass=[暗号化したパスワード]
引数としてログインIDと暗号化したパスワードを送信するのですが、
ZorgAPIのページで、そのときログインしているユーザー用の
呼び出しURLを自動的に生成してくれるので
暗号化とかは特に考えなくて大丈夫でした。

SimpleXMLのオブジェクトとして写真情報を取得します。
$xml = simplexml_load_file($apiurl);

写真情報はこのようなXML構造になっています。
<zservice>
  <resultcode>[結果(成功なら1)]</resultcode>
  <photos>
    <photo photo_id="xxx">
      <owner user_id="xxx">[投稿者]</owner>
      <title>[タイトル]</title>
      <dates>
        <posted_date>[投稿日]</posted_date>
        <taken_date/>[撮影日]</taken_date>
      </dates>
      <images>
        <view>[写真画像url]</view>
        <thumbnail>[サムネイル画像url]</thumbnail>
        <square>[正方形の画像url]</square>
        <minimum>[小さなサイズの画像url]</minimum>
      </images>
    </photo>
    [<photo>が複数件ある]
  </photos>
</zservice>

SimpleXMLを使用すると、タグ名を指定すればデータにたどり着くことができます。
(XMLが配列のような形で取得できます。)
ビックリするぐらい簡単でした。
親階層からたどっていき、取得したデータで動的にスクリプトを作成しました。
// ex) タイトルの取得
$title = $xml->photos->photo[0]->title

最終的に取得したデータの中から
「images-view」「title」「owner」を使用しています。
(phpはまだまだ勉強中なのでこれ以上詳しくは書けません・・・。)

作成したものがこちらになります。
[Zorg Popular Photos]
http://terakonya.sarm.net/work/slideshow/index.php5
サイズを小さくすればページのどこかにちょっとのせるのにいいかもしれない。

◆作成時間
API呼び出し、JavaScript生成:3時間くらい
表示用HTMLの作成(主にimg作成):2時間くらい
慣れればもう少し早くできるようになるかな・・・と思います。
何はともあれ、とりあえず完成してよかった。

次回、slideshow最終回(になる予定)。

2 comments:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください