audio_grab.sh: Полный разбор Bash-обертки для мультиплатформенной загрузки
В дополнение к рассказу о костылях, выкладываю чистый код самого Bash-скрипта. Он выполняет роль ``клея`` между системой, вашим браузером и мощью yt-dlp.
Исходники всё также можно получить на гитхабе: https://github.com/mnnoee/Yandex-YouTube-Audio-Grabber
Основная логика работы
Скрипт автоматизирует рутинные действия, делает это просто и предсказуемо:
- Проверка зависимостей: Убеждается, что
yt-dlpиdenoна месте. - Умная структура папок:
- Yandex:
Исполнитель/Название_трека - YouTube:
Канал/Название_видео
- Yandex:
- Использование 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). После загрузки файлы в вашем плеере будут выглядеть как «официальные» релизы, а не как безымянные куски аудио.