RICOH GR IIIの写真をWi-Fi経由でMacに取り込むスクリプト

RICOH GR IIIで撮った写真をパソコンへ取り込むには次の3つの方法があります。

 1. USB Type-Cケーブルで接続
 2. SDカードから取り込み
 3. スマホへ取り込んだ後にMacへ転送

この中で楽なのはUSB Type-Cケーブルで接続ですが、それでもちょっと手間です。Wi-Fi経由で取り込めればよいのですけれど、公式アプリの「Image-Sync」や「GR WORLD」はスマホ専用でMacでは使えません。そこで、Wi-Fi経由で直接Macに取り込むスクリプトを作ってみました。
画像を表示し選択して取り込みも考えましたが、シンプルに毎回手動起動で毎回全部取り込み(取り込み画像があればスキップ)としています。

ステップ1 – スクリプトファイルを作成

まず、スクリプトファイルを作成します。
下記の内容を任意の名前で保存します(たとえばgr3_inport.shなど)

#!/bin/bash
# GR3 Import - macOS標準curl + osascriptのみ使用(インストール不要)

CAMERA="http://192.168.0.1"
SAVE="$(pwd)/ph"

# JSONパース(macOS標準のosascript JavaScript)
json_parse() {
    osascript -l JavaScript -e "
        var data = JSON.parse(\`$1\`);
        $2
    " 2>/dev/null
}

echo "=== GR3 写真取り込み ==="
echo ""

# 接続確認
echo "カメラ接続確認中..."
props=$(curl -s --connect-timeout 5 "${CAMERA}/v1/props" 2>/dev/null)
if [ -z "$props" ]; then
    echo "ERROR: カメラに接続できません"
    echo "  カメラのWi-Fi ON → Macから接続 を確認してください"
    exit 1
fi
model=$(json_parse "$props" "data.model")
echo "接続OK: ${model}"
echo ""

# 写真一覧取得
echo "写真一覧取得中..."
photos=$(curl -s "${CAMERA}/v1/photos" 2>/dev/null)
if [ -z "$photos" ]; then
    echo "ERROR: 写真一覧の取得に失敗"
    exit 1
fi

# ファイル数取得
total=$(json_parse "$photos" "var t=0; data.dirs.forEach(function(d){t+=d.files.length}); t")
echo "全${total}ファイル"
echo ""

if [ "$total" = "0" ]; then
    echo "写真がありません"
    exit 0
fi

# ダウンロード
ok=0
skip=0
fail=0

# ディレクトリ数取得
dir_count=$(json_parse "$photos" "data.dirs.length")

for ((i=0; i<dir_count; i++)); do
    dir_name=$(json_parse "$photos" "data.dirs[$i].name")
    file_count=$(json_parse "$photos" "data.dirs[$i].files.length")

    mkdir -p "${SAVE}/${dir_name}"

    for ((j=0; j<file_count; j++)); do
        fname=$(json_parse "$photos" "data.dirs[$i].files[$j]")
        dest="${SAVE}/${dir_name}/${fname}"

        # 既存スキップ
        if [ -f "$dest" ]; then
            echo "SKIP: ${fname}"
            ((skip++))
            continue
        fi

        # ダウンロード
        curl -s -o "$dest" "${CAMERA}/v1/photos/${dir_name}/${fname}"
        if [ -f "$dest" ]; then
            echo "OK: ${fname}"
            ((ok++))
        else
            echo "FAIL: ${fname}"
            ((fail++))
        fi
    done
done

echo ""
echo "=== 完了 ==="
echo "保存先: ${SAVE}"
echo "DL: ${ok} / スキップ: ${skip} / 失敗: ${fail}"
echo ""

# カメラ電源OFF
curl -s -X POST -H "Content-Type: application/json" -d '{}' "${CAMERA}/v1/device/finish" >/dev/null 2>&1
echo "カメラの電源をオフにしました"

ステップ2 – GRIIIにWi-Fiで接続

GRIIIでWi-FiをOnにし、MacからGRIIIのWi-Fiに接続します。

ステップ3 – スクリプトを実行

GRIIIに接続している状態でスクリプトを実行します。

./gr3_inport.sh

すると、実行したフォルダ内に「ph」フォルダが作成され、さらにその下に「100RICOH」フォルダなどで保存されます。

Wi-FiをOn→接続→スクリプト実行、と慣れれば、即座に実行できます。
ちなみにRICOH GR IVはコマンドが変わっていたりするらしいので、このスクリプトは使えないはず。

タイトルとURLをコピーしました