Auf der Suche nach einem Terminal-Download-Manager

Auf der Suche nach einem Terminal-Download-Manager

Ich suche nach einem Download-Manager, der im CLI (Terminal) läuft.

Das Tool sollte den folgenden Zweck erfüllen.

  1. Nehmen Sie eine Liste mit YouTube-URLs als Eingabe / nehmen Sie eine URL-Liste aus einer Datei.

  2. Sollte den Download anhalten und fortsetzen, wenn die Netzwerkverbindung unterbrochen wird.

  3. Sollte im Terminal ausgeführt werden. Ich führe dies auf einem Headless-Medienserver aus.

Ich verwende youtube-dljetzt ein Node.js-Skript. Dem Skript fehlen jedoch die Funktion zur Verbindungsüberwachung, Überprüfung der Download-Integrität und zum Fortsetzen des Downloads.

Ich habe den Extreme Download Manager ausprobiert, aber er lief nicht ohne Treiber.

Wir sind für jeden Beitrag dankbar, der zur Erreichung dieses Ziels beiträgt.

Antwort1

Zwei whileLoop-Ins bashsollten genügen:

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

Erläuterung:

  • youtube-dlist ein Python-Paket zur Installation über einen normalen Paketmanager wie verfügbar apt.
  • /tmp/ytDie Datei enthält eine zeilenweise Liste der URLs.
  • -ibedeutet, dass mit der Auswahl der nächsten URL in der Datei fortgefahren wird, wenn ein Fehler wegen einer ungültigen URL auftritt (aber kein Socket-Fehler, der in pingdie Schleife „Fehlgeschlagen und warten, bis das Netzwerk aktiv ist“ wechselt).
  • -cbedeutet, dass die Wiederaufnahme teilweise heruntergeladener Dateien erzwungen wird. Der Dateiname sollte ein einheitliches Format haben, damit die Wiederaufnahme funktioniert (d. h. Sie können youtube-dldas Format beim nächsten Mal nicht ändern und erwarten, dass die Wiederaufnahme funktioniert). Ich persönlich verwende -o './%(title)s-%(upload_date)s-%(id)s.%(ext)s'das Format
  • Ich persönlich füge auch --no-mtimedie Datei „berühren“ hinzu, um sicherzustellen, dass dies möglich ist (nützlich, wenn ich die Dateien nach Downloadzeit statt nach Videoaktualisierungszeit sortieren möchte).

Antwort2

Jede BefehlszeileHTTPClient sollte nützlich sein. Auf POSIX-Systemen sollten SieGNU wgetoderLocke(und wenn das ProtokollFTP, einer der zahlreichen FTP-Kommandozeilen-Clients wiencftp).

Sie können auch selbst etwas programmieren, indem Sie eine HTTP-Client-Bibliothek verwenden, wielibcurl(und viele Skriptsprachen, z. B. Python, Guile, Perl usw., verfügen über zahlreiche HTTP-Client-Funktionen). Informieren Sie sich unbedingt überHTTPund seinKekse.

Sie können (für Linux) einige YouTube-spezifische Befehlszeilentools finden.

verwandte Informationen