Skip to main content

ytb2audiobot

Build Status PyPI - Version Docker Image Version

🦜 YouTube to Audio by Andrew A Levin

Installation

🐳 Docker

Minimal Docker compose file

services:
  ytb2audiobot:
    image: andrewlevin/ytb2audiobot
    environment:
      - Y2A_TG_TOKEN=YOUR_TG_TOKEN
      - Y2A_HASH_SALT=YOUR_HASH_SALT
    restart: on-failure:3

Full Docker compose file with all options in default.

See detailed description about all options below.

services:
  ytb2audiobot:
    image: andrewlevin/ytb2audiobot
    environment:
      - Y2A_TG_TOKEN=YOUR_TG_TOKEN
      - Y2A_HASH_SALT=YOUR_HASH_SALT
    restart: on-failure:3

🐍 Python run

Direct install

Reqirments install

TODO -> add full description

apt install ffmpeg

# and  

npm install -g vot-cli

You can nativly install and run as Python package

Write all you enviroments in .env file

Y2A_TG_TOKEN='751*******TOEKEN********omPmnE'
Y2A_HASH_SALT='j298hf********YOU-HASH***********34f2'
Y2A_OWNER_BOT_ID_TO_SAY_HELLOW='4****YOU-OWNER-ID******3'
Y2A_SEGMENT_REBALANCE_TO_FIT_TIMECODES='true'
Y2A_SEGMENT_AUDIO_DURATION_SEC=2404
Y2A_DEBUG_MODE='true'

And after that run

export $(grep -v '^#' .env | xargs)
ytb2audiobot

Environment Options

Y2A_TG_TOKEN

  • No Default

Y2A_HASH_SALT

  • No Default

Y2A_OWNER_BOT_ID_TO_SAY_HELLOW

  • No Default

Отправить сообщение при запуске вледельцу бота, что он включился и начал работу.

Y2A_BUTTON_CHANNEL_WAITING_DOWNLOADING_TIMEOUT_SEC

  • Default: 8

Время ожидания нажатия кнопки скачивания аудио для работы бота в канале.

Y2A_KILL_JOB_DOWNLOAD_TIMEOUT_SEC

  • Default: 2520 (seconds or 43 minutes)

Максимальная продолжительность попытки скачивания аудио.

После

todo Add to info text about timeout

Y2A_SEGMENT_AUDIO_DURATION_SPLIT_THRESHOLD_SEC

  • Default: 6060 (seconds or 101 minutes)

После какой продолжительности аудио будет проихсоходить разделение на части.

101 секунда по-умолчанию выбрана так, что это чуть больше 1 часа и 40 минут, что должно соответсовать одной лекции, а также умещатьсь в максимальные размеры посылаемого файла через Telegram bot в 50 mb.

Y2A_SEGMENT_AUDIO_DURATION_SEC

  • Default: 2340 (seconds or 39 minutes)

Разделение по частям размера сегмента. Последняя часть присодиняется к предпоследней, если она меньше отношения Золотого сечения.

Значение по-умоляанию выбрано из оптимального, как половина времени стандартной лекции.

Y2A_SEGMENT_DURATION_PADDING_SEC

  • Default: 6 (seconds)

При нарезки на сегменты итогового аудио файла количество секунд наложения соседних сегментов. От места разделения добавляется к текущему n секунд в конце, и также в начале следующего.

Y2A_SEGMENT_REBALANCE_TO_FIT_TIMECODES

  • Default: true

Перенарезка аудио итогового аудио файла так, чтобы в текст описание в Telegram входили все timecodes.

Y2A_TRANSLATION_OVERLAY_ORIGIN_AUDIO_TRANSPARENCY

  • Default: 0.3

Устанавливает громкость фоновой оригинальной дорожки.

  • 0.1 - Тихо
  • 0.9 - Оригинальная громкость непереведенного аудио

Y2A_AUDIO_QUALITY_BITRATE

  • Default: 48k

  • Available Values: 48k, 64k, 96k, 128k, 196k, 256k, 320k

  • 48k - Меньше размер файла

Y2A_DEBUG_MODE

  • Default: false

В этом режиме выводятся дорполнительные сообщения в log. А также Y2A_KEEP_DATA_FILES в состоянии true.

Y2A_KEEP_DATA_FILES

  • Default: false

Не удалять скаченные аудио файлы с сервера.

Y2A_REMOVE_AGED_DATA_FILES_SEC

  • Default: 3600 (seconds)

Сколько времени хранить кэш скаченных аудио файлов на сервере.

Y2A_AUTO_DOWNLOAD_CHAT_IDS_STORAGE_FILENAME

  • Default: autodownload-hashed-chat-ids.yaml

??

Y2A_REPLY_TO_ORIGINAL

  • Default: true

В исходещем аудио делать или нет ссылку на оригинальное сообщение.

