Abrir automaticamente o arquivo de imagem salvo do scanner por meio de comandos de terminal

1

Eu quero iniciar uma varredura a partir de um terminal e visualizar a imagem automaticamente após a conclusão. Como posso fazer isso sem saber o nome do arquivo salvo? Atualmente, estou executando o Ubuntu 16.04 LTS no meu notebook, que é conectado via USB ao meu scanner.

Eu escrevi o seguinte comando do terminal; no entanto, o problema é que, se mais de um minuto decorrer durante o processo de varredura, o Eye of Gnome não conseguirá encontrar o arquivo de imagem e receberá uma mensagem de erro:

scanimage --format=tiff > ~/Pictures/$(date +%Y%m%d_%H%M).tiff && sleep 5 ; eog --fullscreen ~/Pictures/$(date +%Y%m%d_%H%M).tiff

Por exemplo, um arquivo de imagem será salvo como 20170128_2314.tiff , mas o Eye of Gnome ou o EOG pesquisarão 20170128_2315.tiff , resultando em um erro. E, dependendo da configuração da resolução do scanner, pode demorar de 1 a 5 minutos para digitalizar do início ao fim.

Os arquivos de imagem estão sendo salvos no meu diretório home ~ / pasta Imagens.

Qualquer ajuda ou entrada seria muito apreciada.

    
por RPeezey 01.02.2017 / 06:53

2 respostas

1

Abra o arquivo mais recente dentro de um diretório com seu aplicativo padrão

O script abaixo abrirá o arquivo mais recente dentro do diretório ~/Pictures . Independentemente de como o arquivo é nomeado ou quando o script é executado.

É claro que você pode definir qualquer outro diretório para usar, ou qualquer aplicativo para abrir o arquivo.

O script

#!/usr/bin/env python3
import subprocess
import os
from operator import itemgetter

dr = os.path.join(os.environ["HOME"], "Pictures")
files = [os.path.join(dr, f) for f in os.listdir(dr)]
latest = sorted([[f, os.path.getmtime(f)] for f in files], key=itemgetter(1))[-1][0]
subprocess.Popen(["xdg-open", latest])

Para usar

  1. Copie o script em um arquivo vazio, salve-o como open_latest.py
  2. Execute:

    python3 /path/to/open_latest.py
    

    e o arquivo mais recente será aberto por seu aplicativo padrão.

Notas

  • Para usar outro diretório, altere a linha

    dr = os.path.join(os.environ["HOME"], "Afbeeldingen")
    

    em, por exemplo,

    dr = "/path/to/dir"
    

    mas não use caminhos como $HOME , que não funcionam em python

  • Para usar um aplicativo específico em vez do padrão, altere a linha:

    subprocess.Popen(["xdg-open", latest])
    

    em p.

    subprocess.Popen(["eog", latest])
    

Explicação

O script:

  • define o diretório Pictures dentro do diretório $HOME :

    dr = os.path.join(os.environ["HOME"], "Pictures")
    
  • lista os arquivos:

    files = [os.path.join(dr, f) for f in os.listdir(dr)]
    
  • classifica os arquivos por data de modificação ( os.path.getmtime(f) ), obtenha o mais recente:

    latest = sorted([[f, os.path.getmtime(f)] for f in files], key=itemgetter(1))[-1][0]
    
  • abra o arquivo com seu aplicativo padrão:

    subprocess.Popen(["eog", latest])
    
por Jacob Vlijm 01.02.2017 / 08:20
0

Por que não salvar o nome do arquivo em uma variável antes de enviá-lo para scanimage :

filename=~/Pictures/$(date +%Y%m%d_%H%M).tiff
scanimage --format=tiff > "$filename" && sleep 5
eog --fullscreen "$filename"

(Eu divido em várias linhas para facilitar a leitura, mas você pode combinar os comandos com ; como você estava fazendo antes.)

    
por muru 01.02.2017 / 07:13