A cél hogy kinyerjem a képből a GPS adatok alapján a város (helység) nevét, de sajna kis problémába ütköztem. Vannak képek melyek egyáltalán nem tartalmazzák a GPS adatokat, ezeket kapásból kihagynám a feldolgozásból.
if true; then
exiftool -p '$GPSDateStamp' $1 2>&1 | grep -v "not defined"
echo "nincs gps adat"
exit
else
echo "van gps adat"
fi
De ez így nem is működik. Akkor is az első ág hajtódik végre ha - auuu talán éppen azért mert a $1 is az első ágban van? Befejezem a mondatot - ha van GPS adat.
A lényeg hogy jó lenne ideiglenes fájlok nélkül feldolgozni a képeket. (xml, json) A Google maps API-hoz regisztráció kell, s most azt kihagynám. Ellenben az OSM működik.
Haladjunk sorjában. Az első probléma hogy a sima
exiftool -n -p '$GPSLatitude' IMG_20160716_085603.jpg
is hibát dob
44.27358625
Warning: [minor] Unrecognized MakerNotes - IMG_20160716_085603.jpg
Ha csak simán ki iratom:
$ exiftool -n IMG_20160716_085603.jpg
GPS Date/Time : 2016:07:16 05:56:02Z
GPS Latitude : 44.27358625
GPS Longitude : 28.6205234444444
Focal Length : 3.16
GPS Position : 44.27358625 28.6205234444444
Az exiftool verziója:
$ rpm -qa | grep ExifTool
perl-Image-ExifTool-12.0.0-1.2.mga8
Ezek a képek többnyire androidos telefonnal készültek. A hibaüzenetek ellenére a következő megoldás működik.
lat="$(exiftool -n -p '$GPSLatitude' $1)"
lon="$(exiftool -n -p '$GPSLongitude' $1)"
#curl -s "https://nominatim.openstreetmap.org/reverse?format=json&lat=${lat}&lon=${lon}&addressdetails=1" | jq -r .address.town $1
curl -s "https://nominatim.openstreetmap.org/reverse?format=json&lat=${lat}&lon=${lon}&addressdetails=1" | jq -r .address.city $1
A -n kapcsoló feldolgozhatóbb formában adja a GPS adatokat, a -p lenne a felelős a speciális kiírásért. Viszont emiatt van hibaüzenet. De most grep és awk ? - szvsz lassú lenne.
Még itt is kell majd egy feltétel vizsgálat, mert érdekes módon van ahol nem is létezik a city mező, hanem a town mezőben található a város neve. Ezt vajon hogyan dolgozzam fel? A sima if then vajon itt hogyan működne? Hiszen ezek a json válaszon belül vannak. Szvsz csak akkor működne ha ideiglenes fájlt hoznék létre.
A végső cél a képekből kinyert információk alapján létrehozni egy ilyesmi mappa struktúrát.
Kameramodell/Város/év/év-hónap/kép
Jelenleg van egy működő megoldásom a város nélküli feldolgozásra
exiftool -r -progress -d '%Y/%Y-%m/PIC_%Y%m%d_%H%M%S%%-c.%%le' '-filename<${make}_${model}/${datetimeoriginal}' .
A progress elhagyásával gyorsabb persze, de így látni hogy dolgozik. Ide kellene majd befűznöm valahogy a város mappa létrehozását. Viszont azt már tudom hogy a -d '%Y/%Y-%m/PIC_%Y-%m-%d_%H:%M:%S' közé nem lehet semmit beszúrni, mert azt simán hozzáteszi a fájlnévhez. Ez adja a 2019/2019-03/PIC_2019-03-23_145832 mappaszerkezetet és fájlnevet. Vagyis még előtte a -drectory kapcsolóval kell majd behatóbban foglalkoznom.