home «前の日記(2007-02-08) 最新 次の日記(2007-02-11)»

いろいろ
Seize the day.

2004|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|07|09|10|

2007-02-10 [長年日記]

[blog] 「複数 URL の livedoor クリップ件数の合計」を表示する

先日,"API を用いて「複数 URL のはてなブックマーク件数の合計」を表示する tDiary 用 Ruby スクリプト" [2007-01-28] という記事を書いたんだけど,今度はこれを livedoor クリップ用に拡張してみる.

はてなブックマークと同様,livedoor クリップにも API が用意されている. だいたいはてブ API と似ているので,Ruby を全く知らない自分でも見よう見真似でスクリプトが書けた.proxy の動作が良くわかんなかったので(激ぉ,使ってないけどいいかな (というか Ruby の XMLRPC::Client の仕様ってどのへん見れば載ってるんですかね.探したけど見当たらない).以下の内容を livedoor_clip_counter.rb として tDiary のトップページに置く.
#!/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 のブックマーク数も表示できるようになっている. ただし,この JavaScript では del.ici.ous 用の件数を画像でなくて文字列で表示し,さらにそこに下線を引いているため,うちのサイトで表示させるとリンク用の下線と 2 重になってしまい,見苦しい (上記の日経 BP や著者のサイトではもともとリンクに下線を引いていないので問題ない).なので,CSS で下線なしリンク用のクラス a.noline を新たに定義し,JavaScript 内でリンクを発行する際に noline 属性を与える必要があった.
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> ';
このエントリーをはてなブックマークに追加 はてなブックマーク数 はてなブックマークコメント   このエントリーを livedoor クリップに追加 livedoor クリップ数 このエントリーを del.ici.ous に追加 このエントリーを buzzurl に追加 buzzurl クリップ数

お名前:
E-mail:
コメント:
[TrackBack URL: http://nao.s164.xrea.com/td/tb.rb/20070210]
[(注) スパム対策のため,言及リンクのないトラックバックは受け付けていません.]
本日のリンク元
その他のリンク元
検索

以下の広告はサーバによって自動的に挿入されています.


Copyright © 2004-2006, nao. All rights reserved.