youtube-dl が終了した後にターミナルでコマンドを実行する

youtube-dl が終了した後にターミナルでコマンドを実行する

タイトルに書いたように、前のコマンド「youtube-dl」が終了して閉じた後にのみコマンドを実行したいと思います。このコマンドは bash ではなく、Ubuntu ターミナルでのみ実行しています。

次のコマンドを実行したいと思います:

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

コマンド 1 は 5 秒から xx 分まで実行できますが、4 秒間スリープすると指定した場合、結果に関係なくコマンド 1 が終了して閉じられたときにコマンド 2 を実行するのに十分な時間がかからない可能性があります。無期限のタイムラプスにはスリープ 4 を使用できますが、コマンドの実行速度が全体的に低下します。

答え1

本当にファイルを移動したいだけなら、宛先ディレクトリに直接出力してみませんか?

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

他のより複雑なタスクを実行したい場合は、--execの下部で説明されているオプション を使用できますyoutube-dl -h。コマンドは次のようになります。

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

実際の例は以下になります:

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

コマンドが完了すると、ファイルはirakli.mkvに保存されますDesktop。ぜひご覧ください。


ボーナス トラック :) 以下は、デスクトップ ブラウザーで youtube.com を閲覧しているときに、mp3 をダウンロードするために使用しているスクリプトの 1 つです。

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)"
  • スクリプトは を使用するのでxclip、 の最新バージョンとともにインストールする必要があります。youtube-dl

次のようにカスタムショートカットを作成します。

ここに画像の説明を入力してください

ブラウジング中にyoutube.com好きなビデオのリンクをコピーして、 + を押しますCtrl。数秒後、ダウンロード ディレクトリ内に新しい mp3 ファイルが作成されます。CCtrlAltV

答え2

Youtube-dl -o output.file link && sleep 4 && mv output* /to-directory
あるいは、さらに良い
Youtube-dl -o /to-directory/output.file linkことに、後で何かを移動する必要がなくなります。

youtube-dl が実際にバックグラウンドで実行され、ダウンロード後に終了するように設定されている場合、次
を使用できます。

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

説明 while :;- youtube-dl が終了するのを待つための無限ループ。
[[ $(ps -C youtube-dl -o pid=) ]] || break- youtube-dl のプロセス ID が存在するかどうかを確認します。存在する場合は、再度ループします。それ以外の場合はループを終了します ( を使用break)。

注記:pidof Youtube-dlコマンドを使用して、プログラムのプロセス ID を取得できます。ただし、youtube-dl は python3 を使用して呼び出されるため、独自のプロセスはありません。したがって、pidof youtube-dlこの場合は値は生成されません。そのため、psコマンドを使用して pid を取得しています。

関連情報