high booster 小型水槽でアクアリウム トップ

« 生涯2度目のJAF | メイン | 久しぶりのクリックブリック »

2005年8月10日

XML-RPCでMovableTypeに投稿してみよう!

MovableTypeの管理画面からエントリーを投稿するのは、基本的にはあまり不自由していないんだけど、いろいろあってプログラムからMovableTypeにエントリーを投稿できるようにしたいと思い、XML-RPC+PHPでMovableTypeに投稿するものを作ってみました。

以下、サンプルプログラムです。
ちなみに、TrackBackPingが正常に動いているかは不明です。
エントリーの投稿までは結構すんなりできたんだけど、投稿したエントリーのカテゴリを設定するところでかなり悩みました。

$categ = new XML_RPC_Value(array($categstruct,$categstruct1), 'array');
↑この一行にたどり着くまでが長かった・・・。

<?php
require_once("XML/RPC.php"); //XML-RPC package 読み込み
$GLOBALS['XML_RPC_defencoding'] = "UTF-8";

//XML-RPCインタフェース、ユーザ定義
$mt_host = "ホスト名 たとえば finder-web.net";
$mt_xmlrpc_path = "xmlrpc.cgiへのパス たとえば/cgi-bin/mt/mt-xmlrpc.cgi";
$mt_user = "ユーザ名";
$passwd = "パスワード";

//クライアントの作成
$c = new XML_RPC_client( $mt_xmlrpc_path, $mt_host, 80 );

$appkey = new XML_RPC_Value( '', 'string' );
$username = new XML_RPC_Value( $mt_user, 'string' );
$passwd = new XML_RPC_Value( $passwd, 'string' );
$blogid = new XML_RPC_Value( '3', 'int' );


//投稿テスト
$cate_id = "主カテゴリーのID";
$sub_cate_id = "サブカテゴリーのID";

$entry_title = "タイトル";
$entry_title = mb_convert_encoding($entry_title, "UTF-8", "auto");

$content = "内容";
$content = mb_convert_encoding($content, "UTF-8", "auto");

$text_more = "続き";
$text_more = mb_convert_encoding($text_more, "UTF-8", "auto");

$excerpt = "概要";
$excerpt = mb_convert_encoding($excerpt, "UTF-8", "auto");

$keywords = "キーワード";
$keywords = mb_convert_encoding($keywords, "UTF-8", "auto");

$content = new XML_RPC_Value(
array("title" => new XML_RPC_Value($entry_title),
"description" => new XML_RPC_Value($content),
"dateCreated" => new XML_RPC_Value(""),
"mt_allow_comments" => new XML_RPC_Value(""),
"mt_allow_pings" => new XML_RPC_Value(""),
"mt_convert_breaks" => new XML_RPC_Value(""),
"mt_text_more" => new XML_RPC_Value($text_more),
"mt_excerpt" => new XML_RPC_Value($excerpt),
"mt_keywords" => new XML_RPC_Value($keywords),
"mt_tb_ping_urls" => new XML_RPC_Value(array(
new XML_RPC_Value("http://www.blogpeople.net/servlet/weblogUpdates"),
new XML_RPC_Value("http://ping.bloggers.jp/rpc/"),
new XML_RPC_Value("http://rpc.weblogs.com/RPC2"),
new XML_RPC_Value("http://bulkfeeds.net/rpc")),'array')
), "struct");


$publish = new XML_RPC_Value( '0', 'boolean' );

$post = new XML_RPC_Message(
'metaWeblog.newPost',
array($blogid, $username, $passwd,$content,$publish) );


//メッセージ送信
$result = $c->send($post);

$postid = XML_RPC_decode( $result->value() );

if( !$result ){
exit('Could not connect to the server.');
}

//送信したメッセージにカテゴリをつける
//主カテゴリー
$categstruct = new XML_RPC_Value(
array(
"categoryId" => new XML_RPC_Value($cate, 'string'),
"isPrimary" => new XML_RPC_Value(1, 'boolean'),
),'struct');
//サブカテゴリー
$categstruct1 = new XML_RPC_Value(
array(
"categoryId" => new XML_RPC_Value($sub_cate, 'string')
),'struct');

$categ = new XML_RPC_Value(array($categstruct,$categstruct1), 'array');

$p_id = new XML_RPC_Value( $postid,'int' );

$set_category = new XML_RPC_Message(
'mt.setPostCategories',
array($p_id, $username, $passwd,$categ) );
$result = $c->send($set_category);

if( !$result ){
exit('Could not set category.');
}else{
print "add entry compleated";
}

?>


このエントリーをはてなブックマークに追加このエントリーをはてなブックマークに追加
Yahoo!ブックマークに登録

投稿者 high_booster : 2005年8月10日 12:39 コメント(0)

関連するエントリー

吉田かばん(ポーター)を愛用しています。

スポンサードリンク

アクセスランキング(コラム)

人気コラム一覧

アクセスランキング(Blogエントリー)

人気エントリー一覧

このサイトについて

  • 趣味のアクアリウム、音楽、iPod Touchの話題をメインに紹介しています。 気軽にコメント、トラックバックしてください!もちろんリンクフリーです。相互リンクも大歓迎です。

    この日記のはてなブックマーク数



最近のコメント

検索

Powered by
Movable Type 4.21-ja

GT-lolipop Rental Server


カレンダー

2012年7月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
あわせて読みたいブログパーツ