NP_cles()

12345678910111213141516171819202122232425262728

MTのmetaWeblog.newPost()にはまる

 
投稿者:hsur 投稿日時:2005-03-02 - 02:00
カテゴリー:Mail de Blog - / - トラックバック(default)- Views: 30

maildeblogですが、ちょっと正式公開前にとあるサーバに導入してみることにしました。

導入先のblogはMT-3.151-jaだったのですが、これまでほとんどNucleusでしかテストしていなかったせいか問題が発生してしまいました。XML-RPC経由で投稿すると必ず状態が「公開」になってしまうのです。API仕様にはboolean publishという属性があるのですが、どうやらこれが効いていない模様。

プログラミングインターフェイス(原文)

metaWeblog.newPost
機能; 新しい投稿を作成し、任意で公開します。
パラメータ: String blogid、String username、String password、struct content、boolean publish
返り値: 成功すると新しい投稿のString postid、失敗するとfault

ということで、いつものごとくソースを追いかけてみることにしました。
# MTはperlなのでこういうのが非常に助かります。

ソース中にだけコメントで書くのやめてくれ

ソースを追いかけてみると意外な事実が判明。

(MTdir)/lib/MT/XMLRPCServer.pm

## In 2.1 we changed the behavior of the $publish flag. Previously,
## it was used to determine the post status. That was a bad idea.
## So now entries added through XML-RPC are always set to publish,
## *unless* the user has set "NoPublishMeansDraft 1" in mt.cfg, which
## enables the old behavior.

っていうか、ソース中にコメントだけでこういうの書くのやめてくれ
なんでbad ideaなのか理由も書いてないし。

ぼやきモード

ドキュメントには「任意で公開(optionally publishes it)」って書いてあるから、これって明らかに仕様変更なんだけど、ソース追いかけないとそれがわからないんじゃドキュメントの意味がないじゃん。

プログラミングしてるとこんなん日常茶飯事ですが、やっぱり困りますね。
とりあえず今回はmt.cfgに「NoPublishMeansDraft 1」と書いてしのぐことにします。

書いてみたら、あっさりと直りました。ふぅ。

    このエントリは役に立ちましたか?

      

    トラックバックについて [policy]

    Trackback URL:
    Trackbacks
    XML-RPCでブログ記事を投稿するときにはmetaWeblog.newPostというメソッドを使います。 パラメータの5番目の項目で"publish"というフラグがあります。 ほとんどの日本語解説サイトでは"0:非公開, 1:公開"と解説されているのですがこれは間違いです。 XML-RPCを使ってMovableTypeに投稿する(PHP版) Movable Type で使える XML-RPC API 正しくは、"0:再構築しない, 1:再構築する"です。 こちら...
    DQNEO起業日記 (2011/07/21 23:11)

    Comments [policy]

    tsupo wrote:

    metaWeblog.newPost した後に mt.publishPost すれば、ちゃんと publish されます。MovableType は設定いじって
    NoPublishMeansDraft 1
    ってことができますが、TypePad系(ココログとか)はいじれないので、metaWeblog.newPost + mt.publishPost でしのいでいます。

    2005-03-02 10:56 <%HatenaAuth()%> 

    hsur wrote:

    tsupoさん

    アドバイスありがとうございます。mt.publishPostってそういうことなんですね。

    ツール作りはじめたときには簡単にできるのかなと思っていたんですけど、やっぱりXML-RPCもシステム間連携なんで、仕様の解釈の問題はどうしても避けて通れないですね。

    2005-03-03 06:28 <%HatenaAuth()%> 

    Add Comments

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン