@domanskiy

Как загрузить JPG PNG в галерею WordPress через REST API, используя Python и requests?

Мой код
import base64
import json
import os

import requests

# Авторизация. Плагин Application Passwords https://make.wordpress.org/core/2020/11/05/application-passwords-integration-guide
# лог/пас сгенерированы в меню Users -> учетка админа -> Пароли приложений
USER = 'wp_api_python'
PASSWORD = '3KDD 91Bh y2Gl qt9H clgZ GEAl'

img_path = "Render_Project_Champery_002.png"

url = "http://suite.ru/wp-json/wp/v2/media"
creds = USER + ':' + PASSWORD

token = base64.b64encode(creds.encode())

header = {
    'Authorization': 'Basic ' + token.decode('utf-8'),
    "Accept": "application/json",
}

media = {
    'file': open(img_path, 'rb'),
    'caption': 'First TEST API Image upload',
    'description': 'First TEST API Image upload'
}

image = requests.post(url=url, headers=header, files=media)
print(image.json())

Ответ:
{'code': 'rest_cannot_create', 'message': 'Извините, вам не разрешено создавать записи от лица этого пользователя.', 'data': {'status': 401}}


Не пойму, что не так я делаю?
  • Вопрос задан
  • 465 просмотров
Пригласить эксперта
Ответы на вопрос 2
@AlexBoss
401 код - не авторизован
Ответ написан
Devvver
@Devvver
seo специалист
Вот рабочий код
import requests
import base64

# Базовый URL для загрузки медиа-файлов
media_upload_url = "https://сайт.org/wp-json/wp/v2/media"

user = "login"
password = "js5s4 87 K5gd Vnf897N rbjr Q89762w"
credentials = user + ':' + password
token = base64.b64encode(credentials.encode())
header = {'Authorization': 'Basic ' + token.decode('utf-8')}

# Загрузка изображения
with open('D:\\1.jpg', 'rb') as img_file:
    files = {'file': ('file1.jpg', img_file)}
    response = requests.post(media_upload_url, headers=header, files=files)

if response.status_code == 201:
    media_data = response.json()
    image_url = media_data['guid']['rendered']
    print(f"Изображение успешно загружено. Ссылка: {image_url}")
else:
    print(f"Ошибка при загрузке изображения. Код состояния: {response.status_code}")

Пароль от приложения сформируйте свой с помощью Пользователи>Профиль>Добавить новый пароль приложения
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы