【FlashAir】Pythonを使って、デジカメの写真をMacに保存してみる

デジカメの写真をMacに保存する方法を考えてみると、

【1】SDカードをデジカメから外して、Macに保存する
【2】デジカメのwifi機能を使ってアップロードする
【3】SDカード(Eye-fi)でアップロードする
【4】Mac側からデジカメに入っているSDカード(FlashAir)からダウンロードしてする

これらの方法がありました。

【1】の方法は、毎回SDカード外したり入れたりしないといけないので、面倒くさい。
【2】の方法は、機種によって設定しないといけないし、設定が面倒くさい。
【3】の方法は、どれをアップロードしたかわからなくなるので、使うのをやめました。

そこで、【4】のFlashAir の方法を使ってみることにしました。

Flash Air はWebサーバーを立ち上げるのを利用して、

WifiFlash Air に接続、その後、Python でアクセスします。

# coding:utf-8

import urllib.request

SAVE_DIR = "~/Desktop/output/"

res = urllib.request.urlopen('http://flashair/command.cgi?op=100&DIR=/DCIM')
txt1 = res.read().decode('utf-8')

# print(txt1)

# WLANSD_FILELIST
# /DCIM,101CASIO,0,16,19731,1283
# /DCIM,101NIKON,0,16,9761,1 (←今回はNIKONを使用)

res = urllib.request.urlopen('http://flashair/command.cgi?op=100&DIR=/DCIM/101NIKON')
txt2 = res.read().decode('utf-8')

# print(txt2)

# WLANSD_FILELIST
# /DCIM/101NIKON,DSCN0005.JPG,6486186,32,19739,40395
# /DCIM/101NIKON,DSCN0006.JPG,6527646,32,19739,40398
# /DCIM/101NIKON,DSCN0007.JPG,6605788,32,19739,40405
# ...

list1 = txt2.split("\r\n")

for line1 in list1:
    list2 = line1.split(",")
    if len(list2) > 1:
        file1 = list2[1]
        url = 'http://flashair/DCIM/101NIKON/' + file1
        print(url)

        # http://flashair/DCIM/101NIKON/DSCN0005.JPG
        # http://flashair/DCIM/101NIKON/DSCN0006.JPG
        # http://flashair/DCIM/101NIKON/DSCN0007.JPG
        # ...

        res = urllib.request.urlopen(url)
        img = res.read()
        open(SAVE_DIR + file1,'wb').write(img)

print('fninish!')

この方法で、画像データを一括でMacに保存できたので、あとはデジカメのSDカード(FlashAir)のデータを全部削除することができます。