SlideShare a Scribd company logo
XMLRPC で外部から投稿
    Fumito Mizuno
 mizuno@php-web.net
ブログに投稿する方法

XMLRPC + Blogilo

 XMLRPC + PHP
ブログに投稿する方法

XMLRPC + Blogilo

 XMLRPC + PHP
WordPress ブログに投稿する方法

1. 管理画面から
2. ブログトップから (P2テーマ)
3. リモート投稿 (XMLRPC)
4. メールで投稿
5. その他
ログイン


ブラウザで編集


記事公開




管理画面から投稿
管理画面から投稿

● WordPress の機能をフルに利用できる
  ○ アイキャッチ画像
  ○ カスタム分類、投稿タイプ、アサイド

● 洗練されたユーザーインターフェース
  ○ 折り畳み、並べ替え
  ○ よく使うものを優先表示
管理画面から投稿

● 投稿に直接関係ないメニューもある
  ○ 作成者ならシンプルになる

● インターネット接続が前提
  ○ 下書きの自動保存

● ある程度の大きさの画面が前提
  ○ 管理画面カスタマイズは可能

● バージョンアップでインターフェースが変わる
ブログトップから

● P2 テーマを利用すると可能
  ○ http://wordpress.org/extend/themes/p2

● あるいはテーマを自作する

● レイアウトの自由度が高い
ブログトップから投稿

● 独自に実装が必要
  ○ P2 : 見た目はシンプル、コードは複雑

● テーマとの結び付き
  ○ テーマを変更しない場合は有力な方法
手元のツールで編集




              サーバー
  XMLRPC 形式   へ送信
  のデータ


          リモート投稿
リモート投稿

管理画面から投稿 : ウェブメール
リモート投稿 : メールソフトを利用

● WordPress 以外でも使われている
● 手元の端末に合わせたツール
 ○ http://codex.wordpress.org/Weblog_Client
● 編集中はオフラインでも可
● 投稿内容が手元に残る
リモート投稿

● ソフト毎に機能が異なる
  ○ WordPress 独自機能未対応のこともある
  ○ 手軽に投稿するには便利
    ■ タイトル、本文、画像など

● 画像が多い&大きい場合と失敗する
  ○ 成功した場合、「投稿ID」が返ってくる
メール投稿

● 指定したアドレスにメールを送る
  ○ WordPress が取り込む

● メールを使える人/環境なら投稿可能
  ○ 携帯だけでOK

● 編集中はオフラインでも可
● 投稿内容が手元に残る
メール投稿

● 標準で対応している機能は少ない
  ○ 手軽に投稿するには便利
    ■ タイトル、本文、画像など

● wp-mail.php にアクセスすると反映される
  ○ (標準では)リアルタイム反映ではない

● 指定アドレスに届いたメールを記事にする
  ○ 既存記事の更新は非常に大変
ブログに投稿する方法

XMLRPC + Blogilo

 XMLRPC + PHP
実際にリモート投稿を使ってみる

      様々な投稿ツールがあります
 http://codex.wordpress.org/Weblog_Client

       ここでは Blogilo を使います

      ここから先で紹介するものは、
      Blogilo 特有の機能もあります
ブログ投稿ツール Blogilo

● MetaWeblogAPI 対応のブログに投稿可能
  ○ http://www.xmlrpc.com/metaWeblogApi
  ○ MetaWeblogAPI を利用dるツール
    ■ Blogger, Movable Type 等
ブログ投稿ツール Blogilo

● http://blogilo.gnufolks.org/
● GNU GPL v2
● Bilbo -> Blogilo (商標問題で改名)

 ● 日本語化への参加
https://translations.launchpad.
net/ubuntu/natty/+source/kdepim/+pots/blogil
o/ja/+translate
Blogilo をインストール

● ソースコードの入手
git clone --depth 1 git://anongit.kde.org/kdepim

開発ログも取得する場合は
git clone git://anongit.kde.org/kdepim


● Ubuntu の場合
  ○ Synaptic パッケージマネージャで検索
実際に使ってみる

● WordPress 側の設定
  ○ 管理画面->投稿設定->リモート投稿
     ■ xml-rpc を有効にする
