ブログ自動投稿目指して試行錯誤するシリーズ
前回はこちら。
出力したい情報が取れるようになったのでいよいよ記事投稿のフェーズ。
新たなブログも準備した(ワードプレスをインストールしただけとも言う)ので、pythonからブログを投稿するテストをしてみたいと思います。
認証設定
外部から投稿するため、認証設定をします。認証なしで外部から投稿出来たらみんな好き勝手に投稿出来ちゃいますからね。
プラグインのインストール
まずはApplication passwordsというプラグインをインストールして有効化します。
アプリケーションパスワード設定
ユーザーの管理画面に行きます。
アプリケーションパスワードというものがあるので、適当な文字列を入力して新しいアプリケーションパスワードを追加をクリック。
下にも同じような枠があるのですが、日本語で書かれている方を使用します。
パスワードが表示されるので安全な場所にメモしときます。このパスワードは二度と表示されません。
ちなみにパスワードをメモし忘れても発行したパスワードを破棄して新たなパスワードを発行できるので大丈夫です。
自動投稿するときはこのパスワードを使用します。外部から投稿するための専用パスワードを発行するイメージです。
なお、入力したパスワード名はあくまで識別用なので使うことはありません。
pythonから投稿
ワードプレス側の準備ができたので、実際にpythonのコードを使って投稿してみます。
こんな感じのプログラムを作成してみました。
import requests
import json
# ワードプレスにログインするときに使用しているID
user_id = "xxx"
# 上記で作成作成されたパスワード(空白込みで)
password = "xxxx 1111 dddd 2222 3333 qqqq"
# エンドポイントを指定(ブログのアドレスの後ろに"/wp-json/wp/v2/posts"をつけたもの)
end_point_url ="https://xxxx-yyyy.com/wp-json/wp/v2/posts"
# タイトルを指定
title = "タイトル"
# 本文
content = '''
<h2>テスト</h2>
テスト投稿です
'''
# 公開状態(下書きならdraft、後悔ならpublish)
status = "publish"
# json形式に変換
data = json.dumps({'title': title,
'content' : content,
'status' : status})
# HTTPヘッダーの指定
headers = {'content-type': "Application/json"}
# 投稿
ret = requests.post(end_point_url, data=data, headers=headers, auth=(user_id, password))
実行するとこんな感じでブログに投稿されました。
HTMLのタグもちゃんと反映されてます。
投稿したい情報も取れるようになった。pythonから投稿できることが確認できた。
なのでプログラム作成は7~8割方終了かな。こだわりだしたらまだまだあるけど、細かいところは投稿ができるようになってから作っていけばいいですからね。
あとはブログのデザインとか、文章のテンプレートの検討。。。
個人的にはここが一番の難関。
コメント