Добавить несколько файлов типа bytes-like object в json

Требуется выложить несколько фотографий на сервис telegraph от telegram.

Пытаюсь делать так:

    photo_files = []
    for photo in photos:
        with open(photo, 'rb') as f:
            photo_files.append(f)

    path = requests.post(
        'https://telegra.ph/upload', files={'file':('file', photo_files, 'image/jpeg')}).json()[0]['src']

    response = telegraph.create_page(
    title = "Title",
    html_content="<p>Description</p> \
    <img src='{}'/>".format(path)
    )

На что вылетает исключение TypeError в котором говорится что нужен bytes-like object, но не список


Ответы (1 шт):

Автор решения: Xander

В словаре files каждый файл должен быть отдельным элементом.

Как-то так должно заработать:

photo_files = {}
for photo in photos:
    with open(photo, 'rb') as f:
        photo_files[photo] = (photo, f, 'image/jpeg')

path = requests.post(
    'https://telegra.ph/upload', files=photo_files).json()[0]['src']

response = telegraph.create_page(
title = "Title",
html_content="<p>Description</p> \
<img src='{}'/>".format(path)
)
→ Ссылка