WordPressに自動投稿する

Python

テキストのアップロード

import requests

# タグの登録
tag_data = {
  'name': '漫画',
  'slug': 'comic',
  'description': '',
}
tag_res = requests.post(
  f"https://xxx.com/wp-json/wp/v2/tags",
  json=tag_data,
  headers={'Content-type': 'application/json'},
  auth=(wp_user, wp_pass),
)

# 記事の登録
data = {
  'title': title,
  'content': content,
  'categories': 785,
  'tags': tag_resg['id'],
  'slug': title,
  'status': 'draft',
}
res = requests.post(
  f"https://xxx.com/wp-json/wp/v2/posts",
  json=data,
  headers={'Content-type': 'application/json'},
  auth=(wp_user, wp_pass),
)

mp4のアップロード

import requests

# WordPressの認証情報とアップロードしたいファイルのパス
wp_endpoint = 'https://xxx.com/wp-json/wp/v2/media'
username = 'ユーザー名'
password = 'アプリケーションパスワード'
file_path = 'C:/Users/xxx/xxx.mp4'
file_name = 'xxx.mp4'


# ヘッダー設定
headers = {
    "Content-Disposition": f"attachment; filename={file_name}",
    "Authorization": f"Basic {requests.auth._basic_auth_str(username, password)}",
}


# ファイルを開いてアップロード
with open(file_path, 'rb') as file :
    response = requests.post(wp_endpoint, headers=headers, files={"file": file})


# レスポンス確認
if response.status_code == 201 :
    print("ファイルが正常にアップロードされました")
else :
    print("ステータスコード:", response.status_code)
    print("レスポンス:", response.text)

画像1枚のアップロード

import requests

# 
wp_endpoint = 'https://xxx.com/wp-json/wp/v2/media'
username = 'ユーザー名'
password = 'アプリケーションパスワード'
file_path = 'C:/Users/xxx/xxx.jpg'


# ヘッダー設定
headers = {
    "Authorization": f"Basic {requests.auth._basic_auth_str(username, password)}"
}

# ファイルを開いてpostリクエストでアップロード
with open(file_path, "rb") as file :
    file_name = os.path.basename(file_path)
    files = {
        "file": (file_name, file, "image/jpeg")
    }
    response = requests.post(wp_endpoint, headers=headers, files=files)

# レスポンス確認
if response.status_code == 201 :
    print("ファイルが正常にアップロードされました")
else :
    print(f"ステータスコード: {response.status_code}")
    print(f"エラー: {response.text}")

画像の一括アップロード

import os
import requests
import time

# アップロードするファイルの入ったフォルダパス
dir_path = "C:/Users/9mlor/OneDrive/デスクトップ/up/"
file_names = os.listdir(dir_path)


for file_name in file_names:

    # 一応ファイル名を確認しておく
    print(file_name)

    # Content-Typeの指定
    # file_name = os.path.basename(file_path)
    file_extention = file_name.split('.')[-1].lower()
    if file_extention in ['jpg', 'jpeg']:
        contentType = 'image/jpg'
    elif file_extention == 'png':
        contentType = 'image/png'
    elif file_extention == 'webp':
        contentType = 'image/webp'
    elif file_extention == 'mp4':
        contentType = 'movie/mp4'
    else:
        print('ファイル形式はサポートされていません')
        exit()

    # リクエストのヘッダー情報
    header_info = {
        'Content-Type': contentType,
        'Content-Disposition': f'attachment; filename="{file_name}"'
    }

    # ローカルのファイルのバイナリデータを読み込む
    with open(dir_path + file_name, 'rb') as f:
        img_bytes = f.read()


    # メディアのアップロード
    response = requests.post(
        'https://bijo.blog/?rest_route=/wp/v2/media',
        headers=header_info,
        data=img_bytes,
        auth=('@bijo_blog', 'AuAO ndSo uLkx 7UaX qizB IdhA')
    )

    print('アップロード完了')
    print(response.headers)
    print(response.text)
    time.sleep(3)
BACK