はてなブログ AtomPub APIのPython WSSEサンプルコード
はてなブログにはAtom Publishing Protocol(AtomPub)が実装されており、そのAPIを利用することではてなブログの記事一覧を取得することや記事を投稿、編集、削除することが出来る。
はてなブログAtomPubにAPI仕様の簡単な説明といくつかの言語のサンプルコードが掲載されている。が、PerlとRubyはサンプルコードとして理解できるものの、3つめのサンプル言語がScalaというのが納得行かない。はてなにPython嫌われてるよ。嫌われてるよ。
ということで、簡単なWSSE認証のPythonのサンプルを書いておく。
- 作者: Mark Lutz,夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/02/26
- メディア: 大型本
- 購入: 12人 クリック: 423回
- この商品を含むブログ (127件) を見る
いきなりだがサンプルコード。
#!/usr/bin/python import datetime import random import hashlib import base64 import urllib2 userid = "[UserID]" apikey = "[AtomPub API Key]" blogid = "[BlogID]" apiurl = "http://blog.hatena.ne.jp/%s/%s/atom/entry" % ( userid, blogid) def make_wsse( userid, apikey): created = datetime.datetime.now().isoformat() + "Z" nonce = hashlib.sha1( str( random.random())).digest() digest = hashlib.sha1( nonce + created + apikey).digest() return 'UsernameToken Username="%s", PasswordDigest="%s", Nonce="%s", Created="%s"' % ( userid, base64.b64encode( digest), base64.b64encode( nonce), created) headers = { "X-WSSE": make_wsse( userid, apikey)} request = urllib2.Request( apiurl, headers=headers) response = urllib2.urlopen( request) print response.read()
userid | ログイン等に使うユーザ名 |
apikey | ブログの詳細設定にきさいされているAPIキー |
blogid | mon0.hatebalog.jp等のURL。ブログの基本設定にブログURLとして記載 |
これを変更すればそのまま使える。実行すると直近の記事7件(10件?)に関連するAtomが出力される。
はてなブログのAtomPub APIはBasic認証、WSSE認証、OAuthに対応している様子。Basic認証は試していないが最も単純に認証を行えるかと思う。だがBasic認証はセキュリティ的にあんまりよくなさそうなのでWSSE認証を選択した。世間的にはOAuthがベターかと思うが、アプリケーションの登録が必要などサンプルコード以外の説明も必要になるためWSSE認証とした。
また、先のAPI説明ページではAtomの解析までおこなっているようだが、このサンプルでは生のXMLを取得するまでとする。このXMLはAPI説明ページの内容とは少々異なるため、ドキュメントの内容から少々更新されているのかも知れない。また、ドキュメントにはXMLのフォーマットまで解説されていないので近日中にXMLのフォーマットを確認し記事にしようかと思う。
コードを変更する際は誤ってDELETE命令を出さないように注意。DELETEするともちろん復元することができない。
はてなブログにはエクスポート機能が提供されていないが、このAtomPub APIを用いることで全記事を取得できるようなのでエクスポート機能を実装できるかと思う。これも近日中に作成して記事にしようかと思う。
- 作者: 辻真吾
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/24
- メディア: 大型本
- 購入: 19人 クリック: 199回
- この商品を含むブログ (40件) を見る
パーフェクトPython (PERFECT SERIES 5)
- 作者: Pythonサポーターズ
- 出版社/メーカー: 技術評論社
- 発売日: 2013/03/05
- メディア: 大型本
- 購入: 1人 クリック: 65回
- この商品を含むブログ (16件) を見る
Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)
- 作者: 山本陽平
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/08
- メディア: 単行本(ソフトカバー)
- 購入: 143人 クリック: 4,320回
- この商品を含むブログ (174件) を見る
Professional Web 2.0 Programming (Wrox Professional Guides)
- 作者: Eric van der Vlist,Danny Ayers,Erik Bruchez,Joe Fawcett,Alessandro Vernet
- 出版社/メーカー: Wrox
- 発売日: 2006/11/29
- メディア: ペーパーバック
- クリック: 11回
- この商品を含むブログを見る