DzenIT

HOME ZEN IT SOFT APK LIVE GAME OTHER W CONTACT SEARCH

Telegram bot конвертирует jpg webp base64

Понадобился простой бот который будет конвертировать любое изображение в формат webp и потом переводит его в формат base64 сохраняет в текстовый файл и отправляет пользователю.

Надеюсь у вас есть небольшой опыт работы в python и библиотеки вы сами сможете установить.

А так постараюсь оставить все в комментариях к коду или нет..

.
import telebot
import os
from PIL import Image
import base64
import time

bot = telebot.TeleBot('тут ваш ТОКЕН')
@bot.message_handler(commands=['start', 'go'])
def start_handler(message):
    chat_id = message.chat.id
    bot.send_message(chat_id, 'Приветствие при нажатии на старт')


@bot.message_handler(content_types='photo')
def handle_file3(message):
    chat_id = message.chat.id
	#получаем id фотки
    user_photo_id = message.photo[-1].file_id
    file_photo = bot.get_file(user_photo_id)
	#ищем файл с раширением
    filename, file_extension = os.path.splitext(file_photo.file_path)
    downloaded_file_photo = bot.download_file(file_photo.file_path)
	#тут можно добавить расположение 'photo/' + user_photo_id + file_extension
    src = user_photo_id + file_extension
    try:
        with open(src,'wb') as new_file:
            new_file.write(downloaded_file_photo)
        time.sleep(1)
        bot.send_message(chat_id, text='Загружаю на сервер...')
        im = Image.open(user_photo_id + file_extension).convert("RGB")
        im.save((user_photo_id + '.webp'),'webp')
        time.sleep(1)
        bot.send_message(chat_id, text='Конвертирую в webp...')
        time.sleep(1)
        bot.send_document(chat_id, data=open(user_photo_id + '.webp', 'rb'))
        with open((user_photo_id + '.webp'), "rb") as img_file:
            b64_string = base64.b64encode(img_file.read())
            bas64 = (b64_string.decode('utf-8'))
        time.sleep(1)
        f1 = open(user_photo_id + '.txt', 'a', encoding='utf-8')
        f1.write(bas64)
        f1.close()
        time.sleep(1)
        bot.send_message(chat_id, text='Конвертирую в base64 ...')
        time.sleep(1)
        bot.send_document(chat_id, data=open(user_photo_id + '.txt', 'rb'))
        time.sleep(1)
		#Подчищаем за собой 
        os.remove(user_photo_id + file_extension)
        time.sleep(1)
        os.remove(user_photo_id + '.txt')
        time.sleep(1)
        os.remove(user_photo_id + '.webp')
        bot.send_message(chat_id, text='Чисто')
    except:
        bot.send_message(chat_id, text='Sorry Error')
if __name__ == '__main__':
     bot.polling(none_stop=True)

Оставлю ссылку на бота, вдруг еще работает =)