Scripts de gancho gphoto2 - um guia?

Scripts de gancho gphoto2 - um guia?

Postei isso em raspberrypi.stackexchange, mas fui direcionado aqui. Sou novo no Linux/Unix e estou tentando obter um script de tether/display com o gphoto2.

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

Isso deve fazer o download da imagem para o meu pen drive USB e, em seguida, procurar novos comandos no hookscript.

A próxima etapa seria usar qivum visualizador de imagens semelhante para procurar a última captura na pasta e exibi-la em tela cheia. Gostaria que alguém explicasse em termos simples como fazer esse script de gancho.

Responder1

Gphoto passa $ACTIONpara $ARGUMENTo script de gancho, que você pode usar.

Como um 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 no formato shotwell, mas é fácil alterá-lo para o visualizador de sua preferência.

A segunda ifafirmação garante que o shotwell seja usado apenas se o arquivo baixado for um JPG, pois às vezes eu tinha a câmera configurada para criar raw (CR2 em uma Canon) que não abria no shotwell. Suponho que poderia ser expandido para abri-los com outro visualizador.

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

Você poderia usar dirnamee basenamepara dividir esse caminho e nome de arquivo em suas partes relevantes e depois 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

$ARGUMENTsó está disponível quando gphotoa imagem está sendo baixada, portanto, uma verificação $ACTIONseria redundante neste caso.

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

Só parei de usar isso quando descobriEmaranharmas não tenho certeza se isso está disponível no Pi.

informação relacionada