はてなブックマークWeb Hookに触ってみる
はてなブックマークTwitter投稿スクリプトをのんびりと製作している間に、こんなの欲しいと思っていた機能がリリースされていました。
はてなブックマーク Web Hookとは - はてなキーワード
RSSの場合、一定時間ごとにスクリプト側から更新を見に行く必要があるのと、スクリプトから呼び出し頻度が1回/30分に制限されている (はてなブックマークの場合) ので、今ひとつ使い勝手が悪い。自分がブックマークしたタイミングで、はてなブックマークから呼び出してくれればいいのにと思っていました。
「はてなブックマークWeb Hook」はまさにそういう機能のようなので、早速ちょろっと試してみました。
ブックマークエントリ追加時に呼び出されるCGIスクリプト
「はてなブックマークWeb Hook」では、ブックマークエントリ追加時に、自分が指定したURLを呼び出すという仕組みになっています。Perlで書かれたサンプルがありますが、ここはRubyで書いてみます。
とりあえずは、呼び出し側から受け取ったパラメータをログファイルに保存するだけ。
webhook-test.cgi:
#!/usr/bin/ruby -Ku require 'cgi' cgi = CGI.new open("/tmp/webhook-log.txt", "a") {|f| f.puts f.puts "username: #{cgi['username']}" f.puts "url: #{cgi['url']}" f.puts "count: #{cgi['count']}" f.puts "status: #{cgi['status']}" f.puts "comment: #{cgi['comment']}" f.puts "timestamp: #{cgi['timestampe']}" f.puts "is_private: #{cgi['is_private']}" f.puts "key: #{cgi['key']}" } cgi.out("text/plain") { "ok\n" }
はてなブックマーク側の設定
はてなにログインした状態で、はてなブックマークトップ→設定→データ管理で、Web Hookの欄に、CGIスクリプトの設置先であるURLと、認証のためのキーを指定します。
キーは自動生成することもできます。
実行
以上の準備が整ったら、適当なページをブックマークします。
その結果、以下のようにログファイルにブックマークエントリの情報が追加されていることが確認できました。
username: m-kawato url: http://www.amazon.co.jp/gp/product/4774138975 count: 36 status: add comment: [book] timestamp: is_private: 0 key: <キー>
ここでkeyパラメータの値は、はてなブックマークの設定画面で入力したものと同一です。