2009-07-14
_ [tDiary][Ruby] recent_photohitoプラグイン
tDiaryにphotohitoへ投稿した写真のサムネイルを表示するプラグイン作ってみた。
あらかじめ「rubygems」と「hpricot」と「open-uri」のインストールが必要。
# recent_photohito.rb: indicate your photos posted to photohito # parameters (default): # userID: ID number of photohito # max: max of items(5) require 'rubygems' require 'hpricot' require 'open-uri' def recent_photohito(userID, max = 5) r = "" l = "http://photohito.com" url = "#{l}/user/#{userID}" doc = Hpricot(open(url)) list = (doc/'li.photo-container') hrefs = (list/:a).map {|elem| elem[:href]} srcs = (list/:img).map {|elem| elem[:src]} r << %Q[<div class="recent-photohito">\n] for x in 0..max-1 link = "#{l}#{hrefs[x]}" src = "#{l}#{srcs[x]}" num = hrefs[x].gsub(/\/photo\//,"") r << %Q[<div class="photohito"><a href="#{link}">] r << %Q[<img alt="#{num}" src="#{src}" border=0></a></div>\n] end r << "</div>\n" return r end
使い方は、ヘッダー等に、
<%= recent_photohito 6157, 8 %>
などと入れる。
最初のパラメータ(必須)は、写真一覧ページ“http://photohito.com/user/XXXX”の最後の数字。
2番目のパラメータ(デフォルトは5)は、表示数。(最大16まで)
divも吐きますんで、適当にCSS側で指定してやってください。
毎回、ページを読み込むごとにphotohitoのページをパースしてリストを生成しますんで、多少、表示が遅くなります。(キャッシュ使いこなせれば良いんだけど・・・)
もちろん、photohito側の仕様変更で使えなくなる場合がありますんで、ご了承ください。
(ちなみにrss生成スクリプトも自作してみたんだけど、そっちはあまり実用的じゃないので未公開・・・というか、photohitoにRSS配信機能を付けてほしい)
こんにちは。PHOTOHITOの中の人です。<br><br>ユーザごとの写真一覧のRSSは要望があればつける、というステータスなので社内で1度検討してみます。
Kiske様<br>コメントありがとうございます!RSSが出れば、色々と応用できてうれしいです。ぜひ、ご検討をお願いします。
tetraさん<br><br>こんにちは。遅くなりましたがユーザRSSを暫定的に実装してみました。<br><br>photohito.com/user/XXXX/atom <br><br>上記の例のURL形式でアクセスできるのでお試しください。<br>あとフィードにenclosureタグも追加してみています。こちらも合わせてご利用ください。
Kiske様<br>すばらしい!早速、ヒマを見て色々試してみたいと思います。<br>わざわざのご連絡、ありがとう御座いました。