tDiaryの記事をNucleusに移す その2
Perlスクリプトをがんばって作ったとこまではよかったんだけど、どうもNucleusにnewPostしたときに記事の投稿時間が反映されなくて、全部投稿時点の日付になってしまう。dateCreatedがちゃんとiso8601フォーマットになっとらんのか、とかいろいろ調べてみたが、どうにもならず。
で、こんなページを発見。NucleusのXML-RPCのせいっぽい・・・とほほ。
しかしここまで来てあきらめるのも癪に障るので、NucleusのXML-RPCを改造。以下、diff。
nucleus/xmlrpc/api_metaweblog.inc.php
*** api_metaweblog.inc.php.bak 2005-04-09 21:01:00.000000000 +0900
--- api_metaweblog.inc.php 2005-04-10 10:41:19.000000000 +0900
***************
*** 37,42 ****
--- 37,44 ----
$struct = $m->getParam(3);
$content = _getStructVal($struct, 'description');
$title = _getStructVal($struct, 'title');
+ $timestamp = _getStructVal($struct, 'dateCreated');
+ $timestamp = iso8601_decode($timestamp);
// category is optional (thus: be careful)!
$catlist = $struct->structmem('categories');
***************
*** 45,51 ****
$publish = _getScalar($m,4);
! return _addItem($blogid, $username, $password, $title, $content, '', $publish, 0, $category);
}
--- 47,53 ----
$publish = _getScalar($m,4);
! return _addItem($blogid, $username, $password, $title, $content, '', $publish, 0, $category, $timestamp);
}
nucleus/xmlrpc/server.php
*** server.php.bak 2005-04-09 20:56:07.000000000 +0900 --- server.php 2005-04-10 10:41:48.000000000 +0900 *************** *** 83,91 **** /** * Adds an item to the given blog. Username and password are required to login */ ! function _addItem($blogid, $username, $password, $title, $body, $more, $publish, $closed, $catname = "") { $blog = new BLOG($blogid); ! $timestamp = $blog->getCorrectTime(); return _addDatedItem($blogid, $username, $password, $title, $body, $more, $publish, $closed, $timestamp, 0, $catname); } --- 83,91 ---- /** * Adds an item to the given blog. Username and password are required to login */ ! function _addItem($blogid, $username, $password, $title, $body, $more, $publish, $closed, $catname = "", $timestamp) { $blog = new BLOG($blogid); ! // $timestamp = $blog->getCorrectTime(); return _addDatedItem($blogid, $username, $password, $title, $body, $more, $publish, $closed, $timestamp, 0, $catname); }
newPost以外で_addItem呼んでるとうまく行かない可能盛大(blogger APIとか)なので、コピーが終わったら戻しておいたほうがいいかもね。
それにしても、NucleusのAPIがこんなにダメダメだとは思わなかった。おとなしくMovableTypeにしときゃよかったかしら・・・orz
トラックバックのテスト
自分のとこでも大丈夫なのかな?