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)