Skip to content

Instantly share code, notes, and snippets.

@fay59
Last active June 22, 2026 22:29
Show Gist options
  • Select an option

  • Save fay59/8f719cd81967e0eb2234897491e051ec to your computer and use it in GitHub Desktop.

Select an option

Save fay59/8f719cd81967e0eb2234897491e051ec to your computer and use it in GitHub Desktop.
Download entire iCloud shared albums
#!/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
@skjohnkwon

Copy link
Copy Markdown

is this script linux only....

@SynapseScribe

SynapseScribe commented Mar 29, 2026

Copy link
Copy Markdown

it's bash/shell. can run also on mac, on windows / wsl / vm, but natively on linux

@Sevi-py

Sevi-py commented Jun 22, 2026

Copy link
Copy Markdown

Worked great on MacOS. Thank you guys

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment