フォト蔵のサムネイルをランダムに表示するブログパーツ。
PHPで書いてみました。トップページの右上のやつです。
前はflickrのを置いてた場所。同じようなのをフォト蔵で。
自分で作らなくても、フォト蔵はjavascriptのブログパーツを配布してるのですが、サムネイルがちょっとデカかった。flickrと同じ、75×75にしたかった。
カンタンに大きさが変えられなかったので(いや変えられるのかもしれないですが…汗)、いっそ自家製で開発してしまえと。
前から、フォト蔵APIを利用して、PHPで何か作りたいなと思ってたので、挑戦してみました。
参考にしたのは、こちら。
■第4回 写真を表示するAPIを使ってみる - マッシュアップ講座
けっこう手こずっちゃったよ。しょせん素人だわ。
何が難しいというて、ロリポのサーバはPHP4。
PHP5だとxmlをカンタンに扱えるけど、4は正規表現を使ってうだうだやる必要がある。
ライブラリを使ったりする手もあるんですが、やっぱ正規表現でガチンコ勝負でしょう(いや、そんな大げさなことでもないんですがw)。
というわけで、できました(^▽^)v
フォト蔵にアップした写真から、ランダムに表示します。
フォト蔵APIで呼び出したXMLから、ストリング・パターン(正規表現)でタイトルや画像やURLを取り出し配列化。
そして、array_randで、配列からランダムに取り出して、表示させます。
array_randって、値じゃなくて、キーだけなんだ。ちょっと手間取った。
便利だと思ったのは、
・文字列から<タグ>をはずす、strip_tags。
・変数の文字コードを変換して文字化けを回避する、mb_convert_variables。
以下のコードでは、最新の100枚からランダムに3枚を取り出して表示。
サービスでテーブルも付けときました! 横並びに3枚、枠つきだよ。余分か。。
「ユーザID」は、五桁の数字。うちは29995。フォト蔵の自分の写真ページのURLを見るとわかります。五桁じゃない人もいるかもしれない。
PHPの使えないところでも動く、javascript版も作れればいいなあ。<?php
//フォト蔵の写真を表示する関数
function photozou(){
//XMLデータ取得用ベースURL
$req = "http://api.photozou.jp/rest/photo_list_public?type=public&user_id=ユーザID&limit=100";
//XMLファイル内容を全て文字列に読み込む
$buf = file_get_contents($req);
//各ストリング・パターン(正規表現)
$pattern[title] = '/<photo_title>(.*?)<\/photo_title>/';
$pattern[url] = '/<url>(.*)<\/url>/';
$pattern[img] = '/<thumbnail_image_url>(.*?)<\/thumbnail_image_url>/';
//配列にする
preg_match_all($pattern[title], $buf, $match[title]);
preg_match_all($pattern[url], $buf, $match[url]);
preg_match_all($pattern[img], $buf, $match[img]);
//文字化け対策(うちのブログはEUCなので)
mb_convert_variables( 'EUC-JP', 'UTF-8', $match[title] );
//配列からランダムに3つ取り出す(値じゃなくてキーのみ)
$randkey = array_rand($match[title][0], 3);
//HTMLの記述
$ret = '<div class="photozou">';
$ret .="<table cellpadding=\"0\" cellspacing=\"6\" border=\"1\" id=\"flickr_badge_wrapper\"><tr><td>";
$ret .= "<a href=\"".strip_tags($match[url][0][$randkey[0]])."\">";
$ret .= "<img src=\"".strip_tags($match[img][0][$randkey[0]])."\" alt=\"".strip_tags($match[title][0][$randkey[0]])."\" width=\"75\" height=\"75\">";
$ret .= "</a></td>\n";
$ret .= "<td><a href=\"".strip_tags($match[url][0][$randkey[1]])."\">";
$ret .= "<img src=\"".strip_tags($match[img][0][$randkey[1]])."\" alt=\"".strip_tags($match[title][0][$randkey[1]])."\" width=\"75\" height=\"75\">";
$ret .= "</a></td>\n";
$ret .= "<td><a href=\"".strip_tags($match[url][0][$randkey[2]])."\">";
$ret .= "<img src=\"".strip_tags($match[img][0][$randkey[2]])."\" alt=\"".strip_tags($match[title][0][$randkey[2]])."\" width=\"75\" height=\"75\">";
$ret .= "</a></td></tr></table>\n";
$ret .= "</div>";
return $ret;
}
//フォト蔵の写真を表示する関数をコール(^v^)
echo photozou();
?>
【おまけ・私はなぜフォト蔵】
それはフォト蔵が無料で、flickrが有料だからヾ(^o^;)
ハードディスクが安い安い昨今、flickrもほんとは無料にしようとすればできそうですが、これまでの有料会員に義理を立てているように思えるw
たぶん私が有料会員に登録すると、その二三ヶ月後には無料化すると思います。
だってね、これまでも、そうだったんだ。
私はネットスケープにも金を払ったし、ウインアンプにも金を払ったし、オペラにも金を払ったよ。
最悪のネット人生ではないか。
そして、私が払い込むと、それを確認した上で、無料化が始まるのです。
思えば、宮沢りえがCMしていた、0088の日本テレコムからして、私は3000円払った。
クレジットカードも、これまで、すごい「年会費」を払ってきた気がする。一ヶ月遅れて、年会費無料になるのです。かならずそうなるのです。過酷な人生です。
そういうわけで、私はけっしてflickrの有料版を使わないっ。
私が使うかどうかが、flickrが全面無料化するかどうかの基準になっているはずです。
flickrの中の人は、私の動向をチクイチ観測して判断している。
今日も電柱の影に隠れる、黒服の男を見かけました。
世界経済無料化の鍵を私が握っているのです。
今年はアメリカの株を買おうかと思ってたのですが、思っただけで、このざまです。
テロリストよりすごいかもしれない。株、無料化。。
買ってやるとも、マイクロソフト。ふっふっふ。
…とアホなことを書いてますが、フォト蔵はたいへん充実したサービス。重宝してます。日本ローカルなのがまたビミョーなところですw
だめだ、あんまり、応援になってないや(´▽`;)
■Google Trends(世界): flickr,picasa,photobucket,フォト蔵,priea
■Google Trends(日本): flickr,picasa,photobucket,フォト蔵,priea