Hatena@Cielquis.Net
Home >> Bookmark >> Count

Declaration

class Count
    def initialize()    # Count.new() -> count
    def entry(uri)      # count.entry(str/arr) -> num/hash
    def site(uri)       # count.site(str) -> num
    def asin(code)      # count.asin(str/arr) -> num/hash
end

def count(uri)          # count(str/arr) { |str, num| block } -> num/hash
def site_count(uri)     # site_count(str) { |str, num| block } -> num
def asin_count(code)    # asin_count(str/arr) { |str, num| block } -> num/hash

Overview

Bookmark::Count クラスは, はてなブックマーク件数取得API をラップしたクラスです.URL または ASIN コードを指定すると対応するエントリーの被ブックマーク数を返します.entry(),および asin() メソッドには配列で複数の URI/ASIN コードを指定することができます. 配列で複数の URI/ASIN コードが指定された場合,これらのメソッドは {URI/ASIN => 被ブックマーク数} のハッシュで結果を返します.ただし, 配列で指定した場合,結果の被ブックマーク数は数値ではなく数字文字列で返されます.

Bookmark::count(), Bookmark::site_count(), Bookmark::asin_count() は Bookmark::Count クラスをラップした関数です.これらの関数は, ブロックを指定することもできます.

Example

example_count.rb

#!/usr/bin/ruby -Ku
require 'hatena'

list = [
    "http://d.hatena.ne.jp/tt_clown/",
    "http://clx.cielquis.net/",
    "http://www.hatena.ne.jp/",
    "http://www.yahoo.co.jp/",
    "http://www.google.co.jp/"
]

session = Hatena::Bookmark::Count.new
list.each { |uri|
    count = session.entry(uri)
    site = session.site(uri)
    puts("#{uri} has #{count} bookmarks.")
    puts("#{uri} has #{site} bookmarks (total).")
    puts
}

# Hatena::Bookmark::count(), Hatena::Bookmark::site_count(),
# Hatena::Bookmark::asin_count() の 3 つの関数は,引数が
# 文字列/配列に関わらずブロックも指定できる.
# 尚,Hatena::Bookmark::Count クラスのメソッドは,ブロック指定不可.
puts("Test with block.")
puts("----------")
Hatena::Bookmark::count(list) { |uri, count|
    printf("%4d %s\n", count, uri)
}
Result

Test count() and site_count().
----------
http://d.hatena.ne.jp/tt_clown/ has 6 bookmarks.
http://d.hatena.ne.jp/tt_clown/ has 698 bookmarks (total).

http://clx.cielquis.net/ has 20 bookmarks.
http://clx.cielquis.net/ has 23 bookmarks (total).

http://www.hatena.ne.jp/ has 1938 bookmarks.
http://www.hatena.ne.jp/ has 55311 bookmarks (total).

http://www.yahoo.co.jp/ has 3940 bookmarks.
http://www.yahoo.co.jp/ has 4085 bookmarks (total).

http://www.google.co.jp/ has 2167 bookmarks.
http://www.google.co.jp/ has 36548 bookmarks (total).

Test with block.
----------
  20 http://clx.cielquis.net/
   6 http://d.hatena.ne.jp/tt_clown/
1938 http://www.hatena.ne.jp/
3940 http://www.yahoo.co.jp/
2167 http://www.google.co.jp/

example_asin.rb

#!/usr/bin/ruby -Ku
require 'hatena'

list = ["4883808696", "B001MTQY5I", "4478006040", "4844326430", "4797350938"]

Hatena::Bookmark::asin_count(list) { |code, count|
    printf("%4d ASIN:%s\n", count, code)
}
Result

   6 ASIN:4478006040
  11 ASIN:4797350938
  16 ASIN:B001MTQY5I
  14 ASIN:4883808696
  12 ASIN:4844326430