● Blogilo の設定
  ○ ブログのアドレス
  ○ ユーザー名
  ○ パスワード
記事を書く

● タイトル、本文 (WYSIWYG エディタ)
● 画像はドラッグアンドドロップで挿入可能
● カテゴリ等の細かい設定は toolbox で
● 手元にデータ保存可能
● 送信時のみ、要インターネット接続
ブログに投稿する方法

XMLRPC + Blogilo

 XMLRPC + PHP
PHP を使う

● Blogilo は C++

● 素の PHP を使う

● PEAR ライブラリを使う
  ○ http://pear.php.net/package/XML_RPC/
  ○ pear install XML_RPC

● フレームワークを使う
  ○ codeigniter.jp/user_guide_ja/libraries/xmlrpc.html
$request = xmlrpc_encode_request("blogger.getUsersBlogs", array
('','ユーザー名','パスワード'));
$context = stream_context_create(array('http' => array(
     'method' => "POST",
     'header' => "Content-Type: text/xml",
     'content' => $request
)));
$file = file_get_contents("xmlrpcのURL", false, $context);
$response = xmlrpc_decode($file);
if ($response && xmlrpc_is_fault($response)) {
     trigger_error("xmlrpc: $response[faultString] ($response
[faultCode])");
} else {
     print_r($response);
}


 www.php.net/manual/ja/function.xmlrpc-encode-request.php
require_once("XML/RPC.php");
$GLOBALS['XML_RPC_defencoding'] = "UTF-8";

$host = "サイトのURL";
$xmlrpc_path = "/xmlrpc.php";
$username = 'ユーザー名';
$passwd = 'パスワード'; 

$c = new XML_RPC_client($xmlrpc_path, $host, 80);

$username = new XML_RPC_Value($username, 'string');
$passwd = new XML_RPC_Value($passwd, 'string');
$blog_id = new XML_RPC_Value(1, "string");
$title = 'タイトル';
$description = "本文";
$content = new XML_RPC_Value(
    array(
        'title' => new XML_RPC_Value($title, 'string'),
        'description' => new XML_RPC_Value($description, 'string')
    )
,'struct');
$publish = new XML_RPC_Value(1, "boolean");
$mymessage = new XML_RPC_Message(
    'metaWeblog.newPost',
    array($blog_id, $username, $passwd, $content, $publish));
$result = $c->send($mymessage);
    http://ounziw.com/2011/10/01/xmlrpc-phppear/
class Getbloginfo extends CI_Controller {

 public function index()
 {
 $this->load->library('xmlrpc');
 $this->xmlrpc->server('サーバーのアドレス');
 $this->xmlrpc->method('blogger.getUsersBlogs');
 $data = array(
 '',
 'ユーザ名',
 'パスワード'
 );
 $this->xmlrpc->request($data);
 if ( ! $this->xmlrpc->send_request())
 {
 echo $this->xmlrpc->display_error();
 }
 print_r($this->xmlrpc->display_response());
 }
 }
http://ounziw.com/2011/10/12/codeigniter-xmlrpc/

More Related Content

Similar to Xml rpc を使ってブログ投稿

20140924 mt cloud_handson_seminar
20140924 mt cloud_handson_seminar20140924 mt cloud_handson_seminar
20140924 mt cloud_handson_seminarSix Apart
 
20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn Seminar20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn SeminarSix Apart
 
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」ericsagnes
 
Word Press on Movable Type
Word Press on Movable TypeWord Press on Movable Type
Word Press on Movable TypeHajime Fujimoto
 
20141206 handson
20141206 handson20141206 handson
20141206 handsonSix Apart
 
Xoopsサイト制作セミナー 20120922
Xoopsサイト制作セミナー 20120922Xoopsサイト制作セミナー 20120922
Xoopsサイト制作セミナー 20120922Toshihiro Takehara
 
LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶ
LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶLingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶ
LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶKenichiro MATOHARA
 
MediaWiki Tips for saveMLAK - wikibana
MediaWiki Tips for saveMLAK - wikibanaMediaWiki Tips for saveMLAK - wikibana
MediaWiki Tips for saveMLAK - wikibananinomy
 
