本ドキュメントははてなブックマークにおけるマイブックマークの全文を検索するAPI実装を解説するものです。
任意のクエリーを送信すると、対象のユーザーがブックマークしたエントリーに対して全文検索した結果を返すAPIです。全文検索の対象は、ブックマークされたエントリーのタイトル、本文、URL、コメント(タグを含む)です。
全文検索APIの認証にはOAuth認証、WSSE認証、およびCookie認証が利用されます。マイブックマーク全文検索APIの利用にはいずれかの認証が必須です。OAuth認証の詳細に関しては、はてなのOAuthを利用する方法を参照してください。WSSE認証の詳細に関しては、はてなサービスにおけるWSSE認証を参照してください。
Cookie認証 は通常のはてなブックマークでの認証を利用するもので、はてなブックマークにログインした状態で、はてなブックマーク全文検索APIにアクセスした場合利用されます。ブラウザによる直接のアクセスの他、 Greasemonkey などのユーザースクリプトからのアクセス時に利用できます。
https://b.hatena.ne.jp/my/search/json
に対し以下のクエリーパラメータを GET リクエストで送信することにより、JSON 形式でデータを取得することができます。
リクエストに対して次のようなステータスコードを返します
JSON データの構造は以下のようになっています。またJSON データはutf-8でエンコードされた文字列です。
任意のユーザーのブックマークに対して全文検索を行うperlのサンプルスクリプトは以下のようになります。ここではWSSE認証に、CPANモジュールの LWP::Authen::Wsse を利用しています。LWP::Authen::Wsse を利用しない場合の実装方法については、はてなフォトライフAtomAPIのWSSEの項を参照してください。
use strict; use warnings; use LWP::UserAgent; use JSON::XS; my $query = 'QUERY'; my $username = 'YOUR_USER_NAME'; my $password = 'YOUR_API_KEY'; my $ua = LWP::UserAgent->new; $ua->credentials( 'b.hatena.ne.jp:80', '', $username, $password ); my $res = $ua->get("https://b.hatena.ne.jp/my/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"; }
非同期にインデクスを作成しているため、ブックマーク全文検索の結果に最新のブックマークが反映されないことがあります。ご了承ください。