このサイトについて

はてなブックマークとnewsbitsの統合

はてなブックマークとnewsbitsの統合

del.icio.usやったら次は はてなブックマーク でしょ。ということで,newsbitsに投稿したリンクを,はてなブックマークにも投稿するようにしてみました。サイトから拝借した(スイマセン!)「B!」アイコンをクリックすると,はてなでブックマークを共有している人のリストにジャンプするようにしてみました。

はてなブックマークでは AtomAPI が公開されているので,コイツを使う。認証は WSSE なんだそうで,仕様とかサンプルを見ながら専用のモジュールを書いてみる。

PythonではてなブックマークにURLを追加するためにはこんな風にする。

#!/usr/local/bin/python2.3

import urllib2
import random
import base64
import datetime
import sha

user = 'XXXXX'
passwd = 'XXXXX'

dt = datetime.datetime(2005,12,12)
#make 'once'
nonce = str(random.random())+str(dt.today())
#ISO format date
created = dt.now().isoformat()+'Z'
#make Digest
d = sha.new(nonce+created+passwd)

wsseheader = 'UsernameToken Username="%s", PasswordDigest="%s", ' +
                    
'Nonce="%s", Created="%s"'
#make Request instance
req = urllib2.Request('http://b.hatena.ne.jp/atom/post')
#make WSSE-auth header
req.add_header('X-WSSE',
               
wsseheader %
               
(user,base64.encodestring(d.digest()).strip(),
                
base64.encodestring(nonce).strip(),created))
req.add_header('Content-Type','text/xml')

body = """<entry xmlns="http://purl.org/atom/ns#">
<link type="text/html" rel="related" href="%s" />
</entry>"""

#post a request
handle = urllib2.urlopen(req, body % 'http://coreblog.org/')
#show response
print handle.read()

まずルートのエンドポイントにアクセスしてPostURIを取得するのがお行儀がいいのだけど,まあサンプルということで。XMLったってこのレベルでは「単なる文字列」なので,高級なことをする必要はありませんな。レスポンスをパースするにはfeedparserを使えばいい。

で,だれかpyhatena作ってくれないかな...。

2010-08-27 04:34