Как пользоваться yt-dlp (часть 3) - скачиваем музыку

Как пользоваться yt-dlp (часть 3) - скачиваем музыку

Ссылки на предыдущие части

Введение (читать не обязательно)

Когда я писал гайд по yt-dlp, цель в основном была познакомить пользователей с этим инструментом. Я не ожидал большой реакции, все таки современный пользователь привык, что интернет сейчас есть практически везде, он быстрый и практически безлимитный. Но на удивление, к двум предыдущим частям до сих пор летят лайки, пользователи задают вопросы. Скажу честно - это приятно, спасибо.

Ну и я удивлен, что оказывается, не только мне все это нужно.

Предисловие (тоже можно не читать)

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

К тому же, у youtube есть свой стриминговый сервис, который называется youtube music. Основные отличия от старшего брата - переделанный интерфейс, а также нормальное отображение музыки по альбомам, исполнителям и т.д.

Я даже не упоминаю аудиокниги, подкасты и прочий аудиоконтент, который заинтересованный пользователь может захотеть сохранить на ПК. А то мало ли что, как показал случай с Vice City Nextgen Edition, видео на youtube не хранятся вечно.

К счастью для нас, помимо всего прочего, yt-dlp умеет качать только аудио. Это получается намного быстрее, чем качать видео. Мало того, он умеет сразу вшивать туда обложку и метаданные, благодаря чему, правильно настроив конфиг, можно парой щелчков выкачивать целые дискографии исполнителей или содержимое каналов.

Немного технических деталей (для своего развития можно почитать)

Как пользоваться yt-dlp (часть 3) - скачиваем музыку

Большинство видео на youtube имеет отдельный аудиопоток. А это значит, что можно сграббить только его (что нам и нужно). Обратите внимание, что битрейт (качество, объем) различаются. Но скажу честно - я качаю максимальное. Объем аудио намного меньше объема видео, можно не заморачиваться с выбором.

webm - это opus (чаще всего) или ogg (редко). m4a - это aac.

В принципе, все современные плееры играют все эти форматы, но если к примеру, у вас старая магнитола в машине, тот же opus она может не "переварить". Хотя, гораздо проще скачать наилучший формат, а потом сконвертировать в тот же mp3 (yt-dlp это умеет, но описывать это в этой статье я не буду).

Кстати, у кого Premium: вам должны быть доступны файлы с большим битрейтом (качеством). Проверьте, отпишитесь, пожалуйста. Только не забудьте куки импортировать (--cookies-from-browser)

youtube music как бы не поддерживается yt-dlp, но по сути это тот же youtube, поэтому никаких проблем со скачиванием нет.

Приступаем!

В прошлой статье я объяснял, что такое конфигурационный файл и как им пользоваться. Нас интересует следующий конфиг:

-i --ignore-config --yes-playlist -w --no-mtime --convert-thumbnails png --console-title -f (bestaudio[acodec^=opus]/bestaudio) -x --embed-metadata --parse-metadata "artist:^(?P<first_artist>[^,]+)" --parse-metadata "%(release_year,upload_date>%Y)s:%(meta_date)s" --ppa "ffmpeg: -c:v png -vf crop=\"'if(gt(ih,iw),iw,ih)':'if(gt(iw,ih),ih,iw)'\"" --parse-metadata "%(upload_date)s:%(meta_upload_date)s" --embed-thumbnail --download-archive already_downloaded.arc -o "%(playlist_title)s\%(playlist_index)03d. %(first_artist)s - %(track)s.%(ext)s"

Конечно, он переусложнен (я для себя некоторые плюшки реализовывал), но он рабочий.

Внимание! Он корректно работает только для "правильных" треков из youtube_music. Нет, конечно, он скачает и другое аудио, но метаданные не возьмутся, обложка обрежется в квадрат (чего для обычных видео с youtube не надо делать).

Если хотите качать аудио с "обычного" youtube, то сделаете следующее:

1. чтобы обложка не "резалась" - уберите строку 13.
2. Строки 11, 12 и 14 отвечают за дополнительный парсинг метаданных. Их тоже надо убрать.
3. Ну и строчку 17 нужно будет превратить во что-то наподобие

-o "%(title)s.%(ext)s"

Для самых любопытных:

#игнорирует ошибки при скачке -i #игнорирует основной конфигурационный файл --ignore-config #если файл является частью плейлиста (и в передаваемой ссылке есть упоминание плейлиста), то скачивается весь плейлист --yes-playlist #не перезаписывать файлы -w #использовать дату изменения фактическую, а не какую сообщает youtube --no-mtime #скачиваем обложку и конвертируем ее в png --convert-thumbnails png #отображаем прогресс скачивания в заголовке окна CMD --console-title #в приоритете скачиваем opus -f (bestaudio[acodec^=opus]/bestaudio) #извлекаем аудио из контейнера (даже аудио yt-dlp скачает в виде webm или mp4). Эта команда превратит их в opus и m4a. -x #записываем метаданные в наш файл --embed-metadata #если артистов у трека много, то имя файла может быть громоздким. Эта команда позволит записать в имя файла только имя первого артиста --parse-metadata "artist:^(?P<first_artist>[^,]+)" #превращает дату загрузки в дату выпуска, чтобы метаданные были красиво заполнены --parse-metadata "%(release_year,upload_date>%Y)s:%(meta_date)s" #почему-то при скачивании обложки на youtube music, несмотря на то, что обложки квадратные, обложка получается прямоугольной, с цветными полосами по бокам. Эта команда обрезает файл обложки, превращая его в квадрат --ppa "ffmpeg: -c:v png -vf crop=\"'if(gt(ih,iw),iw,ih)':'if(gt(iw,ih),ih,iw)'\"" #добавляет отдельное поле в метаданных: дата загрузки файла --parse-metadata "%(upload_date)s:%(meta_upload_date)s" #встраивает облажку в файл --embed-thumbnail #записывает уже скачанные треки в архив, чтобы повторно не пытаться их качать --download-archive already_downloaded.arc #записываем треки по следующему пути: Имя_плейлиста\Номер_трека_в_плейлисте(3 цифры). артист - трек -o "%(playlist_title)s\%(playlist_index)03d. %(first_artist)s - %(track)s.%(ext)s"

И как этим пользоваться?

Конечно, можно каждый раз открывать yt-dlp и передавать ему нужные для скачки файлы, но я делаю следующим образом:

  • на youtube music создал плейлист, сделал его доступным
  • понравившийся трек добавляю в этот плейлист
  • создал bat файл со следующим содержанием:
cd /d "%~dp0" yt-dlp --config-location config.cfg "адрес плейлиста"
  • в папку с bat файлом положил конфигурационный файл
  • не забудьте добавить yt-dlp в path. Ну или в bat файле нужно будет указать полный путь до yt-dlp.exe.

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

Выводы

Помимо youtube и youtube music можно скачивать с кучи других сайтов. К примеру, та же Яндекс.Музыка прекрасно отдает свои треки через yt-dlp. Кстати, если у вас есть подписка "Плюс", то при использовании команды импорта куки с браузера (--cookies-from-browser), можно будет выбрать повышенное качество треков (и даже lossless), что является плюсом для некоторых.

Да, я понимаю, что некоторые могут спросить "А вот прога X делает все то же самое, зачем мне мучиться с консолью?". Да ни за чем. Пользуйтесь тем, чем удобно, я никого не заставляю. Мне удобен yt-dlp, поэтому решил поделиться.

Если будут вопросы - задавайте, постараюсь ответить в пределах своих возможностей.

8
3 комментария