TODO -> Add Images

🚴‍♂️ Usage and Features

Only send me YouTube URL and I'll make all

Commands

/help
/extra
/autodownload

/autodownload - Command

By default it shows lit this

Works only in Channels. Please add this bot to the list of admins and try again.

#todo

Let you to autodownload in your channels

🔮 Advanced Options

You can call by any command

  • \advanced, \adv, \ad, \extra, \ext, \ex, \options, \opt, \op

📟 CLI options

Subtitles in CLI

youtu.be/TUJmSgViGoM subtitles 

# OR

youtu.be/TUJmSgViGoM subs

# OR

youtu.be/TUJmSgViGoM sub

Search word directly

youtu.be/TUJmSgViGoM subs beatles

youtu.be/TUJmSgViGoM subs sting

Set Bitrate in CLI

youtu.be/TUJmSgViGoM bitrate

# OR

youtu.be/TUJmSgViGoM bitr

# OR

youtu.be/TUJmSgViGoM bit

Call Music in CLI

youtu.be/TUJmSgViGoM music

# OR

youtu.be/TUJmSgViGoM song

🌍 Translation

Get Translation

youtu.be/TUJmSgViGoM translation

# OR

youtu.be/TUJmSgViGoM translate

# OR

youtu.be/TUJmSgViGoM transl

# OR

youtu.be/TUJmSgViGoM trans

# OR

youtu.be/TUJmSgViGoM tran

# OR

youtu.be/TUJmSgViGoM tra

# OR

youtu.be/TUJmSgViGoM tr

Set overlay background original audio volume

Default is 0.3

youtu.be/TUJmSgViGoM trans 0.6

# OR

youtu.be/TUJmSgViGoM trans 0.4

# OR

youtu.be/TUJmSgViGoM trans 0.1

Set translation without background original audio

youtu.be/TUJmSgViGoM trans 0.0

# OR

youtu.be/TUJmSgViGoM trans 0

Force Re Download audio avoiding file keepd in cache.

youtu.be/TUJmSgViGoM force

# OR

youtu.be/TUJmSgViGoM forc

# OR

youtu.be/TUJmSgViGoM for

# OR

youtu.be/TUJmSgViGoM f

=====

=====

Install as service unit in OS

curl -sL https://andrewalevin.github.io/ytb2audiobot/install-manual.sh | bash

Install as Docker Compose

curl -sL https://andrewalevin.github.io/ytb2audiobot/install-docker-compose.sh | bash

ytb2audiobot-view

ytb2audiobot-view

  • 🔐 Privace
  • 🚴‍♂️ Usage and Features
    • 🎏 Split
    • 🎶 Bitrate
    • 📝 Subtitles
    • 📣 Channel
  • 🚀 Install your own bot server

🔐 Защита персональных данных: Рекомендации по обеспечению конфиденциальности

Ваши персональные данные – это ценность, которая заслуживает надежной защиты. Если вы разделяете мои опасения по поводу сохранности личной информации и стремитесь обеспечить максимальную конфиденциальность, следуйте этим рекомендациям:

  • Оцените свои риски: Если у вас есть сомнения в безопасности ваших данных, лучше не пользоваться этим ботом.
  • Установите бота на свой сервер: Чтобы контролировать все процессы и быть уверенным в безопасности, установите бота самостоятельно на свой сервер.
  • Открытый код: Весь код бота публично доступен для просмотра. Можете изучить его, чтобы убедиться в отсутствии эксплойтов, скрытых сохранений данных и любых других возможных утечек ваших персональных данных.

Эти шаги помогут вам защитить свои персональные данные и обеспечить максимальную безопасность при использовании данного бота.

🚴‍♂️ Usage and Features

Send any youtube link to movie. Видео станет загружаться сразу автоматически.

В диалоговом окне покажется примерное время загрузки.

После успешной обрботки и загрузки в телеграм диалоговое окно будет удалено

🕰 Таймкоды для удобства прослушивания

Для вашего удобства и экономии времени к описанию ролика добавляются таймкоды, если они указаны в описании ролика на youtube.

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

photo-1-640

🎏 Split param

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

Как это работает:

  • По умолчанию: Все аудиофайлы, длиннее 1 часа 39 минут (как университетская лекция), автоматически разбиваются на части по 39 минут.
  • Плавный переход: При разделении к предыдущей части добавляется 5 секунд из следующей, а к началу следующей части - 5 секунд из предыдущей. Это помогает понять, на каком месте вы остановились, и избежать потери информации при разделении.
  • Магия золотого сечения: Если последняя часть файла меньше пропорции золотого сечения, она присоединяется к предпоследней части.

Аудиокниги: Длинная аудиокнига будет разбита на части, что облегчает загрузку файлов меньшего размера, их передачу и работу с ними.

