Garmin 中国区活动同步到国际区的一个简单实现方案

一、背景

使用佳明(Garmin)国行账号时,会遇到一个比较常见的问题:
中国区账号无法直接与 Strava等国际平台进行官方同步。

这会导致运动数据被分散在不同生态中:

  • 中国区 Garmin Connect

  • 国际区 Garmin Connect

  • Strava 等第三方平台

如果希望后续统一使用国际区账号与第三方平台同步,就需要一种方式:

👉 将中国区账号中的活动记录同步到国际区账号。

目前已经有开源项目(如 dailysync)实现了这一思路。

在参考其实现方式后,正巧最近AI变成比较火,自己用AI实现了一个更轻量的脚本版本,用于完成最核心的同步功能。

项目地址:
https://github.com/hh997y/hh997y-garmin_sync_python


二、总体思路

该项目的目标非常明确:
只做一件事:将 Garmin 中国区账号的活动记录,同步到 Garmin 国际区账号。

整体流程如下:

  1. 使用中国区账号登录 Garmin Connect 接口

  2. 获取最近的活动列表并下载对应的 .fit 文件

  3. 使用国际区账号登录上传接口

  4. 将下载的活动文件上传至国际区账号

  5. 对已同步过的活动进行记录,避免重复上传

同步完成后,即可使用 Garmin 国际区账号与 Strava 等平台进行官方同步。


三、功能特性

目前实现的主要功能包括:

  • 支持从中国区账号下载活动记录(fit 文件)

  • 支持将活动文件上传到国际区账号

  • 已上传活动记录缓存,避免重复同步

  • 支持多种运行模式:

    • download_only:仅下载活动

    • upload_only:仅上传本地活动文件

    • full:下载 + 上传

  • 支持两种登录方式:

    • 使用已有 session cookie

    • 使用 Playwright 自动登录获取 cookie


四、与现有方案的关系

该项目的实现思路参考了开源项目:

相比之下,本项目的特点是:

  • 数据安全,不用对外提供佳明账号密码

  • 功能更简单聚焦,仅处理活动记录同步

  • 不包含完整的 Web UI 或数据库

  • 更偏向脚本工具形态,便于按需运行或二次开发

对于希望快速获得完整解决方案的用户,dailysync 是一个成熟方案;

对于希望理解原理或进行定制化处理的用户,可以参考本项目的实现方式。


五、使用门槛与适用人群

该项目并非面向普通终端用户,而是更适合以下人群:

  • 熟悉 Python 基本使用方式

  • 能够修改配置文件(YAML)

  • 能理解 Cookie / Session 的基本概念

  • 能自行排查运行中的报错信息

不建议以下场景使用:

  • 完全不接触命令行或代码环境的用户

  • 期望一键图形界面操作的用户


六、项目结构说明

项目主要结构如下:

  • run.py:程序入口

  • config.yaml:配置文件(账号登录方式、同步模式等)

  • src/garmin_sync/:核心同步逻辑

  • state/uploaded.json:已同步活动记录缓存

程序通过读取 config.yaml 控制运行模式与认证方式。


七、实现初衷

实现该项目的主要动机包括:

  • 避免手动导出 / 导入 .fit 文件

  • 解决国区与国际区数据割裂的问题

  • 便于后续通过国际区账号与 Strava 等平台进行统一同步

  • 学习与实践 Garmin Connect 接口相关调用逻辑


八、项目地址

项目仓库地址:

👉 https://github.com/hh997y/hh997y-garmin_sync_python

仓库 README 中包含:

  • 配置说明

  • 登录方式示例

  • 常见运行模式

  • 已同步缓存机制说明

可根据自身需求进行二次开发或调整。

相关推荐
极客小云7 分钟前
【ComfyUI API 自动化利器:comfyui_xy Python 库使用详解】
网络·python·自动化·comfyui
闲人编程23 分钟前
Elasticsearch搜索引擎集成指南
python·elasticsearch·搜索引擎·jenkins·索引·副本·分片
痴儿哈哈32 分钟前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
花酒锄作田1 小时前
SQLAlchemy中使用UPSERT
python·sqlalchemy
SoleMotive.1 小时前
一个准程序员的健身日志:用算法调试我的增肌计划
python·程序员·健身·职业转型
亓才孓1 小时前
[Properties]写配置文件前,必须初始化Properties(引用变量没执行有效对象,调用方法会报空指针错误)
开发语言·python
Bruk.Liu1 小时前
(LangChain 实战14):基于 ChatMessageHistory 自定义实现对话记忆功能
人工智能·python·langchain·agent
大江东去浪淘尽千古风流人物1 小时前
【VLN】VLN(Vision-and-Language Navigation视觉语言导航)算法本质,范式难点及解决方向(1)
人工智能·python·算法
Swift社区1 小时前
Gunicorn 与 Uvicorn 部署 Python 后端详解
开发语言·python·gunicorn
Coinsheep1 小时前
SSTI-flask靶场搭建及通关
python·flask·ssti