スクリプトはこちら
[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最終回(になる予定)。
毎日見てます~
ありがとうございます~
これからも精進します。