Скачивание нескольких фото или файлов pytelegrambotapi
пишу бота на Python 3 который отправляет фото из телеграмм на e-mail. Подскажите как реализовать скачивание и отправку альбома или несколько фотографий? Скачивается и отправляется только 1 фотография. Спасибо за ответы
try:
file_info = bot.get_file(message.photo[len(message.photo)-1].file_id)
downloaded_file = bot.download_file(file_info.file_path)
filename = message.photo[0].file_id + '.jpg'
text = MIMEText('Привет')
attachment = MIMEApplication(downloaded_file)
attachment.add_header('Content-Disposition', 'attachment', filename = filename)
msg.attach(attachment)
except TypeError:
pass
try:
file_info = bot.get_file(message.document.file_id)
downloaded_file = bot.download_file(file_info.file_path)
filename = message.document.file_name
text = MIMEText('Привет')
attachment = MIMEApplication(downloaded_file)
attachment.add_header('Content-Disposition', 'attachment', filename = filename)
msg.attach(attachment)
Ответы (1 шт):
Автор решения: proritsatel
→ Ссылка
Я частично решил проблему используя декоратор. Почему я говорю частично - проблема в том, что при отправке скопом например 4 фотографий, загружается только 3. С чем это связано я не знаю. Надеюсь кому-нибудь поможет.
Это решение сработает только если вы отправляете фото как документ, без сжатия. Если потеря качества не принципиальна, то можно изменить
content_types=['photo']
@bot.message_handler(content_types=['document'])
def handle_docs_photo(message):
try:
chat_id = message.chat.id
file_info = bot.get_file(message.document.file_id)
downloaded_file = bot.download_file(file_info.file_path)
src = dir + '\\' + message.document.file_name
bot.send_message(message.chat.id, src)
with open(src, 'wb') as new_file:
new_file.write(downloaded_file)
except Exception as e:
bot.reply_to(message, e)