Выполнение команды в терминале после завершения youtube-dl

Выполнение команды в терминале после завершения youtube-dl

Как написано в заголовке, я хотел бы запустить команду ТОЛЬКО после того, как предыдущая команда 'youtube-dl' завершится и закроется. Я не запускаю эту команду на bash, а только на терминале ubuntu.

Я хотел бы выполнить эту команду:

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

Команда 1 может выполняться от 5 секунд до xx минут, и если я укажу только сон на 4 секунды, то может не хватить времени для выполнения команды 2, когда команда 1 завершится и закроется, независимо от результата. Я мог бы использовать сон 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. Приятного просмотра!


Бонус-трек :) Вот один скрипт, который я использую для загрузки mp3 с youtube.com, просматривая его через браузер на компьютере.

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+ C, а затем нажмите Ctrl+ Alt+ V. Через несколько секунд новый mp3-файл будет доступен в каталоге загрузок.

решение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. если существует, повторить цикл. В противном случае завершить цикл (используя break).

ПРИМЕЧАНИЕ: pidof Youtube-dlкоманда может использоваться для получения идентификатора процесса для программы. Однако, поскольку youtube-dl вызывается с помощью python3, у него нет собственного процесса. Таким образом, pidof youtube-dlв этом случае не будет получено значение. Таким образом, psкоманда была использована для получения pid.

Связанный контент