-
-
Save fay59/8f719cd81967e0eb2234897491e051ec to your computer and use it in GitHub Desktop.
#!/bin/bash | |
# requires jq | |
# arg 1: iCloud web album URL | |
# arg 2: folder to download into (optional) | |
function curl_post_json { | |
curl -sH "Content-Type: application/json" -X POST -d "@-" "$@" | |
} | |
BASE_API_URL="https://p23-sharedstreams.icloud.com/$(echo $1 | cut -d# -f2)/sharedstreams" | |
pushd $2 > /dev/null | |
STREAM=$(echo '{"streamCtag":null}' | curl_post_json "$BASE_API_URL/webstream") | |
CHECKSUMS=$(echo $STREAM | jq -r '.photos[] | [(.derivatives[] | {size: .fileSize | tonumber, value: .checksum})] | max_by(.size | tonumber).value') | |
echo $STREAM \ | |
| jq -c "{photoGuids: [.photos[].photoGuid]}" \ | |
| curl_post_json "$BASE_API_URL/webasseturls" \ | |
| jq -r '.items[] | "https://" + .url_location + .url_path' \ | |
| while read URL; do | |
for CHECKSUM in $CHECKSUMS; do | |
if echo $URL | grep $CHECKSUM > /dev/null; then | |
curl -sOJ $URL & | |
break | |
fi | |
done | |
done | |
popd > /dev/null | |
wait |
I'm new to this but I found my way around it after some time
I used powershell to install chocolatey and then jq
I saved the latest script on my desktop with Notepadd++ on Unix format as 'icloud-album-download.sh'
I installed cygwin
I ran the following lines:
cd c:/Users/'my user'/Desktop
chmod +x ./icloud-album-download.sh
./icloud-album-download.sh 'shared icloud album link'
Seems like everything runs without errors but nothing downloads, I get this on cygwin command window:
Getting iCloud Stream
Grabbing Large File Checksums
Adding Checksums to Array
Total Downloads: 0
Unique Downloads: 0
Streaming All Assets
Quickly wrote a new Powershell script to download iCloud shared album (photos + videos):
https://gist.github.com/GodSaveEarth/9b8d574d0f5ab789aebdfdb2db59b8df
Uj947nXmRqV2nRaWshKtHzTvckUUpD yours worked perfectly - thank you!