【Python】wordpress_xmlrpcを利用してPythonで記事投稿しようとしたら失敗した話(未解決)

WordPress

目的

WordPressへ記事投稿の半自動化を実現すべく、Pythonを使ってWordPressへ記事投稿できるようにする。

 

wordpress_xmlrpcを利用する

WordPressにはXML-RPCという、POSTすることで記事を投稿できる機能がある。

Pythonにはそれをラッパーするモジュールが存在する。

今回はそのwordpress_xmlrpcモジュールを利用してテスト記事を投稿してみる。

 

インストール

今回も例のごとくpipでインストールする。

$ pip install wordpress_xmlrpc

正常にインストールされたら準備完了。

 

テストプログラムの作成

# coding:utf-8

from datetime import datetime
from datetime import timedelta

### WP用
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo
from wordpress_xmlrpc.methods import media


### 投稿する関数
### <記事タイトル>,<内容>,<タグ>,<カテゴリ>,<公開するかどうか(publish OR draft)>
def postBlog(title, body, tag, category, status):
  ### WP情報
  siteUrl = 'ブログのURL'    # WPのURL
  user = 'username'  # 記事を書くユーザ
  passwd = 'password'  # ユーザのパスワード
  slug = 'test'      # スラッグ
  icatch = '55' # アイキャッチ画像ID
  
  nowdate = datetime.now() + timedelta(hours=-9) # JST時間
  
  ## インスタンス化
  wp = Client(siteUrl, user, passwd)
  post = WordPressPost() 
  
  # パラメータセット
  post.title = title
  post.content = body
  post.terms_names = {
  'post_tag': tag,
  'category': category 
  }
  post.slug = slug
  post.thumbnail = icatch
  post.date = nowdate
  post.post_status = status
  
  wp.call(NewPost(post))

def main():
  postBlog('テスト投稿', 'テスト投稿(BODY)', 'Python', 'Python wordpress_xmlrpc', 'draft')

if __name__ == "__main__":
  main()

 

実行結果

File "/usr/lib64/python3.6/socket.py", line 713, in create_connection
     sock.connect(sa)
 OSError: [Errno 113] No route to host

調べたらファイアウォールやiptablesの設定によって接続できない可能性があるとのこと。

ファイアウォールを無効にしたり、proxyの設定を見直したりしたが、うまくいかず。

未解決だがいつか再チャレンジするために記事にしておく。

 

コメント

タイトルとURLをコピーしました