はてなブックマークAPIの getEntry
link rel="alternate" の URL おかしくないですか?
テストコード
#!usr/bin/perl use warnings; use strict; use XML::Atom::Entry; use XML::Atom::Client; my $hatena_id = 'はてなID'; my $password = 'パスワード'; my $url = 'ブックマークしたいURL'; my $summary = 'タグ・コメント等'; my $entry = XML::Atom::Entry->new; my $link = XML::Atom::Link->new; $link->rel('related'); $link->type('text/html'); $link->href( $url ); $entry->add_link($link); $entry->summary( $summary ); my $client = XML::Atom::Client->new; $client->username( $hatena_id ); $client->password( $password ); my $edit_uri = $client->createEntry("http://b.hatena.ne.jp/atom/post", $entry) or warn $client->errstr; my $edit_entry = $client->getEntry($edit_uri) or warn $client->errstr; print $edit_entry->as_xml . "\n" if defined $edit_entry;
動作結果
<?xml version="1.0" encoding="utf-8"?> <entry xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> <title>鼻からイカソーメンをすする女-BooksLegimo(ブックスレジモ)-</title> <link rel="related" type="text/html" href="http://blegi.jp/novel/top/1753?_mobile_site_session_id=ab0c844711a721c618195f2c403d8c00"/> <link rel="alternate" type="text/html" href="http://b.hatena.ne.jp/yomiusi/#10147816"/> <link rel="service.edit" type="application/x.atom+xml" href="http://b.hatena.ne.jp/atom/edit/10147816" title="鼻からイカソーメンをすする女-BooksLegimo(ブックスレジモ)-"/> <author> <name>yomiusi</name> </author> <generator url="http://b.hatena.ne.jp/" version="0.1">Hatena::Bookmark</generator> <issued>2008-09-25T15:43:23+09:00</issued> <id>tag:hatena.ne.jp,2005:bookmark-yomiusi-10147816</id> <summary type="text/plain">xyzzyのirc-modeのほうがいいかね</summary> </entry>
おかしい点
<link rel="alternate" type="text/html" href="http://b.hatena.ne.jp/yomiusi/#10147816"/>
は、
<link rel="alternate" type="text/html" href="http://b.hatena.ne.jp/yomiusi/20080925#bookmark-10147816"/>
が正しいのでは?
http://b.hatena.ne.jp/entry/http://blegi.jp/novel/top/1753?_mobile_site_session_id=ab0c844711a721c618195f2c403d8c00
では、http://b.hatena.ne.jp/yomiusi/20080925#bookmark-10147816にリンクしてますね。
一応、クライアント側で、以下の正規表現で#以降の修正は可能です。
$url =~ s/#([^a-z-]\d*)/#bookmark-$1/g;
でも、APIが直ったときのことをふまえての日付情報を入れるのが面倒なので、直してほしいなぁ。>スタッフ