Не могу загрузить фото телеграм-ботом на сервис ImgBB
Бота делаю с помощью библиотеки aiogram. Основная задача от бота - это получить фото от пользователя и загрузить его на сервис (желательно в выбранный альбом на сервисе). Этот сервис (imgbb) предоставляет API-токен и по идее все должно работать
ссылка сайта https://imgbb.com
ALBUM_ID = 'Hf3CPd'
#----------------------------------------------------------------------------------
@dp.callback_query_handler(lambda c: c.data == 'send_photo', state= UserState)
async def send_photo(callback_query: types.CallbackQuery):
user_id = callback_query.from_user.id
await bot.send_message(user_id, "Скиньте фотографию")
await UserState.photo_process.set()
@dp.message_handler(content_types=types.ContentType.PHOTO, state= UserState.photo_process)
async def handle_photo(message: types.Message):
user_id = message.from_user.id
photo_file = await message.photo[-1]
url = "https://api.imgbb.com/1/upload"
data = {
"key": STORAGE_API_KEY,
"image": photo_file,
"album": ALBUM_ID,
}
requests.post(url, data)
await bot.send_message(user_id, "Вы загрузили фотографию")
Чтобы получить айди альбома, я создал альбом и зашел в него, а айди взял с адресной строки

Мне кажется я многое упускаю либо это нереально реализовать
Ответы (1 шт):
Возможные пути к решению вашей проблемы:
Заходим в документацию api imgbb (https://api.imgbb.com)
Проходимся по пунктам и видим, что параметр image должен быть в формате бинарного файла, кодировке base64 или ссылкой URL на изображение.
Самый простой вариант - кодировка base64.
Как пример:
import base64 with open("file.png", "rb") as image_file: encoded_string = base64.b64encode(image_file.read())
Открываем изображение с помощью open и кодируем его в необходимый формат. После данных манипуляций можем отправлять параметр image.
Что касается альбома, такого параметра в api нет, в данном вопросе помогут только эксперименты при загрузке.
Использование библиотеки.
Не зачем заново изобретать велосипед, попробуйте использовать уже созданный.
Библиотека imgbbpy (https://pypi.org/project/imgbbpy) может помочь в вашем вопросе. Есть все необходимые функции и параметры для загрузки (альбом отсутствует, но можно попробовать расширить функционал)
Если останутся вопросы или не сможете найти метод как загрузить фото в альбом, можете написать в комментариях, возможно подскажу по решению данной проблемы.