Existe algum método de linha de comando para informar se todos os downloads atuais no Chromium foram concluídos?

3

Existe uma maneira de determinar se todos os downloads atuais no Chromium foram concluídos? Por downloads, quero dizer, baixar vídeos do Youtube. Não quero apenas confiar na guia Downloads do Chromium para ver se algum download está em andamento. Existe um comando que eu posso executar ou arquivo posso verificar para ver se um download está em andamento?

    
por dave 21.02.2015 / 19:38

1 resposta

4

Se você conhece os caminhos dos arquivos que está baixando (por exemplo, se os colocar todos em um diretório), poderá verificar se esses arquivos ainda estão abertos.

lsof ~/Downloads

Você pode receber uma notificação quando o Google Chrome terminar de escrevê-las (assumindo Linux :

inotifywait -e close_write ~/Downloads

Se você quiser listar todos os downloads pendentes (ou os terminados), uma maneira desajeitada é acessar o banco de dados do Chrome. Como o Chrome mantém o banco de dados bloqueado, você não pode acessá-lo diretamente (pelo menos não com a linha de comando sqlite3 tool), você precisa fazer uma cópia do arquivo, e há uma pequena chance de obter um inconsistente vista, então isso não é completamente confiável, mas deve ser bom o suficiente para uso casual.

tmp=$(mktemp)
cp ~/.config/google-chrome/Default/Downloads "$tmp"
echo 'select target_path from downloads where end_time is null;' | sqlite3 "$tmp"
rm "$tmp"

A melhor abordagem provavelmente seria fazer o Chrome notificá-lo quando o download terminar. A extensão Download Notifier faz isso, mas tem efeitos adicionais adicionais e oferece a você uma notificação de desktop, não é algo que você pode usar facilmente a partir da linha de comando. A parte principal do código parece ser esta:

chrome.downloads.onChanged.addListener(function(obj) {
    if (obj.hasOwnProperty("state") && obj.state.current === "complete") {
        chrome.downloads.search({id: did}, function(items) {
            filename = items[0].filename;
            …
        }
    }
});

precisaria ser preenchido com um método para se comunicar com o mundo externo (criar um arquivo em algum lugar no diretório da extensão, talvez), o que está além do meu conhecimento de programação de extensão do Chrome.

    
por 22.02.2015 / 00:20