Проблема, с которой вы столкнулись, связана с тем, как вы передаете метаданные (включая дату) в вашем запросе к API WordPress. Когда вы загружаете медиафайл через REST API WordPress, необходимо использовать дополнительный параметр для установки метаданных, таких как `date`, `caption` и `alt_text`. В вашем текущем коде вы пытаетесь передать параметр `date` непосредственно в файлах, что не будет работать.
Чтобы установить дату и другие метаданные для загружаемого медиафайла, вам нужно передать их в теле запроса при добавлении медиафайла. Вот как вы можете это сделать:
1. Сначала загрузите медиафайл, что вы уже делаете.
2. Затем используйте другой запрос POST для обновления метаданных файла.
Примерный код будет выглядеть так:
```python
import requests
from pathlib import Path
import datetime
def upload_media(file_path, timestamp):
""" Функция загрузки фото в WordPress """
dt = datetime.datetime.fromtimestamp(timestamp)
dt = str(dt.strftime('%Y-%m-%dT%H:%M:%S'))
print(f"Дата постинга фотографии: {dt}")
file_path = Path(file_path) # Корректный путь к файлу
endpoint = f"{site_url}/wp-json/wp/v2/media"
headers = {
'Authorization': 'Basic ' + token_wp.decode('utf-8'),
"Content-Disposition": f"attachment; filename={file_path.name};"
}
# Загрузка файла
with open(file_path, 'rb') as file:
response = requests.post(endpoint, headers=headers, files={'file': file})
if response.status_code == 201:
media_id = response.json()['id']
print(f"Файл успешно загружен: {file_path.name}, media ID: {media_id}")
# Обновление метаданных
update_endpoint = f"{site_url}/wp-json/wp/v2/media/{media_id}"
metadata = {
'date': dt,
'caption': 'Photo Instagram',
'alt_text': 'Photo Instagram'
}
update_response = requests.post(update_endpoint, headers=headers, json=metadata)
if update_response.status_code == 200:
print("Метаданные успешно обновлены.")
else:
print(f"Ошибка при обновлении метаданных: {update_response.status_code}, {update_response.json()['message']}")
else:
print(f"Ошибка загрузки файла: {response.status_code}, {response.json()['message']}")
exit()
```
Обратите внимание на использование второго запроса `/media/{media_id}` для обновления метаданных. В запросе на обновление вы передаете `date`, `caption` и `alt_text` в формате JSON.
Проверьте, что используемые вами данные предоставляют корректные значения и что у вас есть необходимые разрешения и настройки на стороне WordPress для выполнения этих операций.