スマートフォン・タブレットからインターネットサーバーオペレーション 2016
python-wordpress-xmlrpc ライブラリを利用して、Python プログラムから Wordpress にメディアアップロードと記事投稿を試してみます。Wordpress の xmlrpc.php を通して行います。
https://python-wordpress-xmlrpc.readthedocs.org/en/latest/ に、インストールからサンプル、リファレンスなどのドキュメントが公開されています。
このドキュメントなどをもとに、サンプルファンクションを作成してみました。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import mimetypes
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.compat import xmlrpc_client
from wordpress_xmlrpc.methods import media, posts
def WPpost(title, category, message,
filepath, filename):
wp_xrurl = 'http://example.jp/xmlrpc.php'
wp_uname = 'username'
wp_pword = 'password'
wp = Client(wp_xrurl, wp_uname, wp_pword)
fname = '{path}/{name}'.format(
path=filepath,
name=filename)
data = {
'name': filename,
'type': 'image/jpeg',
'overwrite': True
}
data['type'] = mimetypes.guess_type(fname)[0]
with open(fname, 'rb') as img:
data['bits'] = xmlrpc_client.Binary(
img.read())
response = wp.call(media.UploadFile(data))
attach_img = response['url']
post = WordPressPost()
post.title = title
post.content = \
'<p>'+message+ \
'</p><img src="'+attach_img+ \
'" />'
post.terms_names = {
'category': [category]
}
post.post_status = 'publish'
# post.post_status = 'draft'
post_id = wp.call(posts.NewPost(post))
return post_id
サンプルファンクションでは、メディアをアップロードしたときに返されるアップロード先を、コンテンツに付け加えて投稿し、投稿ID を戻しています。
これまで、MQTT Publish の内容を MongoDB に保存してみるなどの Python プログラムを作成してきましたが、今回はさらに、Wordpress の投稿にもつなげています。