はてなブックマーク Web Hookを使って自分がはてブ登録したことを通知する
目次
はじめに
こんにちは、irucaです。
はてなブックマークのAPIの中でも、Web Hook という機能を使って、「自分がはてなブックマーク登録したことを契機にリアルタイムで動作するプログラム」の作り方を紹介したいと思います。
- はてなブックマーク登録した瞬間にエクセルにログを残す
- はてなブックマーク登録したことをtwitterにツイートする
- はてなブックマークした瞬間に自分にメールを飛ばす
など、利用方法はいろいろありそうです。
WebHookの登録
まずははてなブックマークの設定画面から、
はてなブックマークに登録されたときにHTTPで通知する先を登録します。
設定画面から「開発者向け」を選び、
イベント通知を受け取るURLに「http://[自分の持っているサーバのホスト名]/cgi-bin/main.cgi」など、はてなブックマーク登録したときにHTTP POSTでアクセスしてもらいたいURLを登録します。
また、「キーの自動生成」ボタンを押して、たしかにはてなから届いた正式なイベント通知であることを示すパスワードを取得しておきましょう。
「受け取るイベントの種類」には、いったん「ブックマークの追加 / 更新 / 削除」を選んでおきます。
「変更を保存」を押して登録完了です。
イベント通知を受け取るプログラムを作成する
さて、イベント通知をHTTP POSTメソッドで受け取って、何かしら動作するプログラムを用意します。
今回はpythonで、CGIプログラムを使って作成してみたいと思います。
サーバを持っている方はHTTPDなどのウェブサーバをインストールして起動しておきます。
yum -y install httpd service httpd start
デフォルトで /var/www/cgi-bin/ 配下にはCGIプログラムを置けるので、ここに main.cgi というCGIスクリプトを作ります。
ブックマークを追加したら、その詳細をテキストファイルに出力してログを残すだけのプログラムです。
#!/usr/bin/python #-*- coding:utf-8 -*- import cgi import os import sys sys.path.append('/root/hateblo-auto-bookmark-back/') import subscription_util #============== # 取得したkeyをここに入力 valid_key = "HOGEHOGEFUGAFUGA" # ブックマーク情報を残したいテキストファイルへの絶対パスを入力 log_filepath = "/tmp/my_bookmark.log" #============== """ 自分が何かをブックマークしたイベントをきっかけに、 ブックマークしたことをログに残すCGI """ print "Content-type: text/html\n\n"; form = cgi.FieldStorage() if os.environ['REQUEST_METHOD'] != 'POST': print '不正なアクセスです。' sys.exit() required_keys = ["key", "username", "title", "status", "timestamp"] for required_key in required_keys: if not form.has_key(required_key) : print '不正なアクセスです。' sys.exit() key = form["key"].value if key != valid_key: print '不正なkeyです。' sys.exit() username = form["username"].value title = form["title"].value timestamp = form["timestamp"].value status = form["status"].value # ブックマークに追加された場合は if status=="add": with open( log_filepath , "a") as f: f.write("[%s] %sさんが %s をブックマークしました。\n" % ( timestamp, username, title ) ) print "ok!" else: print "not related event."
上で取得したkeyを自分のものに書き換えてください。
また、CGIファイルのパーミッションに実行権限をつけておきましょう。
chmod +x main.cgi
実行してみる
では、とりあえず適当な自分の記事をはてなブックマークに登録してみます。
ポチッ
…
ログファイルを確認してみます。
[2017-06-04T21:13:41+09:00] iruca21さんが pythonから任意のURLをはてなブックマー クに追加する [はてなREST API] - Iruca Log をブックマークしました
おおお、ちゃんと記録されている。
満足です。
皆さんもぜひ使ってみてくださいー。