Contao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こうContao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こうTakahiro Kambe
 
【Wordpress】LightBox風jQueryを使ってポップアップ上でカスタムフィールドを出力。
【Wordpress】LightBox風jQueryを使ってポップアップ上でカスタムフィールドを出力。【Wordpress】LightBox風jQueryを使ってポップアップ上でカスタムフィールドを出力。
【Wordpress】LightBox風jQueryを使ってポップアップ上でカスタムフィールドを出力。Kazuki Akiyama
 
20141101 handson
20141101 handson20141101 handson
20141101 handsonSix Apart
 
Contao Open Source CMS / Contao 3.3を越えて
Contao Open Source CMS / Contao 3.3を越えてContao Open Source CMS / Contao 3.3を越えて
Contao Open Source CMS / Contao 3.3を越えてTakahiro Kambe
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎真哉 杉野
 
WordPressで作るポートフォリオサイト
WordPressで作るポートフォリオサイトWordPressで作るポートフォリオサイト
WordPressで作るポートフォリオサイトTakuma Nishiyama
 
第3回WordPress Cafe プラグイン紹介
第3回WordPress Cafe プラグイン紹介第3回WordPress Cafe プラグイン紹介
第3回WordPress Cafe プラグイン紹介foom_in
 
パララックス効果を使ったWordPressサイト
パララックス効果を使ったWordPressサイトパララックス効果を使ったWordPressサイト
パララックス効果を使ったWordPressサイトTakuma Nishiyama
 

Similar to Xml rpc を使ってブログ投稿 (20)

Djangoのススメ
DjangoのススメDjangoのススメ
Djangoのススメ
 
20140924 mt cloud_handson_seminar
20140924 mt cloud_handson_seminar20140924 mt cloud_handson_seminar
20140924 mt cloud_handson_seminar
 
20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn Seminar20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn Seminar
 
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
 
Word Press on Movable Type
Word Press on Movable TypeWord Press on Movable Type
Word Press on Movable Type
 
Drupal補完計画
Drupal補完計画Drupal補完計画
Drupal補完計画
 
20141206 handson
20141206 handson20141206 handson
20141206 handson
 
Xoopsサイト制作セミナー 20120922
Xoopsサイト制作セミナー 20120922Xoopsサイト制作セミナー 20120922
Xoopsサイト制作セミナー 20120922
 
LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶ
LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶLingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶ
LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶ
 
Symfony2#5 LT
Symfony2#5 LTSymfony2#5 LT
Symfony2#5 LT
 
MediaWiki Tips for saveMLAK - wikibana
MediaWiki Tips for saveMLAK - wikibanaMediaWiki Tips for saveMLAK - wikibana
MediaWiki Tips for saveMLAK - wikibana
 
Contao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こうContao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こう
 
【Wordpress】LightBox風jQueryを使ってポップアップ上でカスタムフィールドを出力。
【Wordpress】LightBox風jQueryを使ってポップアップ上でカスタムフィールドを出力。【Wordpress】LightBox風jQueryを使ってポップアップ上でカスタムフィールドを出力。
【Wordpress】LightBox風jQueryを使ってポップアップ上でカスタムフィールドを出力。
 
20141101 handson
20141101 handson20141101 handson
20141101 handson
 
Contao Open Source CMS / Contao 3.3を越えて
Contao Open Source CMS / Contao 3.3を越えてContao Open Source CMS / Contao 3.3を越えて
Contao Open Source CMS / Contao 3.3を越えて
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎
 
Wp html5
Wp html5Wp html5
Wp html5
 
WordPressで作るポートフォリオサイト
WordPressで作るポートフォリオサイトWordPressで作るポートフォリオサイト
WordPressで作るポートフォリオサイト
 
第3回WordPress Cafe プラグイン紹介
第3回WordPress Cafe プラグイン紹介第3回WordPress Cafe プラグイン紹介
第3回WordPress Cafe プラグイン紹介
 
パララックス効果を使ったWordPressサイト
パララックス効果を使ったWordPressサイトパララックス効果を使ったWordPressサイト
パララックス効果を使ったWordPressサイト
 

Xml rpc を使ってブログ投稿