Letöltő szkript Toshiba FlashAir-hez

flash-airNemrég vettem egy Wifis SD kártyát a fényképezőmbe. A választásom végül a Toshiba FlashAir-jére esett, a döntésemben az ár és a szkriptelhetőség volt a fő szempont. Ugyan Androidra van hozzá gyári kliens alkalmazás, de az asztali gépemen Ubuntu van, arra kicsit hegeszteni kellett, gondoltam megosztom az eredményt, jól jöhet másnak is.
A Wifis kártyák ugye annyival tudnak többet, mint egy sima SD, hogy van bennük egy beépített Wifi adapter, és valami firmware, ami azt meghajtja. Ha a kamera képes akkora áramot adni a kártyának, amekkorát az igényel, akkor csak betesszük a készülékbe, bekapcsoljuk és már használhatjuk is. A kártya sugároz egy saját Wifi hálózatot, amire csatlakozhatunk bármilyen Wifis eszközzel. A FlashAir esetében ez a “flashair” SSID-jú hálózat, és a http://192.168.0.1 címen elérhető kis beépített webszerverén keresztül érhetjük el a képeket. És akkor lássuk mit csinál az én szkriptem:

Először elmenti az aktuális Wifi hálózatunk SSID-ját, majd rácsatlakozik a kártyáéra. Ha ez sikerült, a kártya web kiszolgálójából kiolvassa a kártyán lévő fájlok nevét, és egyesével letölti azokat. Minden letöltött képből az exiftool-lal (ehhez fel kell tenni a libimage-exiftool-perl csomagot) kiolvassa a készítés dátumát, és az adott dátumról elnevezett almappába mozgatja a képet. A letöltések előtt mindig ellenőrzi, nincs-e már ilyen nevű fájl letöltve, ha van, akkor nem tölti le újra. A végén, ha végzett a letöltésekkel visszacsatlakozik az előző Wifi hálózatra. Ennyi, nincs több kábelezés :)

#!/bin/bash
#Ide fogja letolteni a kepeket datumozott almappakba
DOWNLOAD_DIR="~/flashair_download"
#Az altalunk beallitott jelszo a "flashair" halozathoz
PASSWORD=jelszo

#Elmentjuk az aktualis halozatot amihez csatlakozva vagyunk epp, majd megprobalunk racsatlakozni a kartya halozatara
OLD_SSID=$(iwconfig 2>/dev/null | awk -F':' '/ESSID/{print $2}' | awk -F'"' '{print $2}')
echo "Csatlakozas a FlashAir-hez..."
nmcli d wifi connect flashair password $PASSWORD iface wlan0

#Leellenorizzuk, hogy sikerult-e, ha nem, kilepunk
SSID=$(iwconfig 2>/dev/null | awk -F':' '/ESSID/{print $2}' | awk -F'"' '{print $2}')
if [[ "$SSID" != "flashair" ]]; then
        echo "Nem vagy a FlashAir-re csatlakozva!"
        exit 1
fi

#Belelepunk a beallitott letoltesi konyvtarba, majd letoltjuk a html oldalt, amin a kepeink vannak kilistazva, es fajlnevenkent vegigmegyunk rajtuk
#Ami meg nem letezik valamelyik almappaban, azt letoltjuk, majd a kepbol az exiftool-lal kiolvassuk, hogy mikor keszult, es annak megfelelo almappaba mozgatjuk
cd $DOWNLOAD_DIR
wget -qO - http://192.168.0.1/DCIM/100NIKON | grep DSCN | sed -e "s/^.*fname\"\:\"//" -e "s/\", \"fsize.*//" | sort | while read LINE; do
        IF=$(find ./ -name ${LINE})
        if [[ $IF != "" ]]; then
                echo "A ${LINE} nevu fajl mar letezik ($IF) - kihagyom."
                continue;
        fi
        wget -nc "http://192.168.0.1/DCIM/100NIKON/${LINE}" -O ${LINE}.tmp;
        DATE=$(exiftool ${LINE}.tmp | awk '/Date\/Time Original/{print $4}' | sed 's/:/\./g')
        mkdir $DATE >/dev/null 2>&1
        mv ${LINE}.tmp $DATE/${LINE}
done

#Vegul visszacsatlakozunk az elejen elmentett halozatra
echo "Visszacsatlakozas az elozo halozatra..."
nmcli c up id $OLD_SSID
If you enjoyed this post, please consider leaving a comment or subscribing to the RSS feed to have future articles delivered to your feed reader.
This entry was posted in Shell szkriptelés and tagged , , , . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>