WordPressにログインすることなく、画像ファイルを1クリックでまとめてアップロードするしくみをつくってみました。
Pythonを使ってのプログラミングです。
WordPressに画像をまとめてアップする流れ
ブログを書くときには、画像を使っています。
使っているのは、じぶんで撮った写真。
パソコンに取り込んだ画像をJPGファイルをWordPressにアップロードします。

何度かクリックして、この画面を開いてからまとめてアップロードするのではなく、ログインしていない状態でも任意の場所にあるJPEGファイルをまとめてWordPressにアップロードする。
これをPythonで自動でできるようにしました。

Alfredの検索画面で「i」と入力して、Enterを押すと、WordPressに画像がアップされます。

画像を選ぶ必要がなく、WordPressの管理画面にログインしていない状態でも、画像のアップロードができるのが今回のしくみです。
PythonでWordPressに画像をアップロードする流れ
何をおいても、Pythonをパソコンにインストールしないことにははじまりません。
まずは、Macならターミナル、Windowsならコマンドプロンプトという標準のアプリがあります。次のように入力してPythonがインストールされているかどうかを確認し、
python3 --versionもし、インストールされていないようならインストールしましょう。(現状だと3.12.4)
Pythonインストール
https://www.python.org/downloads
そして、仮想環境(パソコンの環境とは別でPython用の環境)をつくっておきます。venv(ブイエンブ)というのがそうです。
python3 -m venv venv
source venv/bin/activateあとは、今回のしくみをつくるのにライブラリを画像処理の「pillow」「request」というライブラリが必要になります。これもインストールします。
pip3 install pillowpip3 install requestsそのうえで、Pythonのコードをテキストエディタ(メモ帳)などに書いていきます。ただ、コードはChatGPTに聞けば教えてくれます。
一応、わたしがChatGPTに教えてもらいながら、書いたコードを置いておきます。気になる方は開いてもらえれば。
今回書いたPythonコード
import os
import requests
import base64
import urllib.parse
# 画像ディレクトリ
IMAGE_DIRECTORY = '/path/to/your/images' # 画像が保存されているディレクトリのパスを設定
# WordPressの設定
WORDPRESS_URL = "https://yourwordpresssite.com/wp-json/wp/v2/media" # あなたのWordPressサイトのメディアURL
WORDPRESS_USERNAME = "your_username" # あなたのWordPressのユーザー名
WORDPRESS_PASSWORD = "your_password" # あなたのWordPressのアプリケーションパスワード
def upload_image_to_wordpress(image_path):
filename = os.path.basename(image_path)
url_encoded_filename = urllib.parse.quote(filename)
headers = {
'Content-Disposition': 'attachment; filename=' + url_encoded_filename,
'Authorization': 'Basic ' + base64.b64encode(f'{WORDPRESS_USERNAME}:{WORDPRESS_PASSWORD}'.encode()).decode()
}
# 画像のデータを読み込む
with open(image_path, 'rb') as img:
response = requests.post(WORDPRESS_URL, headers=headers, files={'file': img})
# HTTPリクエストを送信
if response.status_code == 201:
print(f'Successfully uploaded {image_path}')
else:
print(f'Failed to upload {image_path}: {response.content}')
def process_images_in_directory(directory):
"""ディレクトリ内のすべての画像ファイルをWordPressにアップロード"""
for filename in os.listdir(directory):
if filename.lower().endswith(('.jpg', '.jpeg')):
image_path = os.path.join(directory, filename)
upload_image_to_wordpress(image_path)
# 実行
if __name__ == "__main__":
process_images_in_directory(IMAGE_DIRECTORY)
This is an example of a single quote: 'word'.
コードをテキストエディタに書いた後、保存しましょう。ここで大事なのは末尾を「.py」とすることです。「upload_image_to_wordpress.py」のように。

