Почему Wordpress при загрузке фото выставляет текущую дату-время, вместо той что указываю в скрипте python?
Есть функция загрузки медиа в Wordpress:
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(path_arh_insta + "/" + 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};"
}
with open(file_path, 'rb') as file:
response = requests.post(endpoint, headers=headers, files={'file': file, 'date': timestamp, 'caption': 'Photo Instagram', 'alt_text': 'Photo Instagram'})
#response = requests.post(endpoint, headers=headers, files=media)
if response.status_code == 201:
print(f">>> Файл успешно загружен:\n>>> Код для вставки в пост: {response.json()['description']['rendered']}\n>>> ")
return response.json()['description']['rendered']
else:
logger.error(f"Ошибка загрузки файла: {response.status_code}, {response.json()['message']}")
exit ()
Файл загружается, но ни дату не ставит какую мне надо, ни описание, ни alt. Кто делал такое подскажите что не так?
Ответы (1 шт):
Автор решения: 8j0rn
→ Ссылка
Спасибо, @andreymal подсказал, и я в итоге сам разобрался:
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(path_arh_insta + "/" + 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};"
}
with open(file_path, 'rb') as file:
response = requests.post(endpoint, headers=headers, files={'file': file}, data={'date': dt, 'caption': 'Photo Instagram', 'alt_text': 'Photo Instagram'})
if response.status_code == 201:
print(f">>> Файл успешно загружен:\n>>> Код для вставки в пост: {response.json()['description']['rendered']}\n>>> ")
return response.json()['description']['rendered']
else:
logger.error(f"Ошибка загрузки файла: {response.status_code}, {response.json()['message']}")
exit ()
Исправил строку:
response = requests.post(endpoint, headers=headers, files={'file': file, 'date': timestamp, 'caption': 'Photo Instagram', 'alt_text': 'Photo Instagram'})
на строку:
response = requests.post(endpoint, headers=headers, files={'file': file}, data={'date': dt, 'caption': 'Photo Instagram', 'alt_text': 'Photo Instagram'})
Так же в data={} можно добавить 'id' - АйДи поста к которому будет прикриплена фотография, 'link' - Ссылка на пост, 'slug' - Буквенно-цифровой идентификатор сообщения, уникальный для его типа, 'description' - Описание фото, и другие. (Подробнее здесь)