「複数 URL の livedoor クリップ件数の合計」を表示する
先日,"API を用いて「複数 URL のはてなブックマーク件数の合計」を表示する tDiary 用 Ruby スクリプト" [2007-01-28] という記事を書いたんだけど,今度はこれを livedoor クリップ用に拡張してみる.
はてなブックマークと同様,livedoor クリップにも API が用意されている.
#!/usr/bin/ruby require 'xmlrpc/client' require 'timeout' class LivedoorClipCounter def initialize @client = XMLRPC::Client.new2('http://rpc.clip.livedoor.com/count') end def count urls begin @client.call('clip.getCount', *urls) rescue XMLRPC::FaultException => e e.faultString rescue TimeoutError => e end end end if __FILE__ == $0 if ARGV.size != 1 print "usage: #{__FILE__} urls\n" exit else result = LivedoorClipCounter.new.count(*ARGV) result.each do |url, count| puts "#{url} #{count}" end end end
はてブの時と同様,コマンドラインからも使えるようになっている.また相変わらず Timeout::Error まわりは保留(激ぉ [2007-02-03]
で,permalink.rb 内で全く同様に
require 'livedoor_clip_counter'
した上で,
lcc = 0 resl = LivedoorClipCounter.new.count( urls ) resl.each do |url, countl| lcc += countl end
で lcc に件数を入れ,
<a href="http://b.hatena.ne.jp/entry/#{pml}"><img src="http://image.clip.livedoor.com/img/users/medium/#{'%05d' % lcc}.png" style="border: none;" alt="livedoor クリップ数" title="livedoor クリップ数" align="absmiddle" /></a>
で表示.
ついでに del.ici.ous もやろうかと思ったんだけど,API がなくて JSON の扱いがとても面倒そうだったのでやめてアイコンだけ表示することにした(ぉ.
さらについでに,以下のサイトにある JavaScript を利用して,tDiary 以外のコンテンツに対してもソーシャルブックマーク数を表示させることにした.こちらは JSON を自前で処理して del.ici.ous のブックマーク数も表示できるようになっている.
a.noline{ text-decoration:none; }
var delicious_html = '<a href="http://del.icio.us/url/?url='+encurl+'"'+ ' title="del.icio.us" class="noline">'+ '<img src="'+DELICIOUS_ICON+'" width="14" height="14" border="0"'+ ' style="vertical-align:middle; margin-right:2px;">'+ '<span id="delicious_count_'+encurl+'"'+ ' style="font-family:Verdana,Arial,Helvetica;'+ ' font-size:10px; vertical-align:middle;'+ ' color:#FF6563; background:#FFF0F0;'+ ' font-weight:bold; text-decoration:underline;"></span></a> ';