Философские тексты: Например, "Этика" Канта. Слушать такой текст даже по 39 минут сложно, поэтому гораздо удобнее разбивать его на небольшие фрагменты по 20 минут.

Наслаждайтесь удобным прослушиванием!

Параметр

youtu.be/TUJmSgViGoM split 25

Алиасами команды для удобства использования и вспоминания добавлены

{split,spl,sp,разделить,раздел,разд,раз}

🎶 Настройка битрейта аудиофайлов

По умолчанию, загружаемые аудиофайлы конвертируются в минимальный размер с оптимальным качеством, что обеспечивает битрейт 48k.

Музыкальные файлы могут звучать лучше с более высоким качеством звука.

Как задать битрейт:

Вы можете самостоятельно задать выходной битрейт аудиофайла в диапазоне от 48k до 320k. Для этого добавьте к отправляемой ссылке через пробел ключевое слово {bit, bitrate} и значение битрейта в тысячных.

Пример:

youtu.be/TUJmSgViGoM bit 320

Алиасами команды для удобства использования и вспоминания добавлены

{bitrate,bitr,bit,битрейт,битр,бит}

img-bitrate-800

Для файла из примера получаются следюущие примеры 4 минутный клип:

  • 48k bitrate - 2.1 mb file size (по-умолчанию)
  • 96k bitrate - 3.5 mb file size
  • 320k bitrate - 9.6 mb file size

📝 Subtitles param

Для скачивания субтитров и поиска по ним воспользуйтесь командой или ее алиасами (для удобства незапомниания :)

{subtitles,subtitle,subt,subs,sub,su,саб,сабы,субтитры,субт,суб,сб}

Без параметров: Просто введите команду, и бот скачает субтитры для текущего видео. В субтитрах будут таймкоды и ссылки на соответствующие моменты видео на YouTube.

С параметрами: Если после команды ввести слово для поиска, бот выдаст фрагменты субтитров, в которых встречается это слово.

📣 Использование бота в канале

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

Как это работает:

  • Отправьте ссылку или текст, в котором присутсвтует YouTube ссылка на видео ролик.

  • После этого появится кнопка callback. Нажмите на неё, чтобы начать скачивание аудиофайла.

    Кнопка скачивания исчезнет через 8 секунд и ничего не будет происходить.

  • Вы также можете использовать команду для скачивания аудиофайла:

    {download, down, dow, d, bot, скачать, скач, ск}

Все другие команды также работают в канале, обеспечивая полный функционал бота.

🚀 Install and Launche on your server

Как установить бот у себя на сервере?

Inside running directory

mkdir ytb2audiobot

cd ytb2audiobot

python3 -m venv venv

source venv/bin/activate

Telegram token paste

nano .env

TG_TOKEN_p='*** YOUR TELEGRAM TOKEN FROM BOT FATHER ***'

Run in production mode

Redirects all outputs to void (stderr to stdout and stdout to /dev/null)

ytb2audiobot > /dev/null 2>&1

Run with in dev mode with log

Show all std in terminal and save it to stdout.log file.

ytb2audiobot | tee -a stdout.log

🤿 Техническая информация

  • Файлы скачиваются в папку datadir. Она создается в tempdir оперционной системы, а в текущей папке создается symlink для macos.

    data-ytb2audiobot -> /var/folders/vd/_ygl4klj7cq01t8crn22rw7c0000gn/T/pip-ytb2audiobot-data

🏂 Todo

  • Очереди для избежания flood youtube

Metadata

Release files for ytb2audiobot 2026.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ytb2audiobot 2026.1
File Size Uploaded Provenance Actions
ytb2audiobot-2026.1.tar.gz 35.9 kB Without provenance Details for ytb2audiobot-2026.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for ytb2audiobot 2026.1
File Interpreter ABI Platform Actions
ytb2audiobot-2026.1-py3-none-any.whl Python 3 none any Details for ytb2audiobot-2026.1-py3-none-any.whl

Total release size: 78.2 kB

Release files / ytb2audiobot-2026.1.tar.gz

Download URL ytb2audiobot-2026.1.tar.gz
Size 35.9 kB
Tags Source
SHA-256 checksum
How to use checksums
16085d89f8a0114e47a6d26a71b3c5e5716caccd834cc818a2fe48f325801270
BLAKE2b-256 checksum
How to use checksums
f6db8f1d2039a486df161e5a1e8c067db80aeef787c8d9e61ec406b33f7ef4b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / ytb2audiobot-2026.1-py3-none-any.whl

Download URL ytb2audiobot-2026.1-py3-none-any.whl
Size 42.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3d4732a9ff61589857c3a99234ca2e790a1a5576c837044a1ea52fcb814e2b6e
BLAKE2b-256 checksum
How to use checksums
e1d2b872002abf558d83e3813acc02976f3e78332c1bef231cc97c645b04e52a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Security for ytb2audiobot 2026.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

2026.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page