SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
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/

Mais conteúdo relacionado

Mais procurados

Virtual Machine Scale Sets 概要
Virtual Machine Scale Sets 概要Virtual Machine Scale Sets 概要
Virtual Machine Scale Sets 概要Yui Ashikaga
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計Yoshinori Matsunobu
 
BigQuery Query Optimization クエリ高速化編
BigQuery Query Optimization クエリ高速化編BigQuery Query Optimization クエリ高速化編
BigQuery Query Optimization クエリ高速化編sutepoi
 
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호KTH, 케이티하이텔
 
초보자를 위한 분산 캐시 이야기
초보자를 위한 분산 캐시 이야기초보자를 위한 분산 캐시 이야기
초보자를 위한 분산 캐시 이야기OnGameServer
 
훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기Changyol BAEK
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with KarateTakanori Suzuki
 
코루틴(Coroutine)
코루틴(Coroutine)코루틴(Coroutine)
코루틴(Coroutine)QooJuice
 
나의 이직 이야기
나의 이직 이야기나의 이직 이야기
나의 이직 이야기종립 이
 
스타트업에서 기술책임자로 살아가기
스타트업에서 기술책임자로 살아가기스타트업에서 기술책임자로 살아가기
스타트업에서 기술책임자로 살아가기Hyun-woo Park
 
とある診断員と色々厄介な脆弱性達
とある診断員と色々厄介な脆弱性達とある診断員と色々厄介な脆弱性達
とある診断員と色々厄介な脆弱性達zaki4649
 
Multibranch pipelineでいろいろ学んだこと
Multibranch pipelineでいろいろ学んだことMultibranch pipelineでいろいろ学んだこと
Multibranch pipelineでいろいろ学んだことRecruit Lifestyle Co., Ltd.
 
Postgresql 12 streaming replication hol
Postgresql 12 streaming replication holPostgresql 12 streaming replication hol
Postgresql 12 streaming replication holVijay Kumar N
 
Git을 조금 더 알아보자!
Git을 조금 더 알아보자!Git을 조금 더 알아보자!
Git을 조금 더 알아보자!Young Kim
 
サイボウズの CI/CD 事情 〜Jenkins おじさんは CircleCI おじさんにしんかした!〜
サイボウズの CI/CD 事情 〜Jenkins おじさんは CircleCI おじさんにしんかした!〜サイボウズの CI/CD 事情 〜Jenkins おじさんは CircleCI おじさんにしんかした!〜
サイボウズの CI/CD 事情 〜Jenkins おじさんは CircleCI おじさんにしんかした!〜Jumpei Miyata
 
[122]책에서는 맛볼 수 없는 HTML5 Canvas 이야기
[122]책에서는 맛볼 수 없는 HTML5 Canvas 이야기 [122]책에서는 맛볼 수 없는 HTML5 Canvas 이야기
[122]책에서는 맛볼 수 없는 HTML5 Canvas 이야기 NAVER D2
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기현철 조
 
Presto User & Admin Guide
Presto User & Admin GuidePresto User & Admin Guide
Presto User & Admin GuideJEONGPHIL HAN
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるpospome
 
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座Samir Hammoudi
 

Mais procurados (20)

Virtual Machine Scale Sets 概要
Virtual Machine Scale Sets 概要Virtual Machine Scale Sets 概要
Virtual Machine Scale Sets 概要
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
BigQuery Query Optimization クエリ高速化編
BigQuery Query Optimization クエリ高速化編BigQuery Query Optimization クエリ高速化編
BigQuery Query Optimization クエリ高速化編
 
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
 
초보자를 위한 분산 캐시 이야기
초보자를 위한 분산 캐시 이야기초보자를 위한 분산 캐시 이야기
초보자를 위한 분산 캐시 이야기
 
훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 
코루틴(Coroutine)
코루틴(Coroutine)코루틴(Coroutine)
코루틴(Coroutine)
 
나의 이직 이야기
나의 이직 이야기나의 이직 이야기
나의 이직 이야기
 
스타트업에서 기술책임자로 살아가기
스타트업에서 기술책임자로 살아가기스타트업에서 기술책임자로 살아가기
스타트업에서 기술책임자로 살아가기
 
とある診断員と色々厄介な脆弱性達
とある診断員と色々厄介な脆弱性達とある診断員と色々厄介な脆弱性達
とある診断員と色々厄介な脆弱性達
 
Multibranch pipelineでいろいろ学んだこと
Multibranch pipelineでいろいろ学んだことMultibranch pipelineでいろいろ学んだこと
Multibranch pipelineでいろいろ学んだこと
 
Postgresql 12 streaming replication hol
Postgresql 12 streaming replication holPostgresql 12 streaming replication hol
Postgresql 12 streaming replication hol
 
Git을 조금 더 알아보자!
Git을 조금 더 알아보자!Git을 조금 더 알아보자!
Git을 조금 더 알아보자!
 
サイボウズの CI/CD 事情 〜Jenkins おじさんは CircleCI おじさんにしんかした!〜
サイボウズの CI/CD 事情 〜Jenkins おじさんは CircleCI おじさんにしんかした!〜サイボウズの CI/CD 事情 〜Jenkins おじさんは CircleCI おじさんにしんかした!〜
サイボウズの CI/CD 事情 〜Jenkins おじさんは CircleCI おじさんにしんかした!〜
 
[122]책에서는 맛볼 수 없는 HTML5 Canvas 이야기
[122]책에서는 맛볼 수 없는 HTML5 Canvas 이야기 [122]책에서는 맛볼 수 없는 HTML5 Canvas 이야기
[122]책에서는 맛볼 수 없는 HTML5 Canvas 이야기
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
Presto User & Admin Guide
Presto User & Admin GuidePresto User & Admin Guide
Presto User & Admin Guide
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
 

Semelhante a 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
 

Semelhante a 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 を使ってブログ投稿