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 中包含:

  • 配置说明

  • 登录方式示例

  • 常见运行模式

  • 已同步缓存机制说明

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

相关推荐
0思必得035 分钟前
[Web自动化] Selenium处理滚动条
前端·爬虫·python·selenium·自动化
沈浩(种子思维作者)1 小时前
系统要活起来就必须开放包容去中心化
人工智能·python·flask·量子计算
2301_790300961 小时前
Python数据库操作:SQLAlchemy ORM指南
jvm·数据库·python
m0_736919101 小时前
用Pandas处理时间序列数据(Time Series)
jvm·数据库·python
getapi1 小时前
实时音视频传输与屏幕共享(投屏)
python
java干货2 小时前
为什么 “File 10“ 排在 “File 2“ 前面?解决文件名排序的终极算法:自然排序
开发语言·python·算法
机器懒得学习2 小时前
智能股票分析系统
python·深度学习·金融
毕设源码-郭学长2 小时前
【开题答辩全过程】以 基于python的二手房数据分析与可视化为例,包含答辩的问题和答案
开发语言·python·数据分析
SR_shuiyunjian2 小时前
Python第三次作业
python
vx_biyesheji00012 小时前
豆瓣电影推荐系统 | Python Django 协同过滤 Echarts可视化 深度学习 大数据 毕业设计源码
大数据·爬虫·python·深度学习·django·毕业设计·echarts