Ich habe dies auf raspberrypi.stackexchange gepostet, wurde aber hierher weitergeleitet. Ich bin neu bei Linux / Unix und versuche, ein Tether- / Display-Skript zum Laufen zu bringen gphoto2
.
gphoto2 --capture-tethered --hook-script=myhookscript.sh \
--filename="/home/media/usbpendrive/image-%Y%m%d-%H%M%S.jpg" \
--force-overwrite
Dieser soll das Image auf meinen USB-Stick herunterladen und anschließend im Hookscript nach neuen Befehlen suchen.
Der nächste Schritt wäre, mit qiv
einem ähnlichen Bildbetrachter nach der letzten Aufnahme im Ordner zu suchen und sie dann im Vollbildmodus anzuzeigen. Ich hätte gern, dass mir jemand in einfachen Worten erklärt, wie man dieses Hook-Skript erstellt.
Antwort1
Gphoto übergibt es $ACTION
auch $ARGUMENT
an das Hook-Skript, welches Sie verwenden können.
Als Beispiel:-
#!/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
Dadurch wird die Datei im geöffnet shotwell
. Sie können das aber ganz einfach zu Ihrem bevorzugten Viewer ändern.
Die zweite if
Anweisung stellt sicher, dass Shotwell nur verwendet wird, wenn die heruntergeladene Datei ein JPG ist, da ich die Kamera manchmal so eingestellt hatte, dass sie RAW-Dateien (CR2 auf einer Canon) erstellte, die sich nicht in Shotwell öffnen ließen. Ich nehme an, es könnte erweitert werden, um diese mit einem anderen Viewer zu öffnen.
Das Bild wird als das angegebene Argument gespeichert --filename
– in Ihrem Fall /home/media/usbpendrive/image-20140616-125500.jpg
. Dies ist der Wert, der in $ARGUMENT
Ihrem Hook-Skript gespeichert und an dieses übergeben wird.
Sie können dirname
und verwenden basename
, um diesen Pfad und Dateinamen in die entsprechenden Teile aufzuteilen und diese dann erneut zu verwenden, um einen neuen Pfad und Dateinamen für das Bild zu erstellen.
$dirname /home/media/usbpendrive/image-20140616-125500.jpg
/home/media/usbpendrive
$basename /home/media/usbpendrive/image-20140616-125500.jpg
image-20140616-125500.jpg
$ARGUMENT
gphoto
ist nur beim Herunterladen des Bildes verfügbar , eine Überprüfung $ACTION
wäre in diesem Fall also überflüssig.
Natürlich muss das Ausführbare-Bit der Datei gesetzt sein.
Ich habe erst damit aufgehört, als ich herausfandVerwickelnaber ich bin nicht sicher, ob das auf dem Pi verfügbar ist.