Last active
September 28, 2024 12:28
-
-
Save marco79cgn/1184e77b39fdf7ba510ac8650afe0674 to your computer and use it in GitHub Desktop.
Bash script that checks whether an Apple product is available for pickup at your nearest Apple Store and sends a push notification if it gets available again (via ntfy.sh)
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
#!/bin/bash | |
partNo=$1 | |
storeId=$2 | |
notifyUrl=https://ntfy.sh/$3 | |
FILE=$4/${partNo/\//-}-$storeId | |
if [ ! -f "$FILE" ]; then | |
echo "$FILE does not exist." | |
echo -n "1" > $FILE | |
fi | |
productName="" | |
function curlItem { | |
apiResult=$(/usr/bin/curl -s "https://www.apple.com/de/shop/fulfillment-messages?store=${storeId}&little=false&parts.0=${partNo}&purchaseOption=fullPrice&mts.0=regular&mts.1=sticky&fts=true") | |
productName=$(echo -n ${apiResult} | jq -r ".body.content.pickupMessage.stores[0].partsAvailability.\"${partNo}\".messageTypes.regular.storePickupProductTitle") | |
storeAvailability=$(echo -n ${apiResult} | jq -r ".body.content.pickupMessage.stores[0].partsAvailability.\"${partNo}\".pickupDisplay" | grep -i -w "available" | wc -l) | |
printf "Store ${storeId}: ${storeAvailability}" | |
if [ "$storeAvailability" -eq "1" ]; then | |
previousState=$(<$FILE) | |
if [[ "$previousState" == 0 ]]; then | |
sendPush | |
echo -n "1" > $FILE | |
exit | |
fi | |
else | |
echo -n "0" > $FILE | |
fi | |
} | |
function sendPush { | |
result=$(/usr/bin/curl -s -X POST -H "Title: Apple Store" -H "Click: https://store.apple.com/de/xc/product/$partNo" -H "Tags: apple" -d "${productName} ist jetzt verfügbar! (Tap to order)" $notifyUrl) | |
} | |
responsedata=$(curlItem) | |
echo $responsedata |
Hi, wie bekommt man die StoreID heraus?
Gibt in Berlin z.B. einen neuen Store.
@obiwan007
Rosenthaler Straße 44
10178 Berlin
storeNumber: R443
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Update 24.09.2023
Das Skript ist jetzt komplett universell benutzbar und muss nicht mehr editiert werden. Beim Aufruf müssen die benötigten 4 Parameter lediglich mitgegeben werden:
partNo storeId notifyTopic tempFolder
Zum Beispiel für das iPhone 15 Pro Max 256 GB Titan Blau im Apple Store Köln Schildergasse:
./apple-availability-check.sh "MU7A3ZD/A" "R559" "my-secret-apple-alerts-395920" "/Users/marco/dev/temp"