Подписаться
Опубликовано

Telegram-бот: конвертация YouTube в аудио с очередью

Автор
  • Имя
    Айнур пишет ... 📝
    Telegram

Хотел бы поделиться с вами еще одним из моих недавних pet-проектов. Я сделал Telegram-бота, который конвертирует YouTube видео в аудио - @YoutubeAudioDownloadFreeBot. Делал я его чисто из-за любопытства. Идея проекта подпадает под главный критерий для моих пет-проектов - реализация не сложная и посильная для одного человека за относительно короткое время.

В начале делания такого бота кажется, что механизм работы будет следующий - получил ссылку от клиента, скачал видео, извлёк аудиодорожку, отправил файл. Однако если множество пользователей начнут одновременно дудосить запросами на скачивание, это может привести к длительной задержке и нагрузке на сервер.

Поэтому нужно воспользоваться более хитрым решением, которое могло бы обрабатывать большое количество запросов, не нагружая сервер. Я использовал модель основанную на очереди и воркерах, которая представлена на картинке.

Нужно создать очередь, в которую попадает каждая отправленная пользователем ссылка на видео. Эта очередь разбирается воркерами - отдельными фоновыми процессами, которые берут ссылку из очереди, скачивают файл, сохраняют в кэш и отправляют его пользователю.

Число воркеров ограничено, чтобы предотвратить перегрузку сервера. Таким образом, даже при большом количестве запросов, система будет работать стабильно, обрабатывая ссылки по мере освобождения воркеров.

Чтобы избежать повторного скачивания одного и того же видео, я добавил кэш. Интересный момент заключается в том, что файлы кэшируются в Телеграм. Да, я использую Телеграм канал @youtube_audios_free в качестве кэша, что позволяет мне не хранить файлы на моем сервере. Если пользователь пришлет ссылку на ранее загруженный файл, то бот перешлет ему сообщение из канала.

Если кому то интересно, то вот ссылка на бота - @YoutubeAudioDownloadFreeBot

Айнур пишет ... 📝
257 подписчиков
28 постов
Живу в Екатеринбурге, занимаюсь бэкенд разработкой. Тут делюсь опытом, мыслями и заметками из прочитанных книг. Написать мне в личку - @ainr_c Мой блог - https://ainur-khakimov.ru

Из подборки #make

Свежие посты

Опубликовано

Классические абстракции используемые в ФП

Что такое классические тайпклассы в ФП: полугруппы, моноиды, функторы, аппликативы
Опубликовано

Краткое содержание книги «Цель» Голдратта

Обзор книги «Цель» Элияху Голдратта: системный подход, ограничение, бутылочное горлышко, повышение эффективности производства и продуктивности
Опубликовано

Лонгрид про Scalafix

Scalafix лонгрид: как писать кастомные правила линтинга и рефакторинга Scala
Опубликовано

Последовательность выполнения задач

Как правильно выбирать порядок выполнения задач, чтобы повысить продуктивность и избежать потери энергии
Опубликовано

Зеленые и красные задачи

Как различать зеленые и красные задачи в личной продуктивности