it-swarm.com.de

Youtube-dl weigert sich, im Hintergrund zu laufen

Ich renne youtube-dl im Hintergrund setzen & nach dem Befehl. Das Problem ist, dass es mir egal ist, dass ich es in den Hintergrund stelle und weiterhin Informationen im Terminal drucke.

Es weigert sich nicht nur, damit aufzuhören Ctrl+C oder Ctrl+ZEs wird nichts anderes getan, als diese Meldungen anzuzeigen. Um es zu stoppen, muss ich das Terminal schließen.

Folgendes passiert genau:

[email protected]:~$ clear
[email protected]:~$ youtube-dl https://www.youtube.com/watch?v=LMQsYSuw8hw &
[1] 2028
[email protected]:~$ [youtube] LMQsYSuw8hw: Downloading webpage
[youtube] LMQsYSuw8hw: Downloading video info webpage
[youtube] LMQsYSuw8hw: Extracting video information
[youtube] LMQsYSuw8hw: Downloading MPD manifest
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[download] Resuming download at byte 11440128
[download] Destination: I Was On Japanese TV... and I F#%KING HATED IT.-LMQsYSuw8hw.f137.mp4
[download]   4.8% of 231.85MiB at 199.01KiB/s ETA 18:56^C
[email protected]:~$ ^C
[email protected]:~$ ^C
[download]   4.8% of 231.85MiB at 136.95KiB/s ETA 27:30^C
[email protected]:~$ ^C
[email protected]:~$ ^C
[email protected]:~$ ^C
[email protected]:~$ ^C
[download]   5.0% of 231.85MiB at 127.41KiB/s ETA 29:31^C
[email protected]:~$ ^C
[email protected]:~$ ^C
[email protected]:~$ ^C
[email protected]:~$ ^C
[email protected]:~$ ^C
[email protected]:~$ ^C
[email protected]:~$ ^C
[email protected]:~$ ^C
[email protected]:~$ ^C
[download]   5.0% of 231.85MiB at 111.38KiB/s ETA 33:44^C
[email protected]:~$ ^C
[download]   5.0% of 231.85MiB at 111.21KiB/s ETA 33:47^C
[email protected]:~$ ^C
[download]   5.1% of 231.85MiB at 116.77KiB/s ETA 32:09^C

[download]   5.5% of 231.85MiB at 108.71KiB/s ETA 34:24^C

[download]   5.6% of 231.85MiB at 76.68KiB/s ETA 48:41
1
Mohamed Ashref

youtube-dl Wird im Hintergrund ausgeführt, sendet jedoch weiterhin Ausgaben an Ihr Terminal und erstellt eine große Menge davon, um Sie über den Fortschritt zu informieren. Es gibt eine Reihe von Möglichkeiten, dies zu ändern, aber Sie möchten wahrscheinlich entweder youtube-dl produzieren weniger ausgeben oder die Ausgabe an eine Datei senden (oder verworfen), anstatt in Ihrem Terminal zu erscheinen.

Möglichkeit 1: Führen Sie youtube-dl -q Aus, um Statusmeldungen zu unterdrücken.

Wenn Sie die Fortschrittsmeldungen nicht sehen möchten, können Sie das Flag -q (Oder --quiet, Das dasselbe tut) an den Befehl youtube-dl Übergeben:

youtube-dl -q https://www.youtube.com/watch?v=NZ-ElsvYKyo &

Sie müssten diese URL natürlich durch die URL ersetzen, die Sie herunterladen möchten. Einige Meldungen werden möglicherweise noch gedruckt, einschließlich Fehlern und Warnungen. Aber wahrscheinlich möchten Sie diese sehen.

Wenn Sie nicht möchten, dass youtube-dl Warnungen ausgibt, können Sie youtube-dl Mit dem Flag --no-warnings Ausführen. Das schlage ich allerdings nicht vor, es sei denn, Sie sind sich sicher, dass Sie das wollen.

youtube-dl -q --no-warnings https://www.youtube.com/watch?v=NZ-ElsvYKyo &

Um mehr über die von youtube-dl Akzeptierten Befehlszeilenoptionen zu erfahren, können Sie man youtube-dl Oder lesen Sie die Online-Handbuchseite ausführen.

Methode 2: Leiten Sie die Standardausgabe von youtube-dl In eine Datei um.

Um die Ausgabe an dl.log Im aktuellen Verzeichnis anzuhängen (Sie können das benennen, was Sie möchten, und es wird erstellt, wenn es noch nicht existiert), führen Sie Folgendes aus:

youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo >> dl.log &

Wenn Sie überschreibendl.log Anstatt den Text an das Ende anzuhängen, verwenden Sie > Anstelle von >>:

youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo > dl.log &

