Почему 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' - Описание фото, и другие. (Подробнее здесь)

→ Ссылка