未だにメインがMovableType3.3ということもあって、Ogawaさん作成のMovableTypeからはてなブックマークに投稿するプラグイン「AddToHatenaBookmarkプラグイン」を愛用している(MT4向けにはHatenaBookmarkerプラグインと言う名前で後継プラグインがリリースされています。こちらはメンテナンスされています)のですが、どうも上手く投稿できなくなってしまいました。はてなブックマークに投稿は出来るのですが、タイトルはエントリのURL、コメントやタグは入力されない感じに。


(画像は取り忘れたので再現です…)
正直中身についてはよくわかってないんですが、とりあえずエラーログを見てみるとこんな感じ。

[AddToHatenaBookmark] getEntry failed: Error on GET atom/edit/XXXX: 400 URL must be absolute

相対パスじゃなくて絶対パスでリクエストしろよ、と怒られてるみたいです。連続したリクエストなんだから別にいいじゃねーかよとも思うんですが、その辺はなにがしかの仕様変更があったんだと思うのでとりあえずそれに従ってAddToHatenaBookmark.plを以下のように変更。


70行目

my $entry_old = $hatena->getEntry($editURI);

  ↓

my $entry_old = $hatena->getEntry('http://b.hatena.ne.jp/' . $editURI);

96行目

$msg = $hatena->updateEntry($editURI, $entry_new) ?

  ↓

$msg = $hatena->updateEntry('http://b.hatena.ne.jp/' . $editURI, $entry_new) ?

これでアップし直して投稿し直してみたら直りました。おおー。

もしお困りの方がいらっしゃいましたら参考までに。



ちなみに、いったん直そうとするのを諦めて他の策としてPHPででも投稿するようにするかとHTTP_Requestを使って投稿するプログラムを書いて、実際上手く動いてあとはこれをどう絡めるかだなーとか思ってたんですが、そのときにPostURIが返してくるレスポンスが相対パスであることに気づいて…やってみたら上手くできたという次第。

よくよく考えると気持ちが悪いんですけどね…また何か問題が起きたらその時に考える方向で。



追記

HatenaBookmarkerも同じ現象で正常に投稿できない(投稿は出来るけど取得と編集が出来ない)状況になっているようです。最新版(執筆時点で0.11)でも同じ。全ての環境で再現できる現象なのか、永続的に続き現象なのかはよくわかりませんがとりあえず上記と同様の方法で直ります。

lib/HatenaBookmarker/CMS.pm 83行目

my $editURI = $client->createBookmarkEntry( { url => $obj->permalink, } );

  ↓

my $editURI = 'http://b.hatena.ne.jp/' . $client->createBookmarkEntry( { url => $obj->permalink, } );

こちらは本当に問題があるなら(=僕の環境が特別じゃないなら)、多分Ogawaさんがフォローしてくれはると思いますので、とりあえず暫定で。