スマートフォン・タブレットからインターネットサーバーオペレーション 2016

APPW.jp 2016

python-wordpress-xmlrpc ライブラリで投稿

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 の投稿にもつなげています。

image

Python Pillow でサムネイルを作成

Tornado で Secure Websocket を試します