【Python】【WordPress】XML-RPC で Python プログラムで WordPress に自動投稿する

Python プログラムで XML-RPC を使って WordPress に自動投稿するプログラムです。

「下書き」として投稿したり「公開済み」として投稿したり、様々な設定が可能です。

 

 

XML-RPCとは?

XML ← データの形式が XML

RPC ← リモートプロシージャコール

 

XML-RPC は、HTTP プロトコルを利用してサーバーと通信をします。

通常はブログへの自動投稿で使用するケースが多いですが、ブログからデータを取得したり、画像を投稿したりといろいろなことができます。

 

XML-RPC は Python だけでなく様々な言語でも簡単に使える

C、C++、Java、PHP、Ruby、Python などで使えます。(しかも簡単に)

 

 

 

構成図

以下、構成図を作りました。

最終的にはレンタルサーバーの WordPress にアクセスをして自動投稿をしますが、そのためには「Python環境」が必要です。

最近のレンタルサーバーには「Python環境」が入っていることが多いですが、XML-RPC を利用するためのパッケージをインストールする必要があります。

そう考えると、レンタルサーバーでその要件を満たしているところはないと思うので、構成図のように「Python環境」を独自に用意する必要があります。

 

【レンタルサーバー】「ドメインキング」のレンタルサーバーに「お名前.com」で取得したドメインを割り当てる

 

【Python】【CentOS7】Python 3.6.2 を「yum からインストールする手順」と「ソースからインストールする手順」

 

 

WordPress 側の設定

WordPress 側の設定は特に必要ありません。

「アカウント」と「パスワード」が分かれば簡単にプログラムから自動投稿できます。

 

 

Pythonプログラムを実行するコンピュータ上での設定

先ほどの構成図で言うと、以下の赤い枠で囲まれたコンピュータです。

【レンタルサーバー】「ドメインキング」のレンタルサーバーに「お名前.com」で取得したドメインを割り当てる

 

 

 

 

今回インストールした環境

今回インストールした環境です。

(pyenv) [test@SAKURA_VPS scraping]$ cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
(pyenv) [test@SAKURA_VPS scraping]$ python
Python 3.6.3 (default, Oct 11 2017, 18:17:37)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
(pyenv) [test@SAKURA_VPS scraping]$

 

 

python-wordpress-xmlrpcプラグインのインストール手順

pip コマンドで python-wordpress-xmlrpc プラグインをインストールします。

(pyenv) [test@SAKURA_VPS scraping]$ pip install python-wordpress-xmlrpc
Collecting python-wordpress-xmlrpc
  Downloading python-wordpress-xmlrpc-2.3.zip
Installing collected packages: python-wordpress-xmlrpc
  Running setup.py install for python-wordpress-xmlrpc ... done
Successfully installed python-wordpress-xmlrpc-2.3
(pyenv) [test@SAKURA_VPS scraping]$

 

インストールされているかどうか確認します。

(pyenv) [test@SAKURA_VPS scraping]$ pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
beautifulsoup4 (4.6.0)
certifi (2017.11.5)
chardet (3.0.4)
Django (1.11.7)
idna (2.6)
mod-wsgi (4.5.20)
mod-wsgi-httpd (2.4.27.1)
pip (9.0.1)
python-wordpress-xmlrpc (2.3) ← 2.3がインストールされています。
pytz (2017.3)
requests (2.18.4)
selenium (3.7.0)
setuptools (28.8.0)
urllib3 (1.22)
(pyenv) [test@SAKURA_VPS scraping]$

 

 

 

簡単な Python プログラムを作成して試しに投稿してみる

「python-wordpress-xmlrpc」プラグインをインストールしたら、早速簡単なプログラムを作成して WordPress に投稿してみます。

from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo

 

# 投稿するサイトのURLと、アカウントとパスワードを設定します。
wp = Client('http://xxx.com/xmlrpc.php', 'アカウント', 'パスワード')

post = WordPressPost()

# 投稿する記事のタイトルを設定します。
post.title = 'PythonでのWordPress投稿テスト'

# 記事の本文を設定します。
post.content = 'PythonからWordPressへ自動投稿しました。'
post.terms_names = {
    'post_tag': ['Python', 'WordPress'], ← タグを設定します。
    'category': ['WordPress', 'Python']  ← カテゴリを設定します。
    }
wp.call(NewPost(post))

 

実行結果

プログラムを実行した結果です。

図を見ると分かりますが、「下書き」として投稿されます。

【レンタルサーバー】「ドメインキング」のレンタルサーバーに「お名前.com」で取得したドメインを割り当てる

 

 

 

「下書き」ではなく「公開」で投稿したい場合

デフォルトでは「下書き(draft)」として投稿されます。

私としてはそれで十分だと思いますが、以下にいきなり「公開(publish)」のステータスで投稿したい場合のプログラムを記載します。

from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo

wp = Client('http://box-cm.com/xmlrpc.php', 'masato', '1192sasagawa')

post = WordPressPost()
post.title = 'PythonでのWordPress投稿テスト'
post.content = 'PythonからWordPressへ自動投稿しました。'
# 以下投稿時のステータスの設定です。
# 公開←publish、下書き←draft
post.post_status = 'publish'
#post.post_status = 'draft' ← 下書きとして投稿したい場合はこちらのコメントを削除します。
post.terms_names = {
    'post_tag': ['Python', 'WordPress'],
    'category': ['WordPress', 'Python']
    }
wp.call(NewPost(post))

 

 

 

 

実行結果

プログラムを実行した結果です。

「公開済み」として投稿されます。

  実行結果  プログラムを実行した結果です。  図を見ると分かりますが、「下書き」として投稿されます。  【レンタルサーバー】「ドメインキング」のレンタルサーバーに「お名前.com」で取得したドメインを割り当てる

 

 

サイトを確認するとちゃんと公開されています。

  実行結果  プログラムを実行した結果です。  図を見ると分かりますが、「下書き」として投稿されます。  【レンタルサーバー】「ドメインキング」のレンタルサーバーに「お名前.com」で取得したドメインを割り当てる

 

 

参考サイト

具体的なサンプルプログラムも豊富で非常に分かりやすかったです!

 

http://python-wordpress-xmlrpc.readthedocs.io/en/latest/overview.html

  実行結果  プログラムを実行した結果です。  図を見ると分かりますが、「下書き」として投稿されます。  【レンタルサーバー】「ドメインキング」のレンタルサーバーに「お名前.com」で取得したドメインを割り当てる

 

 

 

 

まとめ

あっさりと Python プログラムから WordPress に投稿することができました。

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人

コメントを残す

メールアドレスが公開されることはありません。