Я скачиваю целый канал YouTube, состоящий примерно из 10 000 видео. Иногда загрузка останавливается из-за ошибок типа "контент слишком короткий" или "подключение прервано". Однако есть ли способ автоматически перезапустить загрузку? Вероятно, есть пакетный файл, который вы можете сделать, но я не знаю, как это сделать.
Вот команда, которую я использую для загрузки:
youtube-dl -f bestvideo+bestaudio ytuser:(Channel) -o "/Videos/lhs/[%(upload_date)s - %(id)s] %(title)s.%(ext)s" --ffmpeg-location %CD%\ffmpeg\bin
решение1
Этот ответ не будет работать на старых версиях youtube-dl. Вам необходимо обновить youtube-dl до последней версии. Если в вашей системе установлен Python, вы можете установить последнюю версию youtube-dl локально внутри виртуальной среды Python или загрузить последнюю версию youtube-dl и установить ее глобально.
В Ubuntu 14.04 и более поздних версиях youtube-dl также является пакетом snap. Чтобы установить его, введите:
sudo snap install youtube-dl# запустить его с помощью snap run youtube-dl
Откройте терминал и введите:
youtube-dl -f best -ciw -o "%(title)s.%(ext)s" -v <url-of-channel>
...где <url-of-channel>
заменяется на URL-адрес канала.
Примечание:Если вы загружаете много видео, вам следует сменить каталог на тот, в котором вы хотите сохранить видео, прежде чем начинать их загрузку.
Объяснение
-f, --format FORMAT
video format code. The special name "best" will pick the best quality.
-c, --continue
force resume of partially downloaded files
-i, --ignore-errors
continue on download errors, for example to skip unavailable videos in a channel
-w, --no-overwrites
do not overwrite files
-v, --verbose
print various debugging information
решение2
Если вы посмотрите страницу руководства youtube-dl, вы увидите опцию возобновления частичной загрузки.
-c, --continue
Resume partially downloaded files.
Страница пользователяСвязь
решение3
Возможно, этот аргумент не существовал, когда был задан вопрос, но использование
--ignore-errors
заставит youtube-dl продолжить загрузку независимо от любых ошибок. Используйте с осторожностью, так как универсальное решение, подобное этому, может вызвать проблемы, если вы пропустите важную ошибку, хотя с каналом с 10 тыс. видео вы, вероятно, не будете возражать, если несколько из них не загрузятся должным образом.
Кроме того, используя
--download-archive archive.log
будет отслеживать то, что уже загружено, и пропускать видео, которые у вас уже есть, поэтому, если скрипт остановится из-за чего-то вроде сбоя питания, при повторном запуске он не будет пытаться загрузить все заново с самого начала.
решение4
Полезный скрипт:архиватор_каналов_youtube