Life is beautiful: PhotoShare の Atom/JSON/JSONP Feed の正式発表
これ、正式に発表されました。JSONPにも対応してるね。
http://feeds.bcphotoshare.com/users/[user_id].atom
http://feeds.bcphotoshare.com/users/[user_id].js ←これがJSONP
http://feeds.bcphotoshare.com/users/[user_id].json
JSONPのコールバック関数は指定できないっぽい。デフォルト「handlePhotoShare」で[user_id].js?callback=unkoとかやっても変化無し。
あと、また新しく見つけた。
http://feeds.bcphotoshare.com/public.atomとかでRecent PhotosのFeedが取れる(っぽいんだけど、内容が違う??)。何なんだろこれ。Atomのタイトルが「Big Canvas PhotoShare – public line」になってるし、Recent Photosじゃないのかな…?
アクセス回数制限のようなものは特にもうけていないので、ブログパーツを作るなり、RSSリーダーに読み込ませるなど自由に使っていただいてかまわない。
Life is beautiful: PhotoShare の Atom/JSON/JSONP Feed の正式発表
自由にやりたい放題やっていいのかー。
んー、なんか作ってみようかなぁ。ブログパーツ作っても使わんしなぁ…。
久しぶりのPhotoShareネタ。
インドにいたので告知はしてないですけど、RSSのフィードを出すようにしたんです。とりあえずユーザーごとの。写真のアップロードは用意してないですけど。
入り口としてのアプリ配布って考え方:BigCanvas中島聡対談 その7 | iPhoneアプリのAppBank
インドです。インドのケータイ電話加入者数マジハンパない!じゃなくて、「RSSのフィードを出すようにしたんです」のとこね!ぼく待望のRSSですよ(最近全くPhotoShare使ってなかったけども)。
んで、PhotoShareのサイト見てみたんだけど、RSSがどこにあるのかわかんない…。headのlinkにも無ければページ内のどこかにリンクがあるわけでもない…。urlをズコバコ変えてみて(photosをrssにしたりとかね)もRSSが表示されることはなかった…。
けど見つけた。「http://feeds.bcphotoshare.com/」にアクセスするとなんかXMLが表示される(これ見えちゃっていいやつ?)。んでその中のKeyを適当に選んでURLに追加してみるとFeedが表示された!JSONもある!
というわけで、自分のuser_idの番号を入れてみたんだけど、エラーのXMLが表示される。NoSuchKeyって。さっきの「なんかXMLが」にMaxKeys 1000っていうのがあったから、勝手に「あーRecentの1000件分のみね、うんうん」と思って、久しぶりにPhotoShareにアップロードしてからアクセスしたらいけた!Feed見れた。
RSSじゃなくてAtomやけど、まぁどっちでもいいです。JSONはcallbackには対応してないみたい。
Atomは「http://feeds.bcphotoshare.com/users/[user_id].atom」で、JSONは「http://feeds.bcphotoshare.com/users/[user_id].json」ね。
たとえばjQuery使って
$.getJSON('http://feeds.bcphotoshare.com/users/'+user_id+'.json', function(data){
$.each(data, function(i,item) {
$('<img/>').attr({'src': item.image, 'alt': item.title}).appendTo('#photoshare');
});
});
こんな感じで書けばいいと思う(動くか試してないけど)。
んーでも、AtomもJSONも見れなくなっちゃうから(イマイチどういう動きするのかわかんないけど)キャッシュがいるよなぁ。さくっとできないと、さくっとやろうと思わないんだよなー。
追記:
まだアクセスできるなぁ(2009-03-27)
追記2:
まだアクセスできるね。ってことは上記のMaxKey云々ってのは全く関係ないのかな。PhotoShareのatom/json吐き出し機能がスタートしてから一度でも写真をアップロードすれば恒久的にatom/jsonは吐かれるってことなのかな。
PhotoShareのデザイン変更があったので、ぼくが(勝手に)作ったPhotoShareJSONが出力されなくなっていたので、修正しました。
以前とHTMLの構造も違うし、表示される写真の枚数も12枚→100枚になってる。
ということでJSONも最大100枚分出力されます。最新hoge枚分出力とかやろうかと思ったけど、面倒くさくてそのまま。jsでif (i==15) return false; な感じで制限。
PhotoShare、Feed吐くかなーと思ってたけどまだみたいね。
このページの一番下、Meの下にぼくのPhotoShareの最新12枚を表示するようにしました。
PhotoShareのぼくのページのHTMLをWeb::Scraperして、整形して、JSON::XSで出力。そのそれをjqueryからAjaxで読み込んで整形して表示。という感じです。毎度毎度PhotoShareにアクセスすると遅いし怒られちゃうかもしれないから、適当にキャッシュしてます。RSSの出力もしようかと思ったというか最初はRSS出力がしたかったんだけど、ひとつ前のエントリーにも書いたように、日時の情報がきっちり取れないのでやめました。まぁ近いうちにオフィシャルで対応するみたいだしね(ですよね?)。あーそうなったらデータソースはHTMLからRSSに変更しよっと。
使われる方はどうぞ→「http://labs.11px.net/bcps/json/?userid=xxxx&callback=xxxx」
ただのjsonでいいやって方はcallbackは無しでもOKです。urlなんかは全く含まれていないので、こっちのエントリーを参考にしてください。あと、キャッシュのときは速いんだけど、更新するときの出力は遅いですのであしからず。それと、気が向いたら手を加えるかもしれないので、出力結果がやや変わるかも。
怒られたら止めまーす。
パブリックページ
- http://www.bcphotoshare.com/photos/public
ユーザーページ
- http://www.bcphotoshare.com/photos/[user id]
個別写真ページ
- http://www.bcphotoshare.com/photos/[user id]/[photo id]
ユーザーアイコン
- http://www.bcphotoshare.com/users-icon/[user id]/thumb40.jpg
- http://www.bcphotoshare.com/users-icon/[user id]/thumb68.jpg
- http://www.bcphotoshare.com/images/user-thumb40.jpg
画像
- http://images.bcphotoshare.com/storages/[photo id]/small200.jpg
- http://images.bcphotoshare.com/storages/[photo id]/small225.jpg
- http://images.bcphotoshare.com/storages/[photo id]/large.jpg
- http://images.bcphotoshare.com/storages/[photo id]/thumb68.jpg
- http://images.bcphotoshare.com/storages/[photo id]/thumb40.jpg
- http://images.bcphotoshare.com/storages/[photo id]/original.jpg
ユーザーアイコン・画像は他にもあるかも。Exifは何にもなし。画像のレスポンスヘッダにX-Appname: iphotolog。largeとかにはLast-Modifiedが入ってる。サーバーも違うなぁ。
iPhoneのアプリからアクセスすると日時の情報がしっかり表示されてるけど、Webのほうは「September 6, 2008」などと時間が入ってない。しかもタイムゾーンがGMT?