FC2ブログに自動で記事を投稿するPHPプログラム 書いてみた。

PHPメモ

FC2ブログに自動で記事を投稿するPHPプログラム 書いてみた。
ブログに外部プログラムから投稿するには、XML-RPC というインタフェースを使ってphpで….
って頭が痛くなりそうなので難しい話は自力で調べてください。^^;
キーワードは、php xml-rpc XML/RPC.php xmlrpc.php などで検索すればいいかも。
仕組みを知りたい方はとりあえずこちらでも
http://mikilab.doshisha.ac.jp/dia/research/report/2005/0813/007/report20050813007.html
さて、テストしたプログラムですが正常に投稿できているようなので公開します。
このサンプルプログラムをベースにすれば後は簡単だな。v(^^
ちなみにこちらのサイトを参考にさせていただきました。
http://atamanote.blog48.fc2.com/blog-entry-47.html
よく似たコードがネット上のあちこちにあるのでいろいろ見て参考にするといいかもです。
コードだらけで見にくいですが、ログイン情報と投稿する記事を書き換えるだけです。

ブロブ自動投稿プログラム

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

//FC2用定義情報
$fc2_blogid = "0";
$fc2_host = "blog.fc2.com";
$fc2_xmlrpc_path = "/xmlrpc.php";
// //////////////////////////////
// 変更箇所
// //////////////////////////////
//ブログのログインID(メールアドレス)を記入
$fc2_user = "mail@address.xxx";
//ブログのログインパスワードを記入
$fc2_passwd = "password";
//記事情報
//投稿モード(0:下書記事、1:公開記事)
$kiji_mode = 1;
//記事のタイトル
$kiji_title = "FC2ブログに自動で記事を投稿するPHPプログラム のテスト記事(タイトル)";
//記事の本文
$kiji_honbun = "FC2ブログに自動で記事を投稿するPHPプログラム のテスト記事(本文)<br /><br />
このサンプルプログラムの詳細は、<a href=\"https://marumusi-soft.iceprobe.net/\">まるむしアンテナ</a>のブログにて。<br />";
// //////////////////////////////
//以下固定
$bm = new BlogManager();
$bm->post_blog($kiji_mode,$kiji_title,$kiji_honbun);

class BlogManager {
    function post_blog($kiji_mode,$kiji_title,$kiji_honbun){
        global $fc2_xmlrpc_path,$fc2_host,$fc2_user,$fc2_passwd;
        //クライアントの作成
        echo "クライアント作成<br\n>";
        $c = new XML_RPC_client( $fc2_xmlrpc_path, $fc2_host, 80 );
       
        //送信データ
        $blogid   = new XML_RPC_Value($fc2_blogid, 'string');
        $username = new XML_RPC_Value($fc2_user,   'string');
        $passwd   = new XML_RPC_Value($fc2_passwd, 'string');
        $content  = new XML_RPC_Value(array(
        'title'      => new XML_RPC_Value($kiji_title,  'string'),
        'description'=> new XML_RPC_Value($kiji_honbun, 'string'),
        'dateCreated'=> new XML_RPC_Value(date("Ymd\TH:i:s",time()), 'dateTime.iso8601')
        ), 'struct');
        $publish  = new XML_RPC_Value($kiji_mode, 'boolean');
        //XML-RPCメソッドのセット
        $message = new XML_RPC_Message('metaWeblog.newPost',array($blogid, $username, $passwd, $content, $publish) );
       
        $this->send_message($c,$message);
       
    }
   
    function get_users_blogs(){
        global $fc2_xmlrpc_path,$fc2_host,$fc2_user,$fc2_passwd;
        //クライアントの作成
        echo "クライアント作成<br\n>";
        $c        = new XML_RPC_client( $fc2_xmlrpc_path, $fc2_host, 80 );
        $appkey   = new XML_RPC_Value ( ''         , 'string' );
        $username = new XML_RPC_Value ( $fc2_user  , 'string' );
        $passwd   = new XML_RPC_Value ( $fc2_passwd, 'string' );
       
        //メッセージ作成
        echo "メッセージ作成<br\n>";
        $message = new XML_RPC_Message( "blogger.getUsersBlogs",array($appkey, $username, $passwd) );

        send_message($c,$message);
    }
   
    function send_message($c,$message){
        //メッセージ送信
        echo "メッセージ送信<br\n>";
        $result  = $c->send($message);
       
        if( !$result  ){
             exit('Could not connect to the server.');
        }else if( $result ->faultCode() ){
             exit('XML-RPC fault ('.$result ->faultCode().'): '
                 .$result ->faultString());
        }
       
        return $result ;
    }
}
?>

ファイルが良ければこちらからダウンロードしてちょ。 fc2_blog.txt
拡張子がphpのままだとアップできないのでtxtに変更してあります。
ダウンロードしたら fc2_blog.txtfc2_blog.php に変更してください。
とりあえず動かしてみたい場合は、
ソースの$fc2_user,$fc2_passwdを自分のものに書き換えて、
phpが実行できるホームページエリアにアップロードして実行すれば動きます。
実行の仕方は、たとえば、
http://anatano_hp.com/fc2_blog.php
といった感じですね。
ちなみにFC2の無料ホームページでは、phpの実行は禁止されています。
まるむしはxreaというところにもサーバーを持っているのでそちらからテストしました。
正常に動くと、ブラウザには、
クライアント作成
メッセージ送信
と2行表示されます。
これでもうあなたのブログにサンプルの記事が投稿されているはずです。
あとはソース中にコメントを書いておいたので参考にしてください。
あまり突っ込んだテストはしていないのでコード中に不備があるかもしれませんが、
まぁサンプルプログラムということで^^;)

コメント

  1. toshi より:

    はじめまして

    FC2への投稿方法を探してここに辿り着きました。
    記事投稿はできたのですが、タイトル、本文が文字化けしてしまいます。

    原因にお心当たりございましたらお教えください。
    宜しくお願いいたします。

  2. まるむし より:

    こんばんは。^^

    fc2_blog.phpのファイルは文字コードを「UTF-8」で保存してください。
    多分「Sift-JIS」あたりを使っているのではないでしょうかね。

  3. toshi より:

    ご返信ありがとうございます。

    fc2_blog.phpは「UTF-8」で保存しておりますが文字化けしております…

    $kiji_title = mb_convert_encoding($kiji_title, “UTF-8”); としてみたり、いろいろ試してるんですけど上手くいきません。。。

  4. toshi より:

    上記コードに ini_set(“mbstring.internal_encoding”, “UTF-8”); を加えることで文字化けなしで投稿することができました。

    現在カテゴリの設定方法を調べております。もしご存知でしたらご教授ください…

タイトルとURLをコピーしました