SBM - del.icio.us ブックマーク数

 

del.icio.us では、 JSON URL Feeds を使用して「ページのブックマーク数」を取得できます。 「サイトの合計ブックマーク数」を取得するには、 「ページのブックマーク数」と同じ要領で、サイトが保有しているすべての URL を処理します。

ページのブックマーク数

ソースコード

1回のリクエストで 5件(最大で15件まで)の URL(MD5ハッシュ値)を del.icio.us に送信しています。 del.icio.us から受信した JSON を解析するために JSON パーサ を使用しています。

delicious_page_json.rb
#!/usr/bin/ruby -Ku

require 'net/http'
require 'digest/md5'
require 'rubygems'
require 'json'          # gem install json

Net::HTTP.version_1_2

md5 = [
    'http://diaspar.jp/node/142',
    'http://diaspar.jp/node/141',
    'http://diaspar.jp/node/140',
    'http://diaspar.jp/node/139',
    'http://diaspar.jp/node/138'
].map { |url| Digest::MD5.hexdigest(url) }

host = 'badges.del.icio.us'
path = '/feeds/json/url/data?hash=' + md5.join('&hash=')
body = Net::HTTP.start(host, 80).get(path).body

JSON.parse(body).each { |item|
    puts "#{item['url']} : #{item['total_posts']}"
}

変数 path の内容

del.icio.us へのリクエストです(ホスト名を除く)。 見やすくするために整形してありますが、実際には1行です。

/feeds/json/url/data
?hash=2796665fee82cd34174854e473beaefe
&hash=fe6f6a9777235fc1373cef15dca1b869
&hash=5e01f2286e0fe6596a102cc68d30bcd4
&hash=8a85cae2e8176adbe4a4a9fcc39464bc
&hash=2be0e4975ede2134a4b1cfabb80ef378

変数 body の内容

del.icio.us から受信した JSON です。 見やすくするために整形してありますが、実際には1行です。

[
    {   "hash":"2796665fee82cd34174854e473beaefe",
        "top_tags":{"greasemonkey":13,"plugin":6,"extension":63,"browser":8,"まとめ":19,"tips":15,"extensions":17,"software":14,"firefox":113,"links":6,"list":8},
        "url":"http://diaspar.jp/node/142",
        "total_posts":128
    },
    {   "hash":"2be0e4975ede2134a4b1cfabb80ef378",
        "top_tags":{"tutorials":2,"library":4,"javascript":3,"mootools":5,"webdesign":2,"ajax":2,"webdev":2},
        "url":"http://diaspar.jp/node/138",
        "total_posts":7
    },
    {   "hash":"8a85cae2e8176adbe4a4a9fcc39464bc",
        "top_tags":{"javascript":5,"library":2,"jquery":7,"ajax":3},
        "url":"http://diaspar.jp/node/139",
        "total_posts":8
    },
    {   "hash":"fe6f6a9777235fc1373cef15dca1b869",
        "top_tags":{},
        "url":"http://diaspar.jp/node/141",
        "total_posts":2
    }
]

実行結果

5件の URL を送信しましたが、返ってきたのはブックマークされている 4件分についてです。

$ ruby --version
ruby 1.8.5 (2006-08-25) [i386-linux]
$ chmod 744 delicious_page_json.rb
$ ./delicious_page_json.rb
http://diaspar.jp/node/142 : 128
http://diaspar.jp/node/138 : 7
http://diaspar.jp/node/139 : 8
http://diaspar.jp/node/141 : 2

覚え書き

  • XREA では動きませんでした。 原因の追究はしていません。 サーバによっては動くかもしれません。   XREA 側で環境を修正してくれたようです。 正しく動作することを確認しました。 (2007-03-20)

更新履歴

日付 内容
2007-03-10 変更 ブックマーク数の取得方法を、 スクレイピング から JSON へ変更した。
2006-12-07 初版