audio_grab.sh: Полный разбор Bash-обертки для мультиплатформенной загрузки

В дополнение к рассказу о костылях, выкладываю чистый код самого Bash-скрипта. Он выполняет роль ``клея`` между системой, вашим браузером и мощью yt-dlp.
Исходники всё также можно получить на гитхабе: https://github.com/mnnoee/Yandex-YouTube-Audio-Grabber

Основная логика работы

Скрипт автоматизирует рутинные действия, делает это просто и предсказуемо:

  1. Проверка зависимостей: Убеждается, что yt-dlp и deno на месте.
  2. Умная структура папок:
    • Yandex: Исполнитель/Название_трека
    • YouTube: Канал/Название_видео
  3. Использование Cookies: Автоматически подтягивает сессию из браузера для доступа к высокому битрейту.


Часть исходника

usage() 
    echo "Использование: $0 [ОПЦИИ] URL1 [URL2 ...]"
    echo ""
    echo "Опции:"
    echo "  -h, --help           Показать эту справку"
    echo "  -d, --dir DIR        Директория для загрузки (по умолчанию: /workdir/audio)"
    echo "  -f, --format FMT     Формат аудио (по умолчанию: opus)"
    echo "  -q, --quality Q      Качество аудио: 0 (лучшее) – 10 (хуже) или битрейт (например, 128K) (по умолчанию: 0)"
    echo "  -b, --browser BROWS  Браузер для cookies (по умолчанию: chrome)."
    echo "                       Поддерживаемые: brave, chrome, chromium, edge, firefox, opera, safari, vivaldi, whale"
    echo "                       Можно указать профиль или контейнер: chrome:Default, firefox::none и т.п."
    echo "  -p, --proxy URL      Использовать HTTP/HTTPS/SOCKS прокси (по умолчанию: без прокси)."
    echo "                       Примеры: http://127.0.0.1:3128, socks5://127.0.0.1:1080"
    echo ""
    echo "В основном это только для YouTube и YandexMusic"
    echo "Не злоупотребляйте с YandexMusic без подписки, могут бан влепить"
    echo "Также без аккаунта/подписки на YandexMusic максимальный битрейт где-то 190"
    echo ""
    echo "Примеры:"
    echo "  $0 https://music.yandex.ru/album/123/track/456"
    echo "  $0 -b firefox -d ~/music https://youtube.com/watch?v=abc"
    echo "  $0 -p http://127.0.0.1:3128 https://youtube.com/watch?v=abc"
    exit 1
} 

Разбор ключевых параметров

Для тех, кто не любит читать справку в терминале:

  • -d, --dir: Куда складывать нажитое добро. По умолчанию /workdir/audio.

  • -f, --format: В какой контейнер паковать. Рекомендую opus, прост я к нему привык, пусть и navidrome его не кушает.

  • -b, --browser: Откуда красть куки. Если пользуетесь Brave или Firefox, обязательно укажите этот флаг.

  • -p, --proxy: Полезно для YouTube, если ваш провайдер решил, что видеохостинги вам не нужны. Для Яндекс изредка тоже бывает полезно.

Почему это удобно?

Главная фишка здесь - массив YTDLP_OPTS. Я собрал в нем оптимальный набор флагов для вшивания обложек альбомов (--embed-thumbnail) и метаданных (--embed-metadata). После загрузки файлы в вашем плеере будут выглядеть как «официальные» релизы, а не как безымянные куски аудио.