Jetzt brauchen wir nur noch ein Script, dass uns meldet, wenn sich die JSON ändert 😀
Inklusive Einloggen
Oder existiert das schon
?
Zumindest eine Light-Version ist unten angehängt. Den automatischen Login habe ich aus diversen Gründen noch nicht veröffentlicht.
Zum ausführen muss das Login Cookie aus dem Browser kopiert werden. Dafür in den Dev Tools im Network Tab einmal rechtsklick auf den "Bestell-Details" Aufruf und dann im Kontextmenü → copy as cURL auswählen.
Dann die Zwischenablage in einen Editor einfügen. Nur die eine cookie Zeile ist von Interesse. Bitte alles kopieren, was hinter
-H 'cookie: ***' \
steht (nur ***, ohne Schlusszeichen ' und \).
Das ganze muss in eine Datei kopiert werden namens "cookie-header.txt", die im gleichen Verzeichnis liegen muss wie das Skript unten.
Achtung: Im Cookie sind alle sensiblen Informationen enthalten, niemals irgendwo posten oder in dritte Hände geben! Es ist maximal 12 Stunden gültig und ein neues wird erst generiert, wenn die 12 Stunden verstrichen sind (auch bei erneutem Login in der Zwischenzeit).
Darüber hinaus muss im Skript noch die persönliche Bestellnummer oben eingetragen werden:
orderNumber="0005******"
Dieses Skript anpassen und speichern, z.B. als diff-order-details.sh und dann ausführbar machen "chmod 755 diff-order-details.sh"
#!/bin/bash
cookie=$(<cookie-header.txt)
# Bestellnummer hier eintragen
orderNumber="0005******"
# neueste Version der Bestelldetails abrufen
httpCode=$(curl -s -o apiResult.json -s -w "%{http_code}" "https://de.smart.com/__app-private__/my-account/7954489/bff/order-details/$orderNumber?envName=prod&preview=false&marketId=de&languageTag=de-DE" \
-H "Cookie: $cookie" \
-H "Accept: */*" \
-H "Referer: https://de.smart.com/de/my-account/?---=%7B%22my-account%22%3A%22%2Forders-details%3Fid%3D$orderNumber%22%7D" \
-H "Host: de.smart.com" \
-H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Safari/605.1.15")
# Prüfen ob Cookie gültig ist
if [[ "$httpCode" == 401 ]] ; then
echo "Cookie ist abgelaufen, bitte im Browser einloggen und erneut kopieren."
else
# Ergebnis der neuesten Abfrage in Datei schreiben
latestOrderDetails=$(cat apiResult.json | jq '.')
echo "$latestOrderDetails" > order-details-latest.json
# Prüfen ob vorige Version existiert
if [ ! -e order-details-previous.json ]; then
cp order-details-latest.json order-details-previous.json
fi
# git diff für Anzeige der Änderungen - Zeile auskommentieren falls git nicht installiert ist
git diff --no-prefix --no-ext-diff --unified=0 --exit-code -a order-details-previous.json order-details-latest.json
# diese Zeile einkommentieren falls git nicht installiert ist und stattdessen diff benutzt werden soll
# diff --minimal --context=0 order-details-previous.json order-details-latest.json
# am Ende die neuste Version in die Datei der vorigen kopieren für die nächste Ausführung
echo "$latestOrderDetails" > order-details-previous.json
fi
Alles anzeigen
So könnte das Ergebnis aussehen, wenn sich das Bearbeitungsdatum geändert hat und das Lieferdatum neu hinzu kam. Daten sind leider Wunschdenken meinerseits: