Como executar um comando automaticamente após concluir o download?

Como executar um comando automaticamente após concluir o download?

Preciso de uma maneira que me ajude a executar um comando automaticamente após a conclusão do download.

Quero criar um diretório ao lado do arquivo baixado automaticamente depois de clicar no botão de download integrado do Firefox. Quero que tudo isso seja automático.

Responder1

Se você puder baixar o arquivo fora do Firefox, você pode usar

filetodownload=file-to-download.ext
wget http://www.example.org/"$filetodownload" -O "$filetodownload"
#"I want to create a directory beside the downloaded file automatically"
#You didn't specify a dir name
mkdir "$filetodownload"

Caso contrário, você terá que monitorar o andamento do download do arquivo e quando terminar, criar o diretório “ao lado do arquivo baixado”. O seguinte funcionou para mim (mas não consegui criar um diretório com o mesmo nome do arquivo). Ele analisa todos os arquivos, incluindo os ocultos. Modifique conforme necessário.

#! /bin/bash
while [ 1 ]
 do
  for files in $(find . -maxdepth 1 -mmin -1 -type f)
   do
    testbefore=$(ls -l $files | awk '{print $5$6$7$8$9}')
    sleep 2
    testafter=$(ls -l $files | awk '{print $5$6$7$8$9}')
    if [ $testbefore = $testafter ]
     then
#     echo $testbefore
     mkdir $(basename "$files")_
    fi
   sleep 5
  done
 done

Responder2

  1. Adicione o tipo MIME (você pode adicionar neverAsk.openFilepara todos)about:config*/*
  2. Crie um script executável que:
    • pega o caminho do arquivo da lista de argumentos (o primeiro argumento)
    • move-o para o local de destino (como foi baixado tmp)
    • executa os comandos que você quiser
  3. Diga ao Firefox para abrir este tipo de arquivo com seu script

Este último é fácil de fazer, about:preferencesmas um pouco mais difícil se você quiser adicionar registros manualmente ao mimeTypes.rdfarquivo no perfil do Firefox.

Responder3

O Firefox baixa um arquivo com o nome temporário $f.part e, se o download for concluído, renomeia-o para $f.

Assim, você pode observar as alterações de diretório com ferramentas como inotifywaitouwatchmedo.

inotifywait -m .
...
./ MOVED_FROM file.zip.part
./ MOVED_TO file.zip

informação relacionada