Чем больше вес файла в Telegram — тем ниже шанс его просмотра, это особенно актуально, если речь о видосах. Пользователи попросту не привыкли что-то скачивать из мессенджера по полчаса, а потокового воспроизведения в Телеге нет (и вряд ли будет). Помочь с этим может бот для конвертации видео в GIF, процесс создания которого мы и рассмотрим в этой статье.
Какие задачи выполняет бот для конвертации видео в GIF
Из названия материала очевидно, что бот превращает видеоролик в GIF-анимацию. Но зачем это нужно? А нужно это, например, для:
Повышения конверсии — если звук не важен, то незачем перегружать пост тяжеловесным видосом.
Упрощения жизни — GIF-анимации нужны не только в Telegram. Конечно, есть standalone-программы для конвертации. Но давайте будем честны: сегодня про их существование помнят лишь те, кто постоянно конвертирует одно в другое. И говоря постоянно, мы имеем в виду 99% рабочего времени. Даже дизайнеры и маркетологи все чаще ищут онлайн-сервисы. А уж арбитраны и подавно.
Упрощения жизни 2.0 — вы умеете снимать видосы? Скорее всего, да. А создавать анимации? Возможно. Но такое умеет далеко не каждый читатель. Так не проще ли создать анимацию из видоса?
Прочих танцев с бубном — в отличие от видео, GIF можно использовать для создания стикеров, интерактивных ответов в беседе и во множество других ситуаций. Тут все упирается лишь в фантазию.
А еще, как и любой другой «что-то делающий» бот, этот конвертер можно использовать для генерации трафика. Делать ставку только на это мы не советуем (во всяком случае, если у вас не сетка ботов) — это пыль, а не профит. Но вот если монетизировать «между делом» — почему бы и да? Просто добавьте к нему функционал попрошайки подписки и генерируйте немного трафа в пассивном режиме. А уж если у вас целая сетка ботов… Ну да ладно — вернемся к нашему конвертеру.
Принцип работы бота для конвертации видео в GIF
- Авторизация через bot_api в Telegram.
- Прослушивание обращений и отклик на событие «Новое сообщение».
- Если сообщение не содержит видеофайла — вывод приветственного сообщения с просьбой прислать видео для конвертации в GIF.
- Если новое сообщение содержит видеофайл, сохранение видоса на сервер.
- Конвертация видеоряда из полученного файла в GIF-анимацию посредством ffmpeg-инструментов.
- Отправка в ответном сообщении GIF-файла после завершения конвертации.
- Удаления исходного видео и GIF-файла с сервера после завершения отправки результата.
Пошаговая инструкция, как сделать бот для конвертации видео в GIF на Python
Как и в случае с развертыванием любого другого бота, сначала нужно подобрать сервер, где бот будет «жить». В нашем случае сервер должен подходить под использование Python — так как бот написан на Змее. В общем же случае сервер нужно подбирать под свой ЯП. Чтобы не арендовать железо вслепую, можете использовать собственный ПК и развернуть бот на нем. Для тестов — самое оно. А там со временем уже и понимание того, что именно вам нужно для ваших делишек, постепенно придет.
После создания сервера нужно его настроить. Если ваш сервак на Винде, как в гайде по ссылке выше, вводим в консоль:
winget install ffmpeg
Если же вы арендовали сервер и он на Linux (Ubuntu/Debian), то вводим либо:
sudo apt install ffmpeg
Либо для Linux (CentOS/Fedora):
sudo dnf install ffmpeg
Далее в любом из трех случаев вводим:
pip install python-telegram-bot moviepy
После завершения настройки делаем следующее:
- Находим в Телеге BotFather и следуем его инструкциям, чтоб получить токен для бота. Сам токен копируем куда-то.
- Открываем корень сервера, создаем текстовый файл, переносим в него следующий код:
import os
import imageio
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters, CallbackContext
def video_to_gif(video_path: str, gif_path: str):
reader = imageio.get_reader(video_path)
fps = reader.get_meta_data()['fps']
writer = imageio.get_writer(gif_path, fps=fps)
for frame in reader:
writer.append_data(frame)
writer.close()
async def start(update: Update, context: CallbackContext) -> None:
await update.message.reply_text('Привет! Отправь мне видео, и я конвертирую его в GIF.')
async def handle_video(update: Update, context: CallbackContext) -> None:
video_file = await update.message.video.get_file()
video_path = "input_video.mp4"
gif_path = "output.gif"
await video_file.download_to_drive(video_path)
video_to_gif(video_path, gif_path)
await update.message.reply_document(document=open(gif_path, 'rb'))
os.remove(video_path)
os.remove(gif_path)
def main() -> None:
token = "ТОКЕН СЮДА"
application = Application.builder().token(token).build()
application.add_handler(CommandHandler("start", start))
application.add_handler(MessageHandler(filters.VIDEO, handle_video))
application.run_polling()
if __name__ == '__main__':
main() - Вместо ТОКЕН СЮДА подставляем свой токен от бота.
- Сохраняем файл как bot.py
- Запускаем бот командой python bot.py
Проверяем работоспособность.
Демонстрация работы
Подводя итоги
Создать Telegram-бот для конвертации видео в GIF проще, чем кажется. Для чего именно его использовать — создания крео, облегчения контента постов или генерации подписок, оставляем на откуп вам. Подписывайтесь на наш Telegram и получайте исходный код ботов первыми!