Fork me on GitHub

Телеграмм-бот: получаем звук из видео ютуба.

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

Встречайте мой проект - py-savemp3youtube-bot - телеграмм бот получает ссылку на видео ютуба и возвращает звуковую дорожку видео.

Реализованные возможности:

  1. получение ссылки на видео ютуба -> на выходе пользователю возвращается звуковая дорожка видео (файлы в формате mp3)

  2. mp3 файл делятся на несколько каждый длительностью 60 минут

  3. администратор бота только один пользователь

  4. администратор может выполнять следующие действия: добавить пользователя по id, удалить пользователя из доступа к данному боту, информация о тех пользователях кто имеет доступ

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

Настройка проекта для запуска

Библиотеки:

  pip3 install python-dotenv    
  pip3 install Telethon
  pip3 install requests

или просто выполняем

  pip install -r requirements.txt
  • установить программы для работы

  • youtube-dl - кроссплатформенный свободный проект с открытым исходным кодом на Python - для работы с видео ютуба. Для ознакомления можно прочитать статью.

    Для установки на убунту:

sudo -H pip3 install --upgrade youtube-dl
  1. mp3splt - для разбивания аудофайлов различных форматов без декодинга.

    Для установки на убунту:

     apt install mp3splt

### Конфигурационные файлы проекта:

  • .env
  TLG_APP_API_ID=123456 # APP API ID get from https://my.telegram.org
  TLG_APP_API_HASH=fdgdfgdgdfgdfgd # APP API HASH get from https://my.telegram.org
  TLG_APP_NAME=app  # APP NAME get from https://my.telegram.org
  I_BOT_TOKEN=12345:fdgdfgdfgdfdfgdfg    # TOKEN Bot drom BotFather
  TLG_ADMIN_ID_CLIENT=12568999  # id administarator bot
  TLG_PROXY_SERVER = server # адрес MTProxy Telegram
  TLG_PROXY_PORT = 555 # порт  MTProxy Telegram
  TLG_PROXY_KEY=sf23231231  # secret key  MTProxy Telegram
  • db_user_allow.txt - текстовый файл в котором указываются id пользователей которые имеют доступ к боту (за исключением администратора бота)

Запуск проекта:

python start_bot_async.py

Добавление в автозапуск программы при загрузке сервера Ubuntu

в папке /etc/systemd/system/ создадим файл start-youtube-audio.service

Содержимое файла:

[Unit]
Description=Youtube video to audio
After=network.target

[Service]
ExecStart=путь до скрипта запуска программы

[Install]
WantedBy=default.target

выполним команды

systemctl daemon-reload
systemctl enable start-youtube-audio.service
systemctl start start-youtube-audio.service

Команды которые используются ботом для основного функционала:

1. How to download an MP3 track from a YouTube video

youtube-dl --extract-audio --audio-format mp3 <video URL>

2. Разбить аудиофайл на части продолжительностью 60 минут:

mp3splt -t 59.0 -d имя_папки_для_выходного_файла имя_входного_файла

Полезные ссылки

social