前回の投稿に引き続きJoomlaへの投稿プログラムについて。前回書いたようにサーバーへの接続エラーなどが生じてしまいどうしても思ったように投稿ができない。FireFoxのScribFireで日本語での投稿がちゃんとできるので問題はプログラム側であることがわかる。

http://q.hatena.ne.jp/1144846005が解決のヒントとなった。ping送信についてなので直接は関係ないのだが問題があった時、PEARのXML-RPCを使ったという回答がある。今回、私もPEARのXML-RPCを導入した。リンクのページからXML_RPC-1.5.2をDLし実装する。そしてhttp://memo.funny-k.com/archives/108/comment-page-1のページにあるソースをほぼ利用してソフトを組んだ。

<?php

//参考URL http://q.hatena.ne.jp/1144846005 PEARのXML-RPCを使用
//参考URL http://memo.funny-k.com/archives/108/comment-page-1

$host = “hoge.hogehoge.com”;
$user = “taro”;
$pass = “password”;
$xmlrpc = “/xmlrpc/index.php”;

$title = “記事のタイトル”;
$description = “本文”;

require_once(“XML/RPC.php”);

// クライアント作成
$client = new XML_RPC_client($xmlrpc,$host,80);

// メッセージ作成
$message = new XML_RPC_Message(“metaWeblog.newPost”,array(new XML_RPC_Value(1, “string”),new XML_RPC_Value($user, “string”),new XML_RPC_Value($pass, “string”),new XML_RPC_Value(array(“title” => new XML_RPC_Value($title, ‘string’),”description” => new XML_RPC_Value($description, ‘string’),”dateCreated” => new XML_RPC_Value(“”, ‘string’)),”struct”),new XML_RPC_Value(1, “boolean”)));

// メッセージ送信
$response = $client->send($message);
if(!$response){
  echo “Post Failed.\n”;
}

?>

このあたりのコードはたくさん出ていて特別なものではないのですがこれでうまく投稿ができました。どうも原因はXML-RPCライブラリーそのものだったようです(単に日本語環境で問題なのかもしれませんが)。XML-RPCもいろいろあるようなのでもし同じようなエラーで悩まされているなら変えてみるのもひとつの方法だと思います。

なお注意点が1つ。プラグインはmetaWeblog APIのみにすること。MovableType API があるとうまく投稿できない。同じAPIが中に含まれているためどちらが実行されるかにより結果が異なってくるためだろう。競合するAPIがある場合、使うAPIのほうだけを有効化することが必要。

実際に自動投稿するにはcronなどを利用するか、こちらのblogで紹介しているようなcronサービスを利用しphpを実行させることで可能となります。さらに記事の内容をデータベース(excelとか)で作っておいて、それを読み込ますとか、webからのデータを拾ってきて、投稿することにより完全な自動化が実現可能です。このあたりは以前の経験から先が見えてきています。またいずれご紹介したいと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>