Скачивание плейлиста youtube с помощью youtube-dl, пропуск существующих файлов


22

Мне было интересно, можно ли было загрузить список воспроизведения YouTube в формате mp3 youtube-dl, пропуская уже существующие файлы. Я использую эту команду:

youtube-dl --continue --ignore-errors --no-overwrites --extract-audio --audio-format mp3 --output "%(title)s.%(ext)s" [path here]

и, хотя я установил его, чтобы не перезаписывать, он действительно перезагружает все с нуля. Это возможно?


даже при повторной загрузке он обычно пропускает запись файла по умолчанию, даже если этот параметр не установлен
mchid

Хорошо, если я сохраню загруженное видео вместе с mp3-файлом, функция пропуска работает правильно. Не совсем то, что мне нужно, но это нормально.
Воин

Ответы:


45

С опцией --download-archive FILE youtube-dl читает и добавляет в список файлов, чтобы не загружать снова. Каждый раз, когда файл успешно загружен, этот идентификатор видео добавляется в FILE.

Вы можете использовать его следующим образом:

youtube-dl --download-archive downloaded.txt --no-post-overwrites -ciwx --audio-format mp3 -o "%(title)s.%(ext)s" [path here]

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

Если бы ваши MP3-файлы были названы в формате по умолчанию %(title)s-%(id)s.%(ext)s, вы могли бы избежать повторной загрузки, создав downloaded.txtиз youtube %(id)sв терминале bash следующее:

for n in *.mp3
do if [[ "$n" =~ -[-_0-9a-zA-Z]{11}.mp3$ ]]
   then echo "youtube ${n: -15: 11}" >> downloaded.txt
   fi
done

1
Ценный ответ здесь. Это решает мою проблему. Спасибо.
Воин

Что -cwixздесь?
bteo

2
-cwixэто более короткая альтернатива--continue --no-overwrites --ignore-errors --extract-audio
Мартин Торнтон

1
Стоит отметить, что, хотя это отлично работает для YouTube, youtube-dl также работает с другими сайтами (например, Soundcloud), где -xопция, похоже, нарушает вывод. Вы можете безопасно удалить этот флаг, если вы загружаете из аудио источника.
Кристианбунди

2

Это действительно полезно. Если это кому-нибудь пригодится, я изменил код, чтобы создать существующий список загрузок, чтобы включить все файлы в папке. Полезно , если загрузка аудио с --extract-audioи --audio-quality "best"флагами

for n in *.*
do if [[ "$n" =~ -[-_0-9a-zA-Z]{11}.*$ ]]
   then echo "youtube ${n: -15: 11}" >> downloaded.txt
   fi
done

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.