今後のスクレイピングに役に立ちそうなので備忘録です。
まずは、Application Passwords plugin プラグインをインストールします。
以下を作って、実行するとREST APIを経由して投稿することができます。
もちろん画像もOK。
REST APIで投稿
https://qiita.com/yuyu_rg/items/3a5dc686fe8f22ff0fcb
※user_id ってのは、投稿者のユーザIDね。
REST APIで画像を投稿
https://qiita.com/sapuri/items/cd6deffd5654f5786fc8
※画像はプログラムファイルを基点として指定
コードの控え
#coding: utf-8 import requests import json passward = "anCN 2JnY rcEu H2z4 JRi2 T4Fr" # 自分の環境に合わせて変更してください user_id = "admin" # 自分の環境に合わせて変更してください end_point_url ="http://xxx.xyz/wp-json/wp/v2/posts" # 自分の環境に合わせて変更してください p_title = "APIからの投稿" p_content = "内容のサンプル<br />サンプルあああああああ" p_status = "draft" payload = { 'title': p_title , 'content' : p_content , 'status' : p_status } headers = {'content-type': "Application/json"} r = requests.post( end_point_url, data=json.dumps(payload) , headers=headers, auth=(user_id, passward) ) print(r)
import requests user_id = '' app_password = '' end_point_url = 'http://example.com/wp-json/wp/v2/media' image_path = '/path/to/image.jpg' file_name = 'image.jpg' headers = { 'Content-Disposition': f'attachment; filename="{file_name}"' } # load image file f = open(image_path, 'rb') img_data = f.read() f.close() response = requests.post(end_point_url, data=img_data, headers=headers, auth=(user_id, app_password)) # media_id = response.json()['id']