brainstate

icloud-photos-downloader/icloud_photos_downloader · source

Snapshot 0 · 2026-11-04T12:47:24Z · Python · MIT

Content fingerprintad9d95dc9acbe1bc435da932f874d90629bef06cdd951183da27c9a603361505

GitHub description at capture

A command-line tool to download photos from iCloud

README at capture

# !!!! [Looking for MAINTAINER for this project](https://github.com/icloud-photos-downloader/icloud_photos_downloader/issues/1305) !!!!

# iCloud Photos Downloader [![Quality Checks](https://github.com/icloud-photos-downloader/icloud_photos_downloader/workflows/Quality%20Checks/badge.svg)](https://github.com/icloud-photos-downloader/icloud_photos_downloader/actions/workflows/quality-checks.yml) [![Build and Package](https://github.com/icloud-photos-downloader/icloud_photos_downloader/workflows/Produce%20Artifacts/badge.svg)](https://github.com/icloud-photos-downloader/icloud_photos_downloader/actions/workflows/produce-artifacts.yml) [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)

- A command-line tool to download all your iCloud photos.
- Works on Linux, Windows, and macOS; laptop, desktop, and NAS
- Available as an executable for direct downloading and through package managers/ecosystems ([Docker](https://icloud-photos-downloader.github.io/icloud_photos_downloader/install.html#docker), [PyPI](https://icloud-photos-downloader.github.io/icloud_photos_downloader/install.html#pypi), [AUR](https://icloud-photos-downloader.github.io/icloud_photos_downloader/install.html#aur), [npm](https://icloud-photos-downloader.github.io/icloud_photos_downloader/install.html#npm))
- Developed and maintained by volunteers (we are always looking for [help](CONTRIBUTING.md)). 

See [Documentation](https://icloud-photos-downloader.github.io/icloud_photos_downloader/) for more details. Also, check [Issues](https://github.com/icloud-photos-downloader/icloud_photos_downloader/issues)

## iCloud Prerequisites

To make iCloud Photo Downloader work, ensure the iCloud account is configured with the following settings, otherwise Apple Servers will return an ACCESS_DENIED error:

- **Enable Access iCloud Data on the Web:** On your iPhone / iPad, enable `Settings > Apple ID > iCloud > Access iCloud Data on the Web`
- **Advanced Data Protection (ADP):** either disable `Settings > Apple ID > iCloud > Advanced Data Protection` on your iPhone / iPad, or keep it enabled and run with `--adp-web-access` (see [Authentication](https://icloud-photos-downloader.github.io/icloud_photos_downloader/authentication.html#adp))


## Install and Run

There are three ways to run `icloudpd`:
1. Download executable for your platform from the GitHub [Release](https://github.com/icloud-photos-downloader/icloud_photos_downloader/releases/tag/v1.33.0) and run it
1. Use package manager to install, update, and, in some cases, run ([Docker](https://icloud-photos-downloader.github.io/icloud_photos_downloader/install.html#docker), [PyPI](https://icloud-photos-downloader.github.io/icloud_photos_downloader/install.html#pypi), [AUR](https://icloud-photos-downloader.github.io/icloud_photos_downloader/install.html#aur), [npm](https://icloud-photos-downloader.github.io/icloud_photos_downloader/install.html#npm))
1. Build and run from the source

See [Documentation](https://icloud-photos-downloader.github.io/icloud_photos_downloader/install.html) for more details

## Features

<!-- start features -->

- Three modes of operation:
  - **Copy** - download new photos from iCloud (default mode)
  - **Sync** - download new photos from iCloud and delete local files that were removed in iCloud (`--auto-delete` option)
  - **Move** - download new photos from iCloud and delete photos in iCloud (`--keep-icloud-recent-days` option)
- Support for Live Photos (image and video as separate files) and RAW images (including RAW+JPEG)
- Automatic de-duplication of photos with the same name
- One time download and an option to monitor for iCloud changes continuously (`--watch-with-interval` option)
- Optimizations for incremental runs (`--until-found` and `--recent` options)
- Photo metadata (EXIF) updates (`--set-exif-datetime` option)
- ... and many more (use `--help` option to get full list)

<!-- end features -->

## Experimental Mode

Some changes are added to the experimental mode before they graduate into the main package. [Details](EXPERIMENTAL.md)

## Usage

To keep your iCloud photo collection synchronized to your local system:

```
icloudpd --directory /data --username my@email.address --watch-with-interval 3600
```

> [!IMPORTANT]
> It is `icloudpd`, not `icloud` executable

> [!TIP]
> Synchronization logic can be adjusted with command-line parameters. Run `icloudpd --help` to get full list.

To move tracked local copies out of the active mirror when photos leave a shared library (including moves
back to a participant's personal library), use a dedicated download directory:

```bash
icloudpd --directory /data/shared --username my@email.address \
  --library 'SharedSync-YOUR-LIBRARY-ID' --prune-orphans
```

By default, tracking starts with newly written files and the first successful run
only establishes a baseline. To also clean old orphans in an existing dedicated
flat, original-size mirror, explicitly opt in to the one-time
`--prune-orphans-adopt-existing` bootstrap and preview it with `--dry-run` first.

Pruned files are moved into `.icloudpd-pruned/`, never permanently deleted: even
consistent counts cannot prove Apple's listing is complete. Exclude that folder
from gallery scans. Pruning problems warn without failing downloads. See
[the option reference](docs/reference.md#prune-orphans-parameter) for ownership
requirements, hashing costs and recovery instructions.

To independently create and authorize a session (and complete 2SA/2FA validation if needed) on your local system:

```
icloudpd --username my@email.address --auth-only
```
> [!TIP]
> This feature can also be used to check and verify that the session is still authenticated. 

## Contributing

Want to contribute to iCloud Photos Downloader? Awesome! Check out the [contributing guidelines](CONTRIBUTING.md) to get involved.