XML-RPCでソーシャルブックマークの被ブックマーク数取得

2008/08/14

XML-RPCを使ってみたくなり、任意のWebページのソーシャルブックマークの被ブックマーク数をXML-RPCで取り出すプログラムを書いてみました。

言語はRubyです。

ここでは「はてなブックマーク」と「livedoorクリップ」からブックマークされている数を取り出していますが、手続きが共通化されているので他のサービスでも簡単に同様の処理ができそうです。

はてなブックマーク件数取得API
livedoorクリップ件数取得API

尚、以下は考慮していません。

- エラー処理

- Proxyサーバ経由の接続

#!/usr/local/bin/ruby

require 'xmlrpc/client'

#
# ブックマークサービス定義
# - はてなブックマーク
# - livedoorクリップ
#
services = {
             'hatena_bookmark' => 'http://b.hatena.ne.jp/xmlrpc',
             'livedoor_clip'   => 'http://rpc.clip.livedoor.com/count',
            }

methods = {
           'hatena_bookmark' => 'bookmark.getCount',
           'livedoor_clip'   => 'clip.getCount',
          }

#
# 被ブックマーク調査ページ定義
#
targets = [
           'http://www.apple.com/jp/',
           'http://www.google.co.jp/',
           'http://b.hatena.ne.jp/',
          ]

#
# ブックマーク数調査
#
services.each {|serv, uri|		# ブックマークサービス毎処理

  client = XMLRPC::Client.new2(uri)

  method = methods["#{serv}"]

  puts "<#{serv}>"

  targets.each {|target|		# 被ブックマーク調査ページ毎処理

    result = client.call(method, target)

    num = result["#{target}"]

    puts "#{target} => " + num.to_s
  }

  puts
}

(実行結果)

<hatena_bookmark>
http://www.apple.com/jp/ => 694
http://www.google.co.jp/ => 1982
http://b.hatena.ne.jp/ => 1721

<livedoor_clip>
http://www.apple.com/jp/ => 71
http://www.google.co.jp/ => 260
http://b.hatena.ne.jp/ => 152