
Я ищу менеджер загрузок, работающий в CLI (терминале).
Инструмент должен решать следующую задачу.
Принять список URL-адресов YouTube в качестве входных данных / взять список URL-адресов из файла.
Следует приостанавливать и возобновлять загрузку при прерывании сетевого соединения.
Должно работать в терминале. Я запускаю это на безголовом медиа-сервере.
Сейчас я использую youtube-dl
скрипт nodejs. Но в скрипте нет мониторинга соединения и проверки целостности загрузки, функции возобновления загрузки.
Я попробовал Extreme Download Manager, но он не запустился в автономном режиме.
Любой вклад в достижение этой цели будет оценен по достоинству.
решение1
Двух while
циклов bash
должно быть достаточно:
while ! youtube-dl --batch-file /tmp/yt -i -c --socket-timeout 5; do while ! ping -c 1 -W 1 google.com; do echo "Network interface may down, please check your network"; sleep 10; done; echo "Network up but got url failed before, re-loop file after 5 seconds."; sleep 5; done
Объяснение:
youtube-dl
доступен ли пакет python для установки через обычный менеджер пакетов, такой какapt
./tmp/yt
файл содержит список URL-адресов построчно.-i
означает продолжить выбор следующего URL-адреса в файле, если возникнет ошибка «URL недействителен» (но не ошибка сокета, которая перейдет вping
цикл «сбой и ожидание подключения сети»)-c
означает принудительное возобновление частично загруженных файлов. Имя файла должно иметь постоянный формат для возобновления работы (т.е. вы не можете изменитьyoutube-dl
формат в следующий раз и ожидать, что возобновление будет работать). Лично я использую-o './%(title)s-%(upload_date)s-%(id)s.%(ext)s'
формат- Я лично также добавляю,
--no-mtime
чтобы убедиться, что файл «касается» (полезно, если я хочу отсортировать список файлов по времени загрузки, а не по времени обновления видео).
решение2
Любая командная строкаHTTPклиент должен быть полезен. В системах POSIX рассмотритеGNU-wget-программаилизавиток(и, если протоколФТП, один из многочисленных FTP-клиентов командной строки, таких какncftp).
Вы также можете написать что-то самостоятельно, используя какую-нибудь клиентскую HTTP-библиотеку, напримерlibcurl(и многие языки сценариев, например, Python, Guile, Perl и т. д., имеют многочисленные возможности HTTP-клиента). Обязательно узнайте немного больше оHTTPИ егопеченье.
Вы можете найти (для Linux) некоторые специфичные для YouTube инструменты командной строки.