🍏 Auf Apple-iCloud Kalender mit CalDAV Client (Thunderbird etc.) zugreifen

Begonnen von Torxgewinde, 29 November 2023, 00:18:19

Vorheriges Thema - Nächstes Thema

Torxgewinde

Hallo,
Der Apple Kalender kann mit einem CalDAV Client genutzt werden. Dafür braucht man allerdings die richtigen Adressen. Die kann man sich extrahieren mit folgenden Skript. Damit man CURL nutzen kann, muss man sich bei der 2-Faktor Authentifizierung ein App-Passwort einrichten (siehe Bild) Du darfst diesen Dateianhang nicht ansehen.
Auch benötigt man "curl" und "xmlstartlet".

Um die Adressen in Thunderbird zu nutzen, wird die Apple-ID benutzt und bei einem applikationsspezifischen-Passwort auch das.

APPLEID="meine_apple_id@example.com"
APP_SPECIFIC_PWD="1234-abcd-efgh-ijkl"

dsid="$(curl -s -X PROPFIND -u "$APPLEID:$APP_SPECIFIC_PWD" -H "Depth: 0"  --data "<propfind xmlns='DAV:'><prop><current-user-principal/></prop></propfind>"  https://caldav.icloud.com/ | grep '/principal/' | sed -E -n 's/.*\/([0-9]+)\/.*/\1/p')"
echo "dsid: $dsid"

calendars="$(curl -s -X PROPFIND -u "$APPLEID:$APP_SPECIFIC_PWD" -H "Depth: 0"  --data "<propfind xmlns='DAV:' xmlns:cd='urn:ietf:params:xml:ns:caldav'><prop><cd:calendar-home-set/></prop></propfind>" https://caldav.icloud.com/$dsid/principal/ | grep 'https://.*-caldav.icloud.com:443/' | sed -E -n 's/.*(https:\/\/p[0-9]+-caldav\.icloud\.com:443.*calendars).*/\1/p')"
cals="$(echo "$calendars" | sed 's/\/[0-9]\+\/calendars$//')"
echo "calendars: $calendars, $cals"

echo "es gibt folgende Kalender:"
curl -s -X PROPFIND -u "$APPLEID:$APP_SPECIFIC_PWD" -H "Depth: 1" --data "<propfind xmlns='DAV:'><prop><displayname/></prop></propfind>" $calendars | sed -E -n 's|.*<displayname xmlns="DAV:">([^<]+)</displayname>.*|\1|p'

OUT="$(curl -s -X PROPFIND -u "$APPLEID:$APP_SPECIFIC_PWD" -H "Depth: 1" --data "<propfind xmlns='DAV:'><prop><displayname/></prop></propfind>" $calendars)"
echo "$OUT" | xmlstarlet sel -N "d=DAV:" -t -m "//d:response" -v "concat('$cals', d:href, ' ------ ', d:propstat/d:prop/d:displayname)" -n

Das ganze ist die geskriptete Version von diesem Tipp: https://stackoverflow.com/questions/42319487/icloud-calendar-requests