这是一个Python脚本,用于自动化将FIT文件(例如从Garmin设备导出的文件)上传到Garmin Connect。它支持批量上传、失败或处理中文件的重试,并模拟人类行为以避免检测。该脚本设计注重可靠性,包括错误处理和进度跟踪。
注意: 该脚本需要手动登录Garmin Connect,因为存在CAPTCHA和安全措施。它不是完全无头模式——初始阶段需要与浏览器交互。
- 批量处理:以可配置的批量大小(默认:100)上传文件,避免服务器过载。
- 重试逻辑:自动检测失败或“处理中”的上传,并在后续轮次中重试(最多10轮)。
- 模拟人类行为:使用
undetected_chromedriver规避机器人检测,添加随机延迟和鼠标移动。 - 进度跟踪:使用
tqdm显示上传进度,并记录估计的成功/失败情况。 - 文件管理:将失败/处理中文件复制到特定轮次的目录,便于审查。
- 错误处理:超时、异常和手动干预点。
- Python 3.8+(在3.12上测试)
- Google Chrome浏览器(用于
undetected_chromedriver) - Garmin Connect账户(需要手动登录)
- FIT文件目录(例如
./fit/*.fit)
- 克隆仓库:
git clone https://github.com/solitudechn/garmin-fit-auto-uploader.git
cd garmin-fit-auto-uploader
- 安装依赖:
pip install -r requirements.txt
- 确保Chrome已安装并更新。脚本使用
undetected_chromedriver,它会自动下载兼容版本。
在脚本顶部编辑配置部分:
FIT_DIR:FIT文件目录路径(默认:./fit)BATCH_SIZE:每批文件数(默认:100)PAUSE_SECONDS:批次间暂停秒数(默认:5)UPLOAD_URL:上传页面URL(默认:https://connect.garmin.com/modern/import-data)LOGIN_URL:登录页面URL(默认:https://connect.garmin.com/signin/)TIMEOUT:上传超时秒数(默认:300)MAX_ROUNDS:最大重试轮数(默认:10)
- 将FIT文件放入
FIT_DIR指定的目录。 - 运行脚本:
python auto_update_garmin_fit.py
- 浏览器会打开登录页面。手动登录并解决CAPTCHA(如果出现)。脚本会等待120秒。
- 登录后,脚本会自动导航到上传页面并开始处理文件。
- 失败/处理中文件会复制到
failed_uploads_roundX目录(X为轮次)。
- 该脚本模拟人类行为,但仍可能被Garmin检测。请遵守Garmin的服务条款。
- 如果上传超时或出错,脚本会尝试重试。
- 手动干预:如果登录未自动检测,按Enter继续。
- 脚本结束时会关闭浏览器。