目的
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の設定を見直したりしたが、うまくいかず。
未解決だがいつか再チャレンジするために記事にしておく。
コメント