Declaration
class Entry
User = Struct.new(:tags, :date, :comment)
Related = Struct.new(:eid, :uri, :title, :count)
Response = Struct.new(:eid, :uri, :image_uri, :title, :count, :users, :related)
def initialize(proxy = nil) # Entry.new(str) -> entry
def reset() # entry.reset() -> entry
def get(uri) # entry.get(str) -> response
def each(uri) # entry.each(str/arr) { |response| block } -> entry
end
Overview
Bookmark::Entry は, はてなブックマークエントリー情報取得 API のラッパクラスです.get() メソッドにおいて URI を指定すると,対応するブックマークエントリーの情報 (Bookmark::Entry::Response) を返します.
each() メソッドは,get() と同様に指定した URI に対応するエントリー情報を取得し, その結果をブロックへと渡します.each() の引数には配列で複数の URI を指定することができます.
尚,Bookmark::Entry は JSON 形式のデータの解析を行うために rubygems で公開されている json ライブラリを使用しています.そのため, Bookmark::Entry を使用する際には rubygems および json ライブラリをインストールする必要があります.
Response,および User, Related 構造体の各メンバ変数は以下の通りです.
Response
- eid ..... エントリー ID (String)
- uri ..... ブックマークされている URI (String)
- image_uri ..... スクリーンショット画像の URI (String)
- title ..... タイトル (String)
- count ..... 被ブックマーク数 (Integer)
- users ..... ブックマークユーザに関する情報 (Hash {String => User})
- related ..... 関連エントリーに関する情報 (Array [Related])
User
- tags ..... タグ情報 (Array [String])
- date ..... ブックマーク時刻 (Time)
- comment ..... ブックマークコメント (String)
Related
- eid ..... エントリー ID (String)
- uri ..... エントリーの URI (String)
- title ..... タイトル (String)
- count ..... 被ブックマーク数 (Integer)
Example
#!/usr/bin/ruby -Ku
require 'hatena'
list = [
"http://clx.cielquis.net/",
"http://d.hatena.ne.jp/tt_clown/",
"http://www.hatena.ne.jp/",
"http://www.yahoo.co.jp/",
"http://www.google.co.jp/"
]
entry = Hatena::Bookmark::Entry.new.get(list[0])
puts("ID : #{entry.eid}")
puts("URI : #{entry.uri}")
puts("Image: #{entry.image_uri}")
puts("Title: #{entry.title}")
puts("Count: #{entry.count}")
print("Users: ")
entry.users.each { |key, value|
print("#{key}, ")
}
puts("\n\n")
puts("Related entries")
puts("----------")
index = 1
entry.related.each { |item|
printf("%3d: %s\n", index, item.title)
index += 1
}
puts
# each メソッド
puts("using each method.")
puts("----------")
Hatena::Bookmark::Entry.new.each(list) { |entry|
puts("#{entry.uri} (#{entry.count})")
}
Result ID : 9267487 URI : http://clx.cielquis.net/ Image: http://screenshot.hatena.ne.jp/images/120x90/2/8/6/6/1/ 27280789a0d43cff821cec1c06e0eb95682.jpg Title: CLX C++ Libraries Count: 20 Users: vtwinautomaton, Wacky, makaya, Ubuntu, cubicdaiya, camelmasa, tsukkee, amachang, nsato, haru-s, toge, TAKESAKO, mattn, randynet, kaorun, tt_clown, Watson, Related entries ---------- 1: Intel® Threading Building Blocks 2: Japan.internet.com デベロッパー - Intel TBBの並列コンテナによる安全で スケーラブルな並列処理 using each method. ---------- http://clx.cielquis.net/ (20) http://d.hatena.ne.jp/tt_clown/ (6) http://www.hatena.ne.jp/ (1938) http://www.yahoo.co.jp/ (3940) http://www.google.co.jp/ (2167)