I take a lot of photos and try to be very careful with their management and storage. Everything gets included in Lightroom, and backed up in a variety of ways.
The photos on my and my wife’s iPhone live in the cloud, outside the rest of my archive. This is something that’s always irked me.
Downloading directly from icloud.com is not the easiest task. Although possible to download using a browser, it does so as multiple files which have to be manually selected. This is fine for a handful of images, but not great when you want to download several years.
I came across a great Python tool that automates this:
It’s installed simply with:
pip install icloudpd
Supply it with appropriate login arguments (it supports 2FA accounts) and it will dutifully download every file from your iCloud account, including Live Photos (which are downloaded as video files).
You can configure it for specific date ranges, making it suitable for automation, and it can use your keychain for storing login details.
It does tend to freeze occasionally, although I suspect this is more an unofficial-iCloud-API kind of fault. Fortunately it figures out what has already downloaded, and you can restart from your last position.
Downloading the last three years worth of photos and videos took several days. This was a combination of size (there’s about 200GB of stuff), and having to restart the process every few hours.