iCloud 日历、照片、Drive、设备查找的命令行操作。
bash
python3 -c "import pyicloud; print('pyicloud OK')" 2>/dev/null || echo "需安装: pip install pyicloud"
python3 -c "import caldav; print('caldav OK')" 2>/dev/null || echo "需安装: pip install caldav icalendar"
bash
ls ~/.pyicloud/ 2>/dev/null && echo "有缓存 session" || echo "无缓存,需新认证"
工具认证方式密码类型pyicloud(照片/Drive/设备)主密码 + 2FA 验证码Apple ID 主密码CalDAV(日历)应用专用密码appleid.apple.com 生成
🔴 密码安全:从环境变量读取,不硬编码
bash
export ICLOUD_EMAIL="user@icloud.com"
export ICLOUD_PASSWORD="xxx" # 或用 keychain
python
from pyicloud import PyiCloudService
import os
os.environ['icloud_china'] = '1' # 中国大陆用户必须
api = PyiCloudService(os.environ['ICLOUD_EMAIL'], os.environ['ICLOUD_PASSWORD'], china_mainland=True)
if api.requires_2fa:
# ⚠️ 需要用户参与:在 iPhone 上查看验证码
code = input("请输入 iPhone 上收到的 6 位验证码: ")
api.validate_2fa_code(code)
确认点:2FA 需要用户手动输入验证码。提前告知用户准备 iPhone。
用户意图服务跳转"今天有什么安排" / "加个日程"日历→ Step 2,读 references/calendar.md"下载照片" / "看看相册"照片→ Step 2,读 references/photos.md"手机在哪" / "查找设备"设备查找→ Step 2,读 references/findmy.md"iCloud 文件" / "下载文档"Drive→ Step 2,读 references/drive.md
根据 Step 1 的分类, 读取对应 reference 文件 获取详细操作指令:
服务Reference认证工具主要脚本📅 日历references/calendar.mdCalDAVscripts/icloud_calendar.py📷 照片references/photos.mdpyicloudscripts/icloud-photos.py📱 设备references/findmy.mdpyicloudscripts/icloud_tool.py💾 Drivereferences/drive.mdpyicloudscripts/icloud_tool.py🔧 脚本总览references/scripts.md—所有脚本用法
场景用哪个脚本设备查找 / Drive 浏览scripts/icloud_tool.py(通用工具)照片浏览/下载scripts/icloud-photos.py(照片专用)日历操作scripts/icloud_calendar.py(CalDAV)提醒事项scripts/icloud-reminders.py备忘录(有限)scripts/icloud-notes.py(⚠️ Apple Notes API 有限)
MEDIA:<path> 发送情况处理2FA 验证码超时提醒用户重新发送验证码,重试认证Session 过期删除 ~/.pyicloud/ 缓存,重新认证pyicloud 连接失败检查网络 → 检查 icloud_china 环境变量 → 重试应用专用密码无效(CalDAV)引导用户到 appleid.apple.com 重新生成照片下载量大>50 张时告知预计时间,分批下载备忘录需求Apple Notes 无公开 API,建议用 iCloud.com 网页版依赖缺失按 Step 0 安装指引,不继续
china_mainland=True,icloudpd 需 --domain cn~/.pyicloud/,通常数周有效