gphoto2 hook scripts - um guia?

1

Eu postei isso no raspberrypi.stackexchange, mas fui direcionado aqui. Sou novo no Linux / Unix e estou tentando obter um script de corrente / exibição com gphoto2 .

gphoto2 --capture-tethered --hook-script=myhookscript.sh \
    --filename="/home/media/usbpendrive/image-%Y%m%d-%H%M%S.jpg" \
    --force-overwrite

Isto supostamente faz o download da imagem para meu pen drive USB e então procura por novos comandos no hookscript.

O próximo estágio seria usar qiv ou visualizador de imagens semelhante para procurar a última captura na pasta e exibi-la em tela cheia. Eu gostaria que alguém explicasse em termos simples como fazer este script de gancho.

    
por user15163 15.06.2014 / 21:02

1 resposta

2

O Gphoto passa $ACTION e $ARGUMENT para o script de gancho, que você pode usar.

Como exemplo: -

#!/bin/bash

if [ $ARGUMENT ]; then
    if [[ $ARGUMENT =~ .+\.[jpg|JPG] ]]
    then
    # Then next few lines are optional
    # Alternatively pass $ARGUMENT directly to your image viewer eg:-
    # /usr/bin/shotwell "$ARGUMENT" &
    DIRNAME=$(dirname "$ARGUMENT")
    BASENAME=$(basename "$ARGUMENT")
    NEWFILENAME="$DIRNAME/my_new_folder/$BASENAME"
    mv "$ARGUMENT" "$NEWFILENAME"
            /usr/bin/shotwell "$NEWFILENAME" &
    fi
fi

Isso abre o arquivo em shotwell , mas é fácil mudar para seu visualizador preferido.

A segunda instrução if garante que o shotwell seja usado apenas se o arquivo baixado for um JPG, pois algumas vezes eu defini a câmera para criar raw (CR2 em uma Canon) que não seria aberta em shotwell. Eu suponho que poderia ser expandido para abrir aqueles com outro visualizador.

A imagem será salva como o argumento fornecido para --filename - no seu caso /home/media/usbpendrive/image-20140616-125500.jpg . Esse será o valor armazenado em $ARGUMENT e passado para o seu script de gancho.

Você pode usar dirname e basename para dividir esse caminho e nome de arquivo em suas partes relevantes e, em seguida, reutilizá-los para criar um novo caminho e nome de arquivo para a imagem.

$dirname /home/media/usbpendrive/image-20140616-125500.jpg
/home/media/usbpendrive 
$basename /home/media/usbpendrive/image-20140616-125500.jpg
image-20140616-125500.jpg

$ARGUMENT só está disponível quando gphoto está baixando a imagem, portanto, uma verificação de $ACTION seria redundante nesse caso.

O arquivo precisará ter seu bit executável definido, é claro.

Eu só parei de usar isso quando encontrei Entangle , mas não tenho certeza de que está disponível no Pi.

    
por 15.06.2014 / 21:54