Sherlock Lau

使用脚本下载全量 iCloud 照片

开启 icloud 照片备份固然方便,但因为本地空间所致,很多时候都是选择优化本地空间,那么全量的照片如何下载呢?可以使用脚本进行执行。

Github 的脚本地址:

Step 1:安装 python

安装 python3,使用命令:

brew install python

安装后,使用 pip3 命令安装 icloudpd 脚本:pip3 install icloudpd

Step 2:登录 icloud 账号

登录 icloud 账号,使用命令:

icloud --username


Step 3:使用脚本下载


icloudpd -d <directory> -u <username> -p <password> --auto-delete


Usage: <options>

  Download all iCloud photos to a local directory

  -d, --directory <directory>     Local directory that should be used for
  -u, --username <username>       Your iCloud username or email address
  -p, --password <password>       Your iCloud password (default: use PyiCloud
                                  keyring or prompt for password)
  --cookie-directory </cookie/directory>
                                  Directory to store cookies for
                                  authentication (default: ~/.pyicloud)
  --size [original|medium|thumb]  Image size to download (default: original)
  --live-photo-size [original|medium|thumb]
                                  Live Photo video size to download (default:
  --recent INTEGER RANGE          Number of recent photos to download
                                  (default: download all photos)
  --until-found INTEGER RANGE     Download most recently added photos until we
                                  find x number of previously downloaded
                                  consecutive photos (default: download all
  -a, --album <album>             Album to download (default: All Photos)
  -l, --list-albums               Lists the avaliable albums
  --skip-videos                   Don't download any videos (default: Download
                                  all photos and videos)
  --skip-live-photos              Don't download any live photos (default:
                                  Download live photos)
  --force-size                    Only download the requested size (default:
                                  download original if size is not available)
  --auto-delete                   Scans the "Recently Deleted" folder and
                                  deletes any files found in there. (If you
                                  restore the photo in iCloud, it will be
                                  downloaded again.)
  --only-print-filenames          Only prints the filenames of all files that
                                  will be downloaded (not including files that
                                  are already downloaded.)(Does not download
                                  or delete any files.)
  --folder-structure <folder_structure>
                                  Folder structure (default: {:%Y/%m/%d})
  --set-exif-datetime             Write the DateTimeOriginal exif tag from
                                  file creation date, if it doesn't exist.
  --smtp-username <smtp_username>
                                  Your SMTP username, for sending email
                                  notifications when two-step authentication
  --smtp-password <smtp_password>
                                  Your SMTP password, for sending email
                                  notifications when two-step authentication
  --smtp-host <smtp_host>         Your SMTP server host. Defaults to:
  --smtp-port <smtp_port>         Your SMTP server port. Default: 587 (Gmail)
  --smtp-no-tls                   Pass this flag to disable TLS for SMTP (TLS
                                  is required for Gmail)
  --notification-email <notification_email>
                                  Email address where you would like to
                                  receive email notifications. Default: SMTP
  --notification-script PATH      Runs an external script when two factor
                                  authentication expires. (path required:
  --log-level [debug|info|error]  Log level (default: debug)
  --no-progress-bar               Disables the one-line progress bar and
                                  prints log messages on separate lines
                                  (Progress bar is disabled by default if
                                  there is no tty attached)
  --threads-num INTEGER RANGE     Number of cpu threads (default: 1)
  --version                       Show the version and exit.
  -h, --help                      Show this message and exit.