Die normale Ausgabe wird dann zu dl.log (Oder zu der von Ihnen angegebenen Datei) umgeleitet. Die Fehlerausgabe wird jedoch weiterhin auf Ihrem Terminal angezeigt. Als ich zum Beispiel diesen Befehl ausführte, wurde eine Warnung auf meinem Terminal ausgegeben:

[email protected]:~$ youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo >> dl.log &
[1] 14456
[email protected]:~$ WARNING: Requested formats are incompatible for merge and will be merged into mkv

Alles andere wurde in die Protokolldatei geschrieben:

[email protected]:~$ cat dl.log
[youtube] NZ-ElsvYKyo: Downloading webpage
[youtube] NZ-ElsvYKyo: Downloading video info webpage
[youtube] NZ-ElsvYKyo: Extracting video information
[youtube] NZ-ElsvYKyo: Downloading MPD manifest
[download] Destination: Lecture 1 _ Topics in String Theory-NZ-ElsvYKyo.f244.webm
[download]  23.2% of 359.52MiB at 204.49KiB/s ETA 23:[email protected]:~$

Sie können die Ausgabe jederzeit mit cat (wie oben beschrieben) anzeigen, um den Fortschritt zu überprüfen.

Wenn Sie youtube-dl Ohne -q Ausführen, wird eine Ausgabe erstellt, die in erster Linie für ein Terminal bestimmt ist. Diese Ausgabe enthält Steuerzeichen, mit denen ein Terminal angewiesen wird, die vorherige Statusmeldung zu löschen, damit sie visuell durch die neue Statusmeldung ersetzt werden kann. Einige Arten der Anzeige der Datei, wie z. B. cat dl.log, Zeigen die "gelöschten" Meldungen oder die Steuerzeichen nicht an. Sie sind jedoch immer noch Teil der Datei, und Sie können sie mit einigen anderen Dienstprogrammen anzeigen. Zum Beispiel funktioniert view dl.log.

Weg 2a: Leiten Sie die Ausgabe auf /dev/null Um, um sie loszuwerden.

Wenn Sie möchten, dass die Ausgabe einfach verworfen und nicht in einer tatsächlichen Datei gespeichert wird, können Sie sie zu /dev/null umleiten:

youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo > /dev/null &

Bei /dev/null Spielt es keine Rolle, ob Sie "überschreiben" (>) Oder "anhängen" (>>).

Dies ist im Allgemeinen eine praktische Technik, die jedoch bei youtube-dl Wahrscheinlich nicht erforderlich ist. Wenn Sie den Fortschritt unterdrücken möchten, können Sie stattdessen einfach youtube-dl -q Ausführen.

Möglichkeit 3: Leiten Sie auch den Standardfehler um.

reguläre Ausgabe und Fehlerausgabe sind getrennt. Es ist üblich, dass youtube-dl Beide erzeugt. Die obige Methode leitete nur die Standardausgabe um. Sie können auch Standardfehler umleiten. Mit der Umleitung können Sie eine Menge tun, einschließlich der Umleitung der beiden Ausgabestreams in separate Dateien. Für unsere Zwecke hier werde ich nur zeigen, wie sowohl die Standardausgabe als auch der Standardfehler an dieselbe Datei gesendet werden:

youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo &>> dl.log &

Als ich das lief, zeigte meine Shell nur

[2] 15009

... und sowohl die reguläre Ausgabe als auch die Fehlerausgabe erschienen in dl.log:

[email protected]:~$ cat dl.log
[youtube] NZ-ElsvYKyo: Downloading webpage
[youtube] NZ-ElsvYKyo: Downloading video info webpage
[youtube] NZ-ElsvYKyo: Extracting video information
[youtube] NZ-ElsvYKyo: Downloading MPD manifest
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[download] Destination: Lecture 1 _ Topics in String Theory-NZ-ElsvYKyo.f244.webm
[download]   0.0% of 359.52MiB at 107.65KiB/s ETA 56:[email protected]:~$

Im obigen Beispiel wurde &>> Verwendet, das an dl.log Angehängt wird. Um die Datei stattdessen zu überschreiben, verwenden Sie &> (Oder >&, Was auch funktioniert) anstelle von &>>:

youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo &> dl.log &

Weg 3a: Leiten Sie sowohl die normale als auch die Fehlerausgabe auf /dev/null Um.

Wenn Sie wirklich möchten, können Sie sowohl die Standardausgabe als auch den Standardfehler nach /dev/null Umleiten, sodass alles einfach verworfen wird:

youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo &> /dev/null &

Wahrscheinlich möchten Sie jedoch tatsächliche Fehlermeldungen sehen. Wenn es nur Statusmeldungen und Warnungen sind, die Sie nicht möchten, brauchen Sie keine Umleitung. In diesem Fall können Sie youtube-dl -q --no-warnings Wie oben beschrieben verwenden. (Siehe Weg 1.)

5
Eliah Kagan