- audio-lib - папка с кодом библиотеки
- podcast_bot - папка с кодом бота
- test - папка с тестами
- pyproject.toml - файл для управления зависимостями
Бот получает ссылку на ютуб-видео, после чего происходит скачивание аудиодорожки в формате .opus, этот файл передаётся функции, которая делит аудио на несколько частей по 45 минут.
Для скачивания аудиодорожек видео и деления этих дорожек на несколько частей я использую библиотеку audio_lib. Эта библиотека написана мной на языке Rust и находится в папке audio-lib (взаимодействие с python происходит с помощью библиотек pyo3 и maturin). Библиотека предоставляет три функции и состоит из двух модулей.
Модули:
- sync_mod - предоставляет синхронный вариант функций
- async_mod - предоставляет асинхронный вариант функций
Функции:
- is_streaming(url) - проверяет, ведёт ли url на прямую страницу
- download_audio(url, name) - скачивает аудио дорожку ютуб-видео по переданному url
- audio_separation(name, minute) - делит аудио файл на несколько частей, которые длятся переданое количество минут