Скачиваем mp3 из плейлиста YouTube

02-05-2017 @ 14:49


На досуге собрал интересный плейлист из старых и приятных уху саундтреков к разным сериалам и фильмам, хотел в дороге послушать и в итоге обломался. Выяснилось, что ютуб не умеет играть с выключенным экраном c телефона. Внезапно, да )). Не знаю почему я думал обратное. Такая фигня прокатывает только с аудиоплеером. И, как итог, надо вытаскивать mp3.
Если кто читает MiniVault, то они уже в курсе, что с похожей проблемой я ранее сталкивался: из концертного альбома Ёлки на youtube я извлекал аудио. Но там был единственный файл и особо не нужно было заморачиваться: первый же онлайн сервис выполнил нужную задачу. А как быть с целым плейлистом, в котором файлов может быть до хреновой тонны? Конечно, я нашел варианты, но там либо не более трех-пяти файлов за раз, либо платный сервис, либо офлайн приложение с хрен-пойми-чем внутри. Были решения и на linux-системы, но ничего внятного под Windows.
Короче, нашел выход. Делюсь.

Частично найденный выход заимствует linux-вариант решения вопроса. Спасибо разработчикам!
Нам понадобится youtube-dl, который можно забрать отсюда и libav, с которым работает этот youtube-dl на стадии конвертирования аудио. Последний в моем случае — libav-11.3-win64.
Распаковываем архивы в любую папку, открываем текстовый документ и пишем следующее:
youtube-dl.exe --ffmpeg-location "path_to_ffmpeg" --proxy socks5://localhost:8800/ --extract-audio --audio-format mp3 --audio-quality 0 --yes-playlist https://www.youtube.com/playlist?list=ID
Вообще, большую часть ответов на возникшие вопросы можно найти в справке к этому youtube-dl. В данном же контексте получается следующее:
--ffmpeg-location — указываем где именно лежит libav до папки bin, в виде c:/path/to/folder/bin/
--proxy я выхожу в интернет через прокси, поэтому указываю свои данные. Приложение умеет через socks5. Приятно )
--extract-audio — понятно думаю, извлекаем из файлов аудио-дорожки
--audio-format — указываем какой формат будет аудио файлов
--audio-quality — указываем качество аудио. 0 — наилучшее, 9 — худшее
--yes-playlist — говорим что будем использовать плейлист и указываем на него ссылку
Собственно всё.
Сохраняем текстовый файл как batch-файл и запускаем. Если всё верно — в папке рядом с этим файлом будут появляться сначала webm файлы, а затем mp3.
Конечно, настроек у youtube-dl куча, посмотрите тот же —help к нему. Можно, например, часть опций спрятать в config файл и при вызове youtube-dl указать ссылку на него, при этом после подсунуть только адрес плейлиста. Можно непосредственно скачивать видео в нужные папки. Для чего, вероятно, и было создано это приложение. Тем не менее, основное и нужное мне — в листинге выше. За пару минут собрал весь плейлист, закинул на флешку / телефон и в дорогу!
Если у кого есть более изящное решение — пишите в комментариях. С удовольствием дополню пост)