GitHub开源地址: https://github.com/icloud-photos-downloader/icloud_photos_downloader
iCloud 照片下载器质量检查 构建状态 覆盖状态 麻省理工学院许可证
用于下载所有 iCloud 照片的命令行工具。
适用于 Linux、Windows 和 MacOS。
作为计划的 cron 任务运行以保留照片和视频的本地备份。
环境:Python 3.6+ pip
Install Python & pip
which brew > /dev/null 2>&1 || /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Install Python (includes pip): brew install python
Linux (Ubuntu)
apt -y update && apt -y install -y python
如果您的 Apple 帐户启用了双重身份验证,则在您运行脚本时将提示您输入代码。
双重身份验证将在 Apple 设置的时间间隔后过期,此时您必须重新进行身份验证。这个间隔目前是两个月。
身份验证 cookie 将存储在临时目录中(/tmp/pyicloud在 Linux 或/var/tmp/...MacOS 上)。可以使用--cookie-directory选项配置此目录。
--smtp-username通过传递和--smtp-password选项,您可以在两因素身份验证到期时收到电子邮件通知 。电子邮件将--smtp-username默认发送到,或者您可以使用 发送到不同的电子邮件地址--notification-email。
如果您想使用 Gmail 帐户发送通知电子邮件,并且您已启用双重身份验证,则需要在https://myaccount.google.com/apppasswords生成应用密码
系统密钥环
icloud您可以使用命令行工具(随pyicloud依赖项一起安装)将密码存储在系统密钥环中:
$ icloud --username jappleseed@apple.com
ICloud Password for jappleseed@apple.com:
Save password in keyring? (y/N)
如果您在密钥环中存储了密码,则在运行脚本时将不需要提供密码。
如果您想删除存储在系统密钥环中的密码,可以使用--delete-from-keyring命令行选项清除存储的密码:
icloud --username jappleseed@apple.com --delete-from-keyring
第一次运行时出错
首次运行脚本时,您可能会看到如下错误消息:
Bad Request (400)
这个错误经常发生,因为你的账户之前没有使用过 iCloud API,所以苹果的服务器需要准备一些关于你照片的信息。此过程可能需要大约 5-10 分钟,因此请等待几分钟,然后重试。
如果 30 分钟后您仍然看到此消息,请在 GitHub 上打开一个问题并发布脚本输出。
定时任务
按照这些说明icloudpd作为计划的 cron 任务运行。
# Clone the git repo somewhere
git clone https://github.com/icloud-photos-downloader/icloud_photos_downloader.git
cd icloud_photos_downloader
# Copy the example cron script
cp cron_script.sh.example cron_script.sh
cron_script.sh使用您的用户名、密码和其他选项进行更新
用 编辑您的“crontab” crontab -e,然后添加以下行:
0 */6 * * * /path/to/icloud_photos_downloader/cron_script.sh
现在脚本将每 6 小时运行一次以下载任何新照片和视频。
如果您提供 SMTP 凭据,脚本将在两步验证到期时发送电子邮件通知。
码头工人
此脚本在 Docker 映像中可用:docker pull icloudpd/icloudpd
用法:
# Downloads all photos to ./Photos
docker pull icloudpd/icloudpd
docker run -it --rm --name icloud \
-v $(pwd)/Photos:/data \
-v $(pwd)/cookies:/cookies \
-e TZ=America/Los_Angeles \
icloudpd/icloudpd:latest \
icloudpd --directory /data \
--cookie-directory /cookies \
--folder-structure {:%Y/%Y-%m-%d} \
--username testuser@example.com \
--password pass1234 \
--size original \
--recent 500 \
--auto-delete
在 Windows 上:
使用%cd%而不是$(pwd)
或完整路径,例如-v c:/photos/icloud:/data
在本地构建映像:
docker build . -t icloudpd
docker run -it --rm icloudpd:latest icloudpd --version