
Conforme escrito no título, gostaria de executar um comando SOMENTE depois que o comando anterior 'youtube-dl' for concluído e fechado. Não estou executando este comando no bash apenas no terminal do Ubuntu.
Eu gostaria de executar este comando:
Youtube-dl -o output.file link ; sleep 4 ; mv output* /to-directory
O comando 1 pode ser executado de 5 segundos a xx minutos e se eu declarar apenas dormir por 4 segundos, pode não levar tempo suficiente para executar o comando 2 quando o comando 1 for concluído e fechado, independentemente do resultado. Eu poderia usar sleep 4 para lapso de tempo indefinido, mas isso realmente prejudicaria totalmente minha velocidade de execução de comandos.
Responder1
Se você realmente deseja apenas mover o arquivo, por que não enviá-lo diretamente para o diretório de destino?
youtube-dl -o /to-directory/output.file link
Se você quiser realizar alguma outra tarefa muito complicada, você pode usar a opção --exec
, descrita na parte inferior de youtube-dl -h
, então o comando deve ficar assim:
youtube-dl -o output.file link --exec 'mv {} /to-directory/'
Aqui está um exemplo prático:
youtube-dl -o irakli https://youtu.be/FyV_49qbvU4 --exec 'mv {} ~/Desktop/'
Após a conclusão do comando, o arquivo irakli.mkv
estará em seu Desktop
. Divirta-se assistindo!
Faixa bônus :) Aqui está um script que estou usando para baixar mp3s do youtube.com, enquanto navego no navegador do meu desktop.
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)"
- Observe que o script usa
xclip
, portanto ele deve ser instalado junto com a versão mais recente doyoutube-dl
.
Crie um atalho personalizado como este:
Então, enquanto você navegayoutube. com, basta copiar o link de qualquer vídeo de sua preferência - Ctrl+ Ce pressionar Ctrl+ Alt+ V. Após alguns segundos, um novo arquivo mp3 estará disponível no diretório Download.
Responder2
Youtube-dl -o output.file link && sleep 4 && mv output* /to-directory
ou melhor ainda:
Youtube-dl -o /to-directory/output.file link
já que você não precisaria mover nada mais tarde.
Se o youtube-dl realmente for executado em segundo plano e estiver configurado para sair após o download,
você pode usar:
youtube-dl -o output.file link; while :;do sleep 1; [[ $(ps -C youtube-dl -o pid=) ]] || break;done; mv output.* /to-directory/
Explicação
while :;
- um loop infinito destinado a aguardar o término do youtube-dl.
[[ $(ps -C youtube-dl -o pid=) ]] || break
- verifique se existe um ID de processo para o youtube-dl. se existir, faça um loop novamente. Caso contrário, termine o loop. (usando break
).
OBSERVAÇÃO: pidof Youtube-dl
o comando pode ser usado para obter o ID do processo para um programa. entretanto, como o youtube-dl é chamado usando python3, ele não possui processo próprio. Portanto, pidof youtube-dl
não renderia um valor neste caso. como tal, ps
o comando foi usado para obter o pid.