gphoto2 挂钩脚本 - 指南?

gphoto2 挂钩脚本 - 指南?

我将其发布在 raspberrypi.stackexchange 上,但被定向到此处。我是 Linux / Unix 的新手,我正在尝试获取一个与gphoto2.

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

这应该将图像下载到我的 USB 笔驱动器,然后在 hookscript 中查找新命令。

下一阶段将使用qiv类似的图像查看器来查找文件夹中的最后一个捕获,然后全屏显示它。我希望有人用简单的术语解释如何制作这个钩子脚本。

答案1

Gphoto 将$ACTION和传递$ARGUMENT给钩子脚本,您可以使用它。

举个例子:-

#!/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

这会在 中打开文件shotwell,但可以轻松更改为您首选的查看器。

第二条if语句确保仅当下载的文件是 JPG 时才使用 shotwell,因为有时我将相机设置为创建 raw(佳能上的 CR2),但无法在 shotwell 中打开。我想它可以扩展到与其他观众打开那些。

--filename该图像将被保存为提供给- 在您的情况下的参数/home/media/usbpendrive/image-20140616-125500.jpg。这将是存储在钩子脚本中$ARGUMENT并传递给钩子脚本的值。

您可以使用dirnamebasename将此路径和文件名拆分为相关部分,然后重新使用它们为图像创建新的路径和文件名。

$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,因此在这种情况下检查$ACTION将是多余的。

当然,该文件需要设置其可执行位。

当我发现时我才停止使用这个但我不确定 Pi 上是否可用。

相关内容