2005-04-10

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

Trackback URL:

Comments and Trackback (1)

  1. トラックバックのテスト

    自分のとこでも大丈夫なのかな?

Post a comment

使用できるXHTMLタグ: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>