Xml rpc を使ってブログ投稿

3,034 views

Published on

Xml rpc を使ってブログ投稿。WordPress の他、blogger, Movable Type でも利用可能。オープンソースの投稿ツール Blogilo を使った例。 PHP Pear を使う。 CodeIgniter フレームワークを使う。

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,034
On SlideShare
0
From Embeds
0
Number of Embeds
499
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Xml rpc を使ってブログ投稿

  1. 1. XMLRPC で外部から投稿 Fumito Mizuno mizuno@php-web.net
  2. 2. ブログに投稿する方法XMLRPC + Blogilo XMLRPC + PHP
  3. 3. ブログに投稿する方法XMLRPC + Blogilo XMLRPC + PHP
  4. 4. WordPress ブログに投稿する方法1. 管理画面から2. ブログトップから (P2テーマ)3. リモート投稿 (XMLRPC)4. メールで投稿5. その他
  5. 5. ログインブラウザで編集記事公開管理画面から投稿
  6. 6. 管理画面から投稿● WordPress の機能をフルに利用できる ○ アイキャッチ画像 ○ カスタム分類、投稿タイプ、アサイド● 洗練されたユーザーインターフェース ○ 折り畳み、並べ替え ○ よく使うものを優先表示
  7. 7. 管理画面から投稿● 投稿に直接関係ないメニューもある ○ 作成者ならシンプルになる● インターネット接続が前提 ○ 下書きの自動保存● ある程度の大きさの画面が前提 ○ 管理画面カスタマイズは可能● バージョンアップでインターフェースが変わる
  8. 8. ブログトップから● P2 テーマを利用すると可能 ○ http://wordpress.org/extend/themes/p2● あるいはテーマを自作する● レイアウトの自由度が高い
  9. 9. ブログトップから投稿● 独自に実装が必要 ○ P2 : 見た目はシンプル、コードは複雑● テーマとの結び付き ○ テーマを変更しない場合は有力な方法
  10. 10. 手元のツールで編集 サーバー XMLRPC 形式 へ送信 のデータ リモート投稿
  11. 11. リモート投稿管理画面から投稿 : ウェブメールリモート投稿 : メールソフトを利用● WordPress 以外でも使われている● 手元の端末に合わせたツール ○ http://codex.wordpress.org/Weblog_Client● 編集中はオフラインでも可● 投稿内容が手元に残る
  12. 12. リモート投稿● ソフト毎に機能が異なる ○ WordPress 独自機能未対応のこともある ○ 手軽に投稿するには便利 ■ タイトル、本文、画像など● 画像が多い&大きい場合と失敗する ○ 成功した場合、「投稿ID」が返ってくる
  13. 13. メール投稿● 指定したアドレスにメールを送る ○ WordPress が取り込む● メールを使える人/環境なら投稿可能 ○ 携帯だけでOK● 編集中はオフラインでも可● 投稿内容が手元に残る
  14. 14. メール投稿● 標準で対応している機能は少ない ○ 手軽に投稿するには便利 ■ タイトル、本文、画像など● wp-mail.php にアクセスすると反映される ○ (標準では)リアルタイム反映ではない● 指定アドレスに届いたメールを記事にする ○ 既存記事の更新は非常に大変
  15. 15. ブログに投稿する方法XMLRPC + Blogilo XMLRPC + PHP
  16. 16. 実際にリモート投稿を使ってみる 様々な投稿ツールがあります http://codex.wordpress.org/Weblog_Client ここでは Blogilo を使います ここから先で紹介するものは、 Blogilo 特有の機能もあります
  17. 17. ブログ投稿ツール Blogilo● MetaWeblogAPI 対応のブログに投稿可能 ○ http://www.xmlrpc.com/metaWeblogApi ○ MetaWeblogAPI を利用dるツール ■ Blogger, Movable Type 等
  18. 18. ブログ投稿ツール Blogilo● http://blogilo.gnufolks.org/● GNU GPL v2● Bilbo -> Blogilo (商標問題で改名) ● 日本語化への参加https://translations.launchpad.net/ubuntu/natty/+source/kdepim/+pots/blogilo/ja/+translate
  19. 19. Blogilo をインストール● ソースコードの入手git clone --depth 1 git://anongit.kde.org/kdepim開発ログも取得する場合はgit clone git://anongit.kde.org/kdepim● Ubuntu の場合 ○ Synaptic パッケージマネージャで検索
  20. 20. 実際に使ってみる● WordPress 側の設定 ○ 管理画面->投稿設定->リモート投稿 ■ xml-rpc を有効にする● Blogilo の設定 ○ ブログのアドレス ○ ユーザー名 ○ パスワード
  21. 21. 記事を書く● タイトル、本文 (WYSIWYG エディタ)● 画像はドラッグアンドドロップで挿入可能● カテゴリ等の細かい設定は toolbox で● 手元にデータ保存可能● 送信時のみ、要インターネット接続
  22. 22. ブログに投稿する方法XMLRPC + Blogilo XMLRPC + PHP
  23. 23. PHP を使う● Blogilo は C++● 素の PHP を使う● PEAR ライブラリを使う ○ http://pear.php.net/package/XML_RPC/ ○ pear install XML_RPC● フレームワークを使う ○ codeigniter.jp/user_guide_ja/libraries/xmlrpc.html
  24. 24. $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
  25. 25. 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/
  26. 26. 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/

×