Last active
November 30, 2025 19:23
-
-
Save henrik242/1da3a252ca66fb7d17bca5509a67937f to your computer and use it in GitHub Desktop.
Read AirTag data from the FindMy.app cache and convert to GPX
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| # | |
| # Reads AirTag data from the FindMy.app cache and converts it to a daily GPX file | |
| # | |
| # Rsyncs the data to a web accessible folder that can be displayed with e.g. | |
| # https://gist.github.com/henrik242/84ad80dd2170385fe819df1d40224cc4 | |
| # | |
| # This should typically be run as a cron job | |
| # | |
| set -o pipefail -o nounset -o errexit | |
| export PATH=/usr/local/bin:$PATH | |
| DATADIR=/tmp/airtag-data | |
| TODAY=$(date +%d) | |
| mkdir -p $DATADIR | |
| DATA=$DATADIR/airtagdata-$TODAY.txt | |
| GPX=$DATADIR/airtagdata-$TODAY.gpx | |
| TAGNAME=Foobar | |
| if [[ $(uname -s) == "Darwin" ]]; then | |
| TOMORROW=$(date -v +1d +%d) | |
| else | |
| TOMORROW=$(date --date="tomorrow" +%d) | |
| fi | |
| rm -f $DATADIR/airtagdata-$TOMORROW.gpx | |
| jq -r '.[] | select(.name == "'$TAGNAME'") | .location | "\(.latitude) \(.longitude) \(.altitude) \(.timeStamp/1000 | todate)"' \ | |
| $HOME/Library/Caches/com.apple.findmy.fmipcore/Items.data >> $DATA | |
| START='<?xml version="1.0" encoding="UTF-8"?> | |
| <gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:mytracks="http://mytracks.stichling.info/myTracksGPX/1/0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" creator="myTracks" version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"> | |
| <trk> | |
| <name>'$TAGNAME'</name> | |
| <extensions> | |
| <mytracks:color red="0.000000" green="0.000000" blue="1.000000" alpha="1.000000" /> | |
| <mytracks:area showArea="no" areaDistance="0.000000" /> | |
| <mytracks:directionArrows showDirectionArrows="yes" /> | |
| <mytracks:sync syncPhotosOniPhone="no" /> | |
| <mytracks:timezone offset="120" /> | |
| </extensions> | |
| <trkseg>' | |
| END=' </trkseg> | |
| </trk> | |
| </gpx>' | |
| echo $START > $GPX | |
| function elems() { | |
| LAT=$1 | |
| LON=$2 | |
| ELE=$3 | |
| TS=$4 | |
| } | |
| cat $DATA | while read line; do | |
| elems $line | |
| echo '<trkpt lat="'$LAT'" lon="'$LON'"> | |
| <ele>'$ELE'</ele> | |
| <time>'$TS'</time> | |
| </trkpt>' >> $GPX | |
| done | |
| echo $END >> $GPX | |
| cp $GPX $DATADIR/airtagdata.gpx | |
| rsync -a --exclude='*.txt' $DATADIR example.com:public_html/airtag/ |
Hi guys! I've download the Mac OS Sonoma 14.3.1 img file and wrote it to an USB drive with Balena Etcher. However on installation i'm required to have internet and after the installation my Mac Mini has Sonoma 14.8 which is a newer version than the image. Can somebody guide me to install 14.3.1 without having an internet connection or without having it updated to 14.8? Thanks a lot. hdo
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I have tried it multiple times with macOS Sonoma (as I would love to access data of shared AirTags), but I couldn't even get the version from archive.org to boot on my local host.