DIY同步iCloud相册主流方案icloudpd
icloudpd是一个开源软件,是目前DIY同步iCloud相册主流方案,
因为使用的人较多,而且可以通过开源代码来确认,所以安全性没有太大问题,
这里首先贴上Github地址:https://github.com/icloud-photos-downloader/icloud_photos_downloader 里面有完整的代码和使用文档
icloudpd的Github页面使用icloudpd有一些前置条件,需要我们检查iCloud的设置,后续在认证上有问题也需要优先检查这里。
前置条件安装方面可以参考站内的其他文章,大部分文章里是使用docker安装,docker安装更便于管理,更适合常驻同步进程的情况。
我个人不需要自动同步,没有必要保持一个容器长时间运行,所以我选择使用pip安装,只在需要的时候运行命令即可。
安装和使用都需要在终端操作,但使用终端并不复杂,我尽量配图。
这次的环境是fnOS。
主要流程:
1.添加终端应用gotty
2.创建独立的Python环境
3. 安装icloudpd
4. 使用icloudpd同步相册
1. 添加终端应用gotty
飞牛没有自带web终端,所以需要先添加一个终端来连接。
如果有其他选择替代的话可以跳过这一步
从应用商店直接抖索gotty,安装完成后,需要设置账号密码。
然后输入账号密码后进入终端界面,
然后输入飞牛的账号密码,登录终端。
2.创建独立的Python环境
飞牛本身自带了Python环境给系统使用,为了避免影响系统,我们需要创建独立的Python环境来运行icloudpd。
a. 创建一个虚拟环境文件夹:
这里我们创建一个名为 my_icloud_venv 的虚拟环境
python3 -m venv my_icloud_venv
这时候会创建一个名为my_icloud_venv的目录,激活环境后,我们通过pip安装的软件都会保存在这里。
b. 激活虚拟环境:
激活后,你的命令行提示符前面会多一个 (my_icloud_venv) 的标记,表示你现在正处于这个独立的环境中。
source my_icloud_venv/bin/activate
3. 安装icloudpd
a. 升级pip
python -m pip install --upgrade pip
查看pip版本命令:pip -V
b. 安装icloudpd
pip install icloudpd
#网络不好可以使用proxy
pip --proxy ip:port install icloudpd
至此icloudpd安装完成
4. 使用icloudpd同步相册
先贴一下GitHub的原文:
icloudpd使用方法a. 认证
使用icloudpd首先要通过认证,完成认证后会在本地保存凭证,凭证的有限期是两个月,过期之后需要重新认证。
对于手动同步来说,凭证过期影响不大,如果是需要常驻同步进程,可以参考GitHub文档配置邮箱,在凭证过期的时候,发送邮件通知你。我没有这个需求,所以没有测试过具体的步骤。
认证涉及到认证的常用参数:
#参数 --cookie-directory /vol1/1001/private/.pyicloud 指定保存凭证目录,可以不指定,默认存放在用户目录下面的.pyicloud目录 "~/.pyicloud"
#参数--username apple_username 指定用户名
#参数--password apple_password 指定密码,可以不指定,然后交互式输入
#参数--domain cn (重要)国内用户必需设置
icloudpd --username my@email.address --password my_password --domain cn --auth-only
认证通过执行后会在手机上弹窗,确定登录的位置,确定后弹出验证码,这里的验证码是400641,输入后完成认证,同时会自动创建目录 ~/.pyicloud,保存凭证。
此时无需输入密码和二次认证即可通过认证。
icloudpd --username my@email.address --domain cn --auth-only
认证已缓存b. 同步所有相册(除隐藏相册)
#参数--directory /vol1/1001/Photos 指定下载目录
重点:这里我们需要指定相册同步的本地地址,注意这里的目录地址是飞牛的原始路径,我们可以在文件管理中,右键单击文件夹,点击详细信息,点击复制原始路径。

icloudpd --directory /vol1/1001/Photos --username my@email.address --domain cn
同步全部相册c. 同步指定相册(可指定隐藏相册)
#参数 --list-albums 列出所有相册
#参数--album 微信 指定相册名
#参数--folder-structure none 指定下载的目录结构,none为无结构平铺,不指定--folder-structure参数会按照默认的"年/月/日"目录结构下载,如需自定义目录结构可以参考文档
首先查看相册列表
icloudpd --username my@email.address --domain cn --list-albums
查看相册列表我们可以看到常用的相册,例如截图相册(Screenshots)、隐藏相册(Hidden)等等
指定Screenshots相册单独同步到/vol1/1001/Photos/iCloud/Screenshots目录中,无目录结构
icloudpd --directory /vol1/1001/Photos/iCloud/Screenshots --username my@email.address --domain cn --album Screenshots --folder-structure none
指定相册同步c. 常驻同步(如果需要常驻同步进程建议使用docker)
#参数--watch-with-interval 3600 指定此参数将无限循环运行,间隔3600秒后再次开始拉取
icloudpd --directory /vol1/1001/Photos/iCloud/证件 --username my@email.address --domain cn --album 证件 --folder-structure none --watch-with-interval 3600
常驻同步有问题欢迎在评论区留言讨论
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
