Ruby で Twitter/Facebook/はてなブックマーク等の各種カウント情報を取得する

Rubygems - crown を長らく放置していたので少し整理しました.せっかくだったので,Web サービス毎に定義している各種メソッドで微妙にインターフェースが違っている部分を統一して,各種カウント値を一気に取得できるように調整しました.

Crown::CGM.proxy メソッドに以下のシンボルを指定すると,対応する CGMAPI を操作するためのオブジェクトが返ってきます.現状では count メソッド(ツイート数,「いいね!」数,はてブ数など各種カウント情報を取得する)くらいしか実装されていませんが,またそのうち整備していこうと思います.

尚,RubyGems.org に gem を登録する - Life like a clown の記事を Rubygems - crown の簡易マニュアルとしていますので,詳細等はそちらを参照下さい.

サンプルプログラム

require 'rubygems'
require 'crown'

services = [
#   :twitter_user,      # Twitter (ユーザ名を指定)
    :twitter_uri,       # Twitter
    :topsy,             # Topsy
    :tweetmeme,         # TweetMeme
#   :backtype,          # BackTweets (要 API key)
    :facebook,          # Facebook
    :hatena_bookmark,   # はてなブックマーク
    :livedoor_clip,     # Livedoor クリップ
#   :livedoor_reader,   # Livedoor Reader (フィードの URL を指定)
    :delicious,         # Delicious
    :buzzurl,           # Buzzurl
    :yahoo_bookmark,    # Yahoo! ブックマーク
]

# --------------------------------------------------------------------------- #
#
#  指定された URL に関する各種 CGM のカウント情報を取得する.
#
#  Parameters:
#    ARGV[0]: URL1
#    ARGV[1]: URL2
#    ...
#
# --------------------------------------------------------------------------- #
ARGV.each { |uri|
    printf("%s\n", uri)
    services.each { |service|
        printf(" + %-20s : %6d\n", service, Crown::CGM.proxy(service).count(uri))
    }
}

例えば,上記のプログラムに http://www.google.co.jp/http://www.yahoo.co.jp/ を指定して実行すると,以下のような結果を取得できます.

$ ruby example/cgmcount.rb http://www.google.co.jp/ http://www.yahoo.co.jp/
http://www.google.co.jp/
 + twitter_uri          : 220462
 + topsy                :  97556
 + tweetmeme            :  74690
 + facebook             :  59974
 + hatena_bookmark      :   7109
 + livedoor_clip        :    749
 + delicious            :    617
 + buzzurl              :    320
 + yahoo_bookmark       :  76421
http://www.yahoo.co.jp/
 + twitter_uri          :  53136
 + topsy                :  21377
 + tweetmeme            :  26266
 + facebook             :  11861
 + hatena_bookmark      :  11419
 + livedoor_clip        :   1381
 + delicious            :   1214
 + buzzurl              :    878
 + yahoo_bookmark       : 140489