はてなブックマークAtomAPI用のPerlインターフェースを作ってみた

最近社内のIRCにおいて、URLつきで投稿するとリスト化して管理してくれる
botが作られてました。タグやコメントも管理出来てとてもよく出来ているので
気になったニュースとかを貼って共有するなんて感じで使っています。


ただ、情報の格納先が結局社内のサーバーに置いてしまうので、家で見ようとすると
いったんブラウザで開いてはてぶする必要があります。


出来れば、適当なはてなアカウント作っておいて、
botがそのアカウントのブクマに追加する → 皆でそのアカウントのパーソナルフィードを読む
みたいな感じにしたらいいかなーと妄想してました。


んで、はてぶのAPIのIFを調べたら以外になかったりしました。。。


ということで作ってみました。
http://github.com/masartz/p5-webservice-hatena-bookmark-lite/tree/master


「::Lite」をつけたのは逃げと、コミット直前にnaoyaさんのプロダクトで
こんなものを見つけてしまったため、自重しました。
http://github.com/naoya/perl-hatena-bookmark/tree/master


使い方はSYNOPSISの通りなのですが、

my $bookmark = WebService::Hatena::Bookmark::Lite->new(
    username  => $username,
    password  => $password,
);

### add
my $edit_ep = $bookmark->add(
    url     => $url,
    tag     => \@tag_list,
    comment => $comment,
);

### edit
@tag = ( qw/ kaka tete /);
$com = 'edit comment';

$bookmark->edit(
    edit_ep => $edit_ep,
    tag     => \@tag ,
    comment => $com  ,
);
### delete
$bookmark->delete(
    edit_ep => $edit_ep ,
);


editとdeleteする時には、addした時の返却値になってるEditURIのエンドポイントを
渡す必要がありますです。


別な方法としては、

my $feed = $bookmark->getFeed();

XML::Atom::Feedオブジェクト形式でフィードが取れます。

my @entries = $feed->entries;

で各エントリがXML::Atom::Entryオブジェクトの配列で取れるので、該当のエントリに対して

my $edit_ep = $bookmark->entry2edit_ep( $entry );

でEditURIのエンドポイントを取得してください。


という方法で出来るはずです。たぶん。