Skip to content

Instantly share code, notes, and snippets.

@hermzz
Created December 9, 2017 21:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hermzz/d4aaed666db0fbc4e688e516f0bd83cf to your computer and use it in GitHub Desktop.
Save hermzz/d4aaed666db0fbc4e688e516f0bd83cf to your computer and use it in GitHub Desktop.
Flickr exporter
#!/bin/bash
FLICKR_API_KEY="..."
GOOGLE_MAPS_KEY="..."
CURL="curl --silent"
BASE_URL="https://api.flickr.com/services/rest/?api_key=${FLICKR_API_KEY}&format=json&nojsoncallback=1"
PAGE=1
TOTAL_PAGES=$(${CURL} "${BASE_URL}&method=flickr.people.getPhotos&user_id=85777547@N00&page=${PAGE}&per_page=${PER_PAGE}" | jq -r '.photos.pages')
PER_PAGE=100
while [ $PAGE -le $TOTAL_PAGES ]
do
echo "Fetching page ${PAGE} of ${TOTAL_PAGES}"
PHOTO_IDS=$(${CURL} "${BASE_URL}&method=flickr.people.getPhotos&user_id=85777547@N00&page=${PAGE}&per_page=${PER_PAGE}" | jq -r '.photos.photo[].id')
for PHOTO_ID in $PHOTO_IDS
do
echo "Fetching photo ${PHOTO_ID}"
PHOTO=$(${CURL} "${BASE_URL}&method=flickr.photos.getInfo&photo_id=${PHOTO_ID}")
FILENAME="$(echo ${PHOTO} | jq -r '[.photo.id, "_", .photo.originalsecret, "_o_d.", .photo.originalformat] | join("")')"
PHOTO_URL=$(echo ${PHOTO} | jq -r "[\"https://farm\", (.photo.farm | tostring), \".staticflickr.com/\", (.photo.server | tostring), \"/\", \"${FILENAME}\"] | join(\"\")")
echo "Saving ${PHOTO_URL}"
$CURL "${PHOTO_URL}" > "${FILENAME}"
LOCATION=$(echo ${PHOTO} | jq '.photo.location')
if [ "${LOCATION}" != "null" ]
then
LONGITUDE=$(echo ${LOCATION} | jq -r '.longitude' )
LATITUDE=$(echo ${LOCATION} | jq -r '.latitude' )
[[ $LONGITUDE =~ "-" ]] && LONGITUDE_REF="W" || LONGITUDE_REF="E"
[[ $LATITUDE =~ "-" ]] && LATITUDE_REF="S" || LATITUDE_REF="N"
ELEVATION=$(${CURL} "https://maps.googleapis.com/maps/api/elevation/json?locations=${LATITUDE},${LONGITUDE}&key=${GOOGLE_MAPS_KEY}" | jq '.results[0].elevation')
echo "Longitude: ${LONGITUDE_REF} ${LONGITUDE} Latitude: ${LATITUDE_REF} ${LATITUDE} Elevation: ${ELEVATION}"
exiftool \
-overwrite_original \
-GPSLongitude="${LONGITUDE}" \
-GPSLongitudeRef="${LONGITUDE_REF}" \
-GPSLatitude="${LATITUDE}" \
-GPSLatitudeRef="${LATITUDE_REF}" \
-GPSAltitudeRef="Above Sea Level" \
-GPSAltitude="${ELEVATION}" \
-xmp:title="$(echo $PHOTO | jq -r '.photo.title._content')" \
-xmp:description="$(echo $PHOTO | jq -r '.photo.title._content')" \
-xmp:location="$(echo $PHOTO | jq -r '[.photo.location[] | objects | ._content] | join(", ")')" \
"${FILENAME}"
fi
done
PAGE=$[$PAGE+1]
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment