tetraの外部記憶箱

«前の日記(2009-07-13) 最新 次の日記(2009-07-16)» 編集
Category;

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配信機能を付けてほしい)

本日のツッコミ(全4件) [ツッコミを入れる]
_ Kiske (2009-07-16 09:29)

こんにちは。PHOTOHITOの中の人です。<br><br>ユーザごとの写真一覧のRSSは要望があればつける、というステータスなので社内で1度検討してみます。

_ tetra@管理人 (2009-07-16 19:58)

Kiske様<br>コメントありがとうございます!RSSが出れば、色々と応用できてうれしいです。ぜひ、ご検討をお願いします。

_ Kiske (2009-08-10 11:42)

tetraさん<br><br>こんにちは。遅くなりましたがユーザRSSを暫定的に実装してみました。<br><br>photohito.com/user/XXXX/atom <br><br>上記の例のURL形式でアクセスできるのでお試しください。<br>あとフィードにenclosureタグも追加してみています。こちらも合わせてご利用ください。

_ tetra@管理人 (2009-08-16 23:30)

Kiske様<br>すばらしい!早速、ヒマを見て色々試してみたいと思います。<br>わざわざのご連絡、ありがとう御座いました。