いったんはファイル名が「.py.txt」のように表示されるのですが、ファイル名の変更で「.py」にすれば大丈夫です。
ただ、このまま書いてもだめで、じぶんの環境にあわせていくつかを変更する必要があります。
それが、冒頭のところ。
# 画像ディレクトリ
IMAGE_DIRECTORY = '/path/to/your/images' # 画像が保存されているディレクトリのパスを設定
# WordPressの設定
WORDPRESS_URL = "https://yourwordpresssite.com/wp-json/wp/v2/media" # あなたのWordPressのメディアURL
WORDPRESS_USERNAME = "your_username" # あなたのWordPressのユーザー名
WORDPRESS_PASSWORD = "your_password" # あなたのWordPressのアプリケーションパスワード
1つは画像の「IMAGE_DIRECTORY」。
JPEGファイルを置いてあるフォルダのパス(Macだとoptionキーを押しながらファイルを右クリックでわかる)を入力します。わたしの場合は、「’/Users/gouemura/Dropbox/0 inbox/’」です。
次にWordPressのURL。これは管理画面にログインするときのURLとは別のURLです。「https://yourwordpresssite.com」のところをご自身のサイトURLに変えていただければ、あとは同じです。
試しにアドレスをコピペして、ごちゃごちゃな文字がでてきたら大丈夫です。

「USERNAME」は、ログインするときのユーザー名で大丈夫です。
ただ、「PASSWORD」」は、ログインするときのパスワードではありません。「アプリケーションパスワード」という別のパスワードをつくる必要があるのです。
WordPressにログイン後、「ユーザー」→「プロフィール」と移動し、下の方にある「アプリケーションパスワード」で任意の名前を入れて保存すると、16桁のランダムな英数字がでてきます。これが「アプリケーションパスワード」として必要になります。

これでターミナル(コマンドプロンプト)で動くかどうかを試してみましょう。ファイル名は「upload_image_to_wordpress」としたので、以下のように入力すると、
python3 /path/to/your/images/upload_image_to_wordpress.py
#'/path/to/your/images/'のところはPythonファイルの置いてあるパスWordPressのメディアにファイルがアップロードされています。

上手くいかなかったら、仮想環境を再度つくり直す、ライブラリをインストールし直すなど、ChatGPTに聞きながらちょっとずつ修正していただければ。
AutometerでPythonを動かす
これでPythonは動くのですが、よりシンプルに操作できるようにしたいもの。
Macの場合だと、Finderのアプリケーションにある「Automator」から、Pythonファイルを動かすことができます。
「Automator」を起動して、「アプリケーション」をクリックし、「選択」をクリック(訂正したい場合には左下の「既存の…」をクリック)し、

「シェルスクリプトを実行」を検索。

白い枠のところにPythonを動かすコマンドを入力しましょう。

わたしの場合は、こんなかんじですが、ご自身の環境にあわせて。
# Python仮想環境を有効にする
source /Users/gouemura/Dropbox/myenv/bin/activate
# WordPressに画像をアップロードするPythonスクリプトを実行する
python3 /Users/gouemura/Dropbox/Python/upload_image_to_wordpress.py
これもChatGPTに聞けばわかるかと。
で、わたしの場合には、Alfredを起動して、「i」と入力すると、Pythonファイルが表示され、Enterでアップロードがはじまるようになっています。

ターミナルで動かしても構いません。(ラクだからAlfredをつかっているだけです。)

ということで、ちょっとややこしいPythonですが、ChatGPTに聞きながらやればしくみもちょっとずつはわかってきます。
他にはニーズがないかもしれないけど、じぶんに必要なしくみをつくってみましょう。Pythonでどんなことができるかを知っておくと、どこにもないしくみをつくれるかもしれません。
【編集後記】
昨日はオフ。朝にプログラミング研究。その後、長男(9)と妻と3人でスーパーに行ってランチの食材を調達。その後はイベントホールへ。写真撮影も込みで楽しめました。夜は妻が買ってきてくれたサーティワンのアイスを家族みんなで食べました。わたしはカロリー少なめのガリガリ君のほうが好みですけど。まぁ、たまには付き合います。
【昨日の1日1新】
※「1日1新」→詳細はコチラ
サーティワン キャンディアップル
サントリー天然水 きりっと果実 ピンクグレープフルーツ&マスカット
「Automator」でPython起動

