Ausführen eines Befehls im Terminal, nachdem youtube-dl abgeschlossen ist

Ausführen eines Befehls im Terminal, nachdem youtube-dl abgeschlossen ist

Wie im Titel geschrieben, möchte ich einen Befehl NUR ausführen, nachdem der vorherige Befehl „youtube-dl“ abgeschlossen und geschlossen wurde. Ich führe diesen Befehl nicht auf Bash aus, sondern nur auf dem Ubuntu-Terminal.

Ich möchte diesen Befehl ausführen:

Youtube-dl -o output.file link ; sleep 4 ; mv output* /to-directory

Befehl 1 kann zwischen 5 Sekunden und xx Minuten laufen und wenn ich einfach 4 Sekunden schlafe, kann es sein, dass es nicht lange genug dauert, um Befehl 2 auszuführen, wenn Befehl 1 beendet und geschlossen wurde, unabhängig vom Ergebnis. Ich könnte Schlaf 4 für einen unbegrenzten Zeitraffer verwenden, aber das würde meine Geschwindigkeit bei der Ausführung von Befehlen insgesamt wirklich beeinträchtigen.

Antwort1

Wenn Sie die Datei wirklich nur verschieben möchten, warum geben Sie sie dann nicht direkt in das Zielverzeichnis aus?

youtube-dl -o /to-directory/output.file link

Wenn Sie eine andere, viel kompliziertere Aufgabe ausführen möchten, können Sie die --execunten beschriebene Option verwenden youtube-dl -h. Der Befehl sollte dann etwa so aussehen:

youtube-dl -o output.file link --exec 'mv {} /to-directory/'

Hier ist ein funktionierendes Beispiel:

youtube-dl -o irakli https://youtu.be/FyV_49qbvU4 --exec 'mv {} ~/Desktop/'

Nachdem der Befehl abgeschlossen ist, irakli.mkvbefindet sich die Datei bei Ihnen Desktop. Viel Spaß beim Anschauen!


Bonustrack :) Hier ist ein Skript, das ich verwende, um MP3s von youtube.com herunterzuladen, während ich es über meinen Desktop-Browser durchsuche.

cat /usr/local/bin/youtube-dl-clipboard # The file must be executable, of course
#!/bin/sh
notify-send "YouTube-Download BEGIN"
youtube-dl -i -x --audio-format mp3 --output "$HOME/Downloads/%(title)s.%(ext)s" "$(xclip -o)"
  • Beachten Sie, dass das Skript verwendet xclip. Es sollte daher zusammen mit der aktuellsten Version von installiert werden.youtube-dl.

Erstellen Sie eine benutzerdefinierte Verknüpfung wie diese:

Bildbeschreibung hier eingeben

Dann, während Sie surfenyoutube.com, kopieren Sie einfach den Link eines beliebigen Videos - Ctrl+ Cund drücken Sie dann Ctrl+ Alt+ V. Nach einigen Sekunden steht eine neue MP3-Datei im Download-Verzeichnis zur Verfügung.

Antwort2

Youtube-dl -o output.file link && sleep 4 && mv output* /to-directory
oder noch besser:
Youtube-dl -o /to-directory/output.file linkweil Sie später nichts mehr verschieben müssen.

Wenn youtube-dl tatsächlich im Hintergrund läuft und so eingestellt ist, dass es nach dem Download beendet wird,
können Sie Folgendes verwenden:

youtube-dl -o output.file link; while :;do sleep 1; [[ $(ps -C youtube-dl -o pid=) ]] || break;done; mv output.* /to-directory/

Erläuterung while :;- eine Endlosschleife, die darauf wartet, dass youtube-dl beendet wird.
[[ $(ps -C youtube-dl -o pid=) ]] || break- prüfen, ob eine Prozess-ID für youtube-dl vorhanden ist. Wenn ja, wiederholen Sie die Schleife. Andernfalls beenden Sie die Schleife (mit break).

NOTIZ: pidof Youtube-dlMit dem Befehl kann die Prozess-ID eines Programms abgerufen werden. Da youtube-dl jedoch mithilfe von Python3 aufgerufen wird, verfügt es über keinen eigenen Prozess. Daher pidof youtube-dlwürde es in diesem Fall keinen Wert ergeben. Daher pswurde der Befehl verwendet, um die PID abzurufen.

verwandte Informationen