はてなブックマークAtomPub

はてなブックマークの自動登録スクリプトの話。
今まで「hatenabm」ライブラリを使用していましたが、リニューアル後しばらくたって(11/25あたり)から403エラーで使えなくなっちゃいました。ソースを解析するのが面倒なので、空いた時間を利用して「はてなダイアリーAtomPub」のRubyの例題を流用して作成しました(笑)。素人作なので、プロ仕様的なものを誰か作ってくれると助かるんだけどね。
ソースはこんな感じ。

require 'rubygems'
require 'atomutil'

auth    = Atompub::Auth::Wsse.new :username => 'hatena-id', :password => 'password'
client  = Atompub::Client.new :auth => auth

collection_uri = 'http://b.hatena.ne.jp/atom/post'

entry = Atom::Entry.new(
  :title => "", # タイトル(何入れても無視される模様(苦笑))
  :link => Atom::Link.new(
    :type => "text/html",
    :rel => "related",
    :href => "" # リンク、下記の「urls」にセット
  ),
  :summary => Atom::Content.new(
    :type => "text/plain",
    :body => "" # コメントおよびタグ
  )
)

urls = <<EOF
http://hogehoge/
http://foo/bar
EOF

urls.each_line { |line|
  entry.link.href = line.strip
  puts client.create_entry(collection_uri, entry)
}

解説はしません。理解できる方だけどうぞ。つーか、ソースに(苦笑)なんて入れるのは俺くらいだろうな。
コメントおよびタグは「[tag]コメント〜」という感じで記入すれば、一括で入ります。「[あとで読む]」みたいなのを入れとくと便利かもね(笑)。
ブックマークに書き込まれたら...

[]http://b.hatena.ne.jp/atom/edit/nnnnnnnn[]

...ってのが表示されますが、その前に...

Bad Content Type: application/x.atom+xml;charset=utf-8

って叱られます。
何で?