API方式上传图片到WordPress结合网页截图工具效率更高

通常在WordPress中上传图片需要登录后台进行上传操作,本文将介绍使用REST API方式上传图片,并可以结合之前介绍过的根据域名URL实现网页截图支持网页版和API进行配合使用。

适用场景:

  • 1.对某个网站主页或者某个URL链接进行自动化截图并压缩。
  • 2.将截图通过REST API上传到WordPress媒体库中。

如何通过REST API上传图片到WordPress

WordPress默认已经开启了REST API,我们只需要设置一下应用程序密码即可使用,设置应用程序密码在后台用户管理中,找到管理员用户,进行编辑,划到最下方即可看到。

注意:应用程序密码要复制保存好,后面链接API会用到,如果没有复制可以撤消掉重新设置。

通过REST API上传图片到媒体库

import requests
import argparse

# WordPress 站点的 REST API URL
media_url = 'https://www.wxspace.cn/wp-json/wp/v2/media'

# 设置命令行参数
parser = argparse.ArgumentParser(description='上传图片到 WordPress')
parser.add_argument('file_path', type=str, help='图片文件路径')
args = parser.parse_args()

# 认证信息:应用密码
auth = ('管理员用户名', '应用程序密码')

# 获取文件的 MIME 类型,支持 jpg 和 png
def get_mime_type(file_path):
    if file_path.endswith('.jpg') or file_path.endswith('.jpeg'):
        return 'image/jpeg'
    elif file_path.endswith('.png'):
        return 'image/png'
    else:
        return 'application/octet-stream'  # 默认类型

# 读取文件并上传
with open(args.file_path, 'rb') as file:
    # 获取 MIME 类型
    mime_type = get_mime_type(args.file_path)

    # 构造上传的文件数据
    files = {
        'file': (args.file_path, file, mime_type)
    }

    # 发送上传请求
    response = requests.post(media_url, files=files, auth=auth)

# 检查上传结果
if response.status_code == 201:
    # 上传成功,获取文件的 URL
    media_url = response.json()['source_url']
    print(f"文件上传成功,URL:{media_url}")
else:
    # 上传失败,打印错误信息
    print(f"文件上传失败,错误状态码:{response.status_code}")
    print(f"错误信息:{response.text}")

python脚本使用示例,通过传参图片名称进行使用:

python3.9 upload_image_to_wp.py   wp-rest-api.jpg 
文件上传成功,URL:https://www.wxspace.cn/wp-content/uploads/2025/04/wp-rest-api.jpg

我们还可以结合根据域名URL实现网页截图支持网页版和API进行配合使用。比如截图万象空间首页图片,然后上传到WordPress。

示例脚本如下:

cat jt_and_upload_to_wp.sh 
name=`echo $1 | sed 's#https://##' | sed 's#/.*##'`
wget -O ${name}.jpg "https://api.screenshotmachine.com?key=xxxxx&url=${1}&dimension=1280x720&format=jpg&delay=5000&cacheLimit=0"
sleep 1
jpegoptim --max=85 --strip-all  ${1}.jpg
python3.9 upload_image_to_wp.py ${1}