本ドキュメントははてなブックマークにおけるAPI実装を解説するものです。主にはてなスタッフがその作成と更新を行っています。
任意のクエリーを送信すると、対象のユーザーがブックマークしたエントリーに対して全文検索した結果を返すAPIです。全文検索の対象は、ブックマークされたエントリーのタイトル、本文、URL、コメント(タグを含む)です。この機能ははてなブックマークプラスをご利用時に限りお使いいただけます。
全文検索APIの認証にはWSSE認証および、Cookie認証が利用されます。マイブックマーク全文検索APIの利用にはいずれかの認証が必須です。WSSE認証の詳細に関しては、はてなフォトライフAtomAPIのWSSEの項 (http://d.hatena.ne.jp/keyword/%a4%cf%a4%c6%a4%ca%a5%d5%a5%a9%a5%c8%a5%e9%a5%a4%a5%d5AtomAPI?kid=88110#wsse) を参照してください。
Cookie認証 は通常のはてなブックマークでの認証を利用するもので、はてなブックマークにログインした状態で、はてなブックマーク全文検索APIにアクセスした場合利用されます。ブラウザによる直接のアクセスの他、 Greasemonkey などのユーザースクリプトからのアクセス時に利用できます。
http://b.hatena.ne.jp/ユーザーid/search/json
に対し以下のクエリーパラメータを GET リクエストで送信することにより、JSON 形式でデータを取得することができます。
例:) http://b.hatena.ne.jp/r_kurain/search/json?q=hatena&sort=users
また
http://b.hatena.ne.jp/ユーザーid/search/json
に対し、以下のクエリーパラメータを GET リクエストで送信することで、JSONP によるコールバック関数で囲まれたJSONデータを取得することができます。
例:) http://b.hatena.ne.jp/r_kurain/search/json?q=hatena&callback=funcname
ただし callback を指定し JSONP でデータを取得するリクエストを行った場合は、非公開に設定されたブックマークを取得することができません。
リクエストに対して次のようなステータスコードを返します
JSON データの構造は以下のようになっています。またJSON データはutf-8でエンコードされた文字列です。
任意のユーザーのブックマークに対して全文検索を行うperlのサンプルスクリプトは以下のようになります。ここではWSSE認証に、CPANモジュールの LWP::Authen::Wsse を利用しています。LWP::Authen::Wsse を利用しない場合の実装方法については、はてなフォトライフAtomAPIのWSSEの項 (http://d.hatena.ne.jp/keyword/%a4%cf%a4%c6%a4%ca%a5%d5%a5%a9%a5%c8%a5%e9%a5%a4%a5%d5AtomAPI?kid=88110#wsse) を参照してください。
use strict; use warnings; use LWP::UserAgent; use JSON::XS; my $query = 'QUERY'; my $username = 'YOUR_USER_NAME'; my $password = 'YOUR_PASS_WORD'; my $ua = LWP::UserAgent->new; $ua->credentials( 'b.hatena.ne.jp:80', '', $username, $password ); my $res = $ua->get("http://b.hatena.ne.jp/$username/search/json?q=$query"); die $res->status_line if $res->is_error; my $json = decode_json $res->content; for my $bookmark ( @{ $json->{bookmarks} } ) { print $bookmark->{entry}->{title} . "\n"; print $bookmark->{entry}->{url} . "\n\n"; }
非同期にインデクスを作成しているため、ブックマーク全文検索の結果に最新のブックマークが反映されないことがあります。ご了承ください。