Айнур пишет ... 📝 логотип
Подписаться
Опубликовано

Хотел бы поделиться с вами еще одним из моих...

Автор
Фотография поста

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

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

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

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

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

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

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

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

Свежие посты