基本的には以下のロジックで動いています。
- Flickrから自分の写真データの最新100件を取得する
- 取得したデータをJW Image Rotator用のプレイリストとして書き出す
- プレイリストを読み込んでランダムで表示
この方法のメリットは、写真の表示に関わる部分をJW Image Rotatorが面倒見てくれることです。
ランダム表示とか、写真のリサイズとか。
以下、関連するプログラムのコードを部分的に載せておきます。
Flickrから画像を取得するのには、phpライブラリ、phpFlickrを使用します。
phpFlickr
APIへの接続を代理してくれるだけでなく、キャッシュもしてくれるので便利です。
これを使って、最新t件を取得するコードは以下。
private static function getPhotos($t)
{
$f = new phpFlickr(API_KEY);
$flickrData = $f->people_getPublicPhotos(USER_ID, $t);
$photos = array();
foreach($flickrData['photo'] as $key => $value):
$photos[$key] = $value;
endforeach;
return $photos;
}
API_KEYと、USER_IDは各自設定してください。
API_KEYはFlickrのApply for a new API Keyから申請し、取得することが出来ます。
取得後、Your API Keysで確認できます。
USER_IDについては確かどこかに記載されていたんですが…
探すのも面倒なので、こちらのサービスを利用して調べるのが手っ取り早いでしょう。
idGettr – Find your Flickr ID
次に、これをプレイリスト(XML形式)で書き出します。
例えばこんなコードを書いてみました。
public static function getXml($t)
{
$xml = '/xml/top.flickr.xml';
$photos = self::getPhotos($t);
$flickrs = array();
foreach($photos as $photo):
$flickrs[] = array(
'title' => $photo['title'],
'creator' => 'is',
'location' => 'http://farm' . $photo['farm'] . '.static.flickr.com/' . $photo['server'] . '/'. $photo['id'] . '_' . $photo['secret'] . '_m.jpg',
'info' => 'http://www.flickr.com/photos/is_kyoto_jp/' . $photo['id'] . '/',
);
endforeach;
$smarty = new MySmarty();
$smarty->compile_id = 'top_flickr';
$smarty->assign(array(
'flickrs' => $flickrs,
));
$fh = fopen($xml, 'w');
fwrite($fh, $smarty->fetch('top.flickr.tpl'));
fclose($fh);
return $xml;
}
プレイリストの仕様は、このあたりのページを参考に。
Playlists3 ? JW Player ? Trac
僕の場合は、Smartyで定義しておいてそれを読み込んで
ファイルに書き出すということをやっていますが、単にそうしたかっただけなので、
上のページのサンプルのようにベタにファイルを書き出しても良いと思います。
プレイリストのサンプルはこんな感じ。
最後に、読み込む場所にコードを挿入します。
JW Image Rotatorに関する設定については以前書いたエントリを参照していただくとして、
実際に書いたコードはこんな感じです。
幅180px高さ120px、ナビゲーション無し、クリックしたときの動作はリンク先へ飛ぶ、
リンク先は新しいウィンドウで開く…などです。
これで、終わりです。
上記サンプルでは、自分の画像をピックアップしていますが、
phpFlickrの使いようによっては、グループとか友達とか全体のとか、
色々と応用できる気がします。
スライドショーで画像を表示するツール、Flashは他にもたくさんあるんですが、
解りやすい拡張性を持つという意味ではやっぱり、
JW Image Rotatorが今時点のベストかなぁと思います。
非商用ならフリーで使えますしね。