Python スクレイピング

WordPressのREST APIで画像アップロードを自動化する

この記事は約4分で読めます。

 

こんにちは、ミナピピン(@python_mllover)です

 

前回はワードプレスのRESTAPIでブログへの記事投稿を自動化しました。その際に画像のアップロードについては紹介していなかったので今回は画像のアップロード方法について紹介したいと思います。

 

前準備

 

ワードプレスのREST APIを使用するためにはプラグインの「Application password」を使用する必要があります。「Application password」の初期設定方法については以下の記事に書いているのでそちらを参考にしてください。

 

関連記事:【Python】WordPressのREST APIを使ってブログ記事を自動投稿する

 

スポンサーリンク
スポンサーリンク

WordPressのRestAPI経由で画像アップロードを自動化する

 

import requests
from urllib.parse import urljoin
import json
import base64

url_base = 'http://~~~~.com/'
url = urljoin(url_base, 'wp-json/wp/v2/media')
user = '<管理画面のユーザー名>'
password = 'xxxx xxxx xxxx xxxx' # アプリケーションパスワードで発行したパスワード

dir_ = "C:\\Users\\81903\\Desktop\\" # 画像が保存されているローカルのディレクトリ
def wp_upload_media(file_name):
    
    with open(f'{dir_}{file_name}', 'rb') as f:
        img_data = f.read()
    if file_name[-3:] == 'jpg':
        contenttype = 'image/jpg'
    elif file_name[-4:] == 'jpeg':
        contenttype = 'image/jpeg'
    elif file_name[-3:] == 'png':
        contenttype = 'image/png'
    else:
        contenttype = 'image/jpeg'
    headers = {
        'Content-Type': contenttype,
        'Content-Disposition': f'attachment; filename={file_name}',
    }

    res = requests.post(
        url,
        data=img_data,
        headers=headers,
        auth=(user, password),
        )
    res_dict = res.json()
    print(json.dumps(res_dict, indent=4))
    unique_id = res_dict['id'] # アップロードした画像のID
    return

if __name__ == '__main__':
    wp_upload_media('test.jpg')

 

ハマった点

 

ハマった点は 'Content-Disposition': f'attachment; filename={file_name}',の部分。attachment; filename=で指定するファイル名はローカルのファイル名と同じでないといけないみたいです。ここが違うと「api rest_upload_sideload_error」が発生します。

 

参考:https://kamiki.blog/wordpress-auto-upload-media-in-python/

 

 

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

  1. […] 関連記事:【Python】ワードプレスのREST APIを使って画像アップロードを自動化する […]

  2. […] 関連記事:【Python】ワードプレスのREST APIを使って画像アップロードを自動化する […]

  3. […] 関連記事:【Python】ワードプレスのREST APIを使って画像アップロードを自動化する […]

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