如果你不熟悉代码,强烈推荐使用这个版本,在网页上填入账号点击就能同步数据,简洁好用。 https://dailysync.vyzt.dev/
gitlab: https://gitlab.com/gooin/dailysync
github:(actions方式正常可用) https://github.com/gooin/dailysync-rev
如果你懂一点代码,会使用 docker 可以使用此方案。
目前没有提供打包好的镜像,需要拉取下来自行打包使用
git clone https://gitlab.com/gooin/dailysync.git
打开.env
文件,按注释填入信息
可以通过修改文件中的command
参数决定每次执行的功能,默认是国际区同步到国区
yarn sync_cn
同步国际区到**区
yarn sync_global
迁移历史数据:**区到国际区
yarn migrate_garmin_cn_to_global
迁移历史数据:国际区到**区
yarn migrate_garmin_global_to_cn
docker-compose up
参照下文中的 定时任务(Linux Only)
,把命令替换成使用
docker start daily-sync
因为项目之前在Github上占用过多资源被封禁,现在已经调整了执行的频率,熟悉代码的话,将代码下载下来,上传到github,通过 github Actions执行 具体参考下方文档或参考视频教程: https://www.bilibili.com/video/BV1v94y1Q7oR/?spm_id_from=333.999.0.0
【重要重要重要!!!】请先参照 账号准备 进行账号配置,再来使用此工具
首先确保运行此脚本的机器能够访问国际互联网, 如国外VPS、家庭全局科学的环境等, 否则无法正常登录佳明国际区
wget google.com
执行后确保相应的数据类似如下再进行下面步骤,否则请检查网络环境(命令行也需要能访问国际互联网, 如果google在浏览器能正常访问,但是命令行无法ping通,google搜索关键词命令行翻墙,参考配置一下重试。) 如果用的时Clash,在左侧 General 下,将 TUN Mode 模式开启也可。
root@home:~# wget google.com
StatusCode : 200
StatusDescription : OK
Content : <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="zh-HK"><head><meta con
tent="text/html; charset=UTF-8" http-equiv="Content-Type"><meta content="/images/branding/googleg/1
x/...
RawContent : HTTP/1.1 200 OK
Connection: close
Conts...
Forms : {f}
Headers : {[ https://csp.withgoogle.com/csp/gws/other-hp], [Cache-Control, private, max
-age=0], [Content-Type, text/html; charset=UTF-8]...}
Images : {@{innerHTML=; n value=zh-HK name=hl>; outerText=; tagName=I
NPUT; th}...}
Links : {@{i id=gb_78; class=gbzt;
href=https://play.google.com/?hl=zh-TW&tab=w8}...}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength : 52716
如果是如下显示则代表网络没有配置好,请先按上面说的方法解决再试。
root@home:~# wget google.com
--2023-07-06 20:26:18-- http://google.com/
Resolving google.com (google.com)... 142.251.42.238
Connecting to google.com (google.com)|142.251.42.238|:80... failed: Connection timed out.
Retrying.
ping sso.garmin.com
root@home:~# ping sso.garmin.com
PING sso.garmin.com.cdn.cloudflare.net (104.17.113.66) 56(84) bytes of data.
64 bytes from 104.17.113.66 (104.17.113.66): icmp_seq=1 ttl=63 time=1.92 ms
64 bytes from 104.17.113.66 (104.17.113.66): icmp_seq=2 ttl=63 time=1.27 ms
64 bytes from 104.17.113.66 (104.17.113.66): icmp_seq=3 ttl=63 time=2.43 ms
--- sso.garmin.com.cdn.cloudflare.net ping statistics ---
ping sso.garmin.cn
root@home:~# ping sso.garmin.cn
PING sso.garmin.cn (61.150.74.194) 56(84) bytes of data.
64 bytes from 61.150.74.194: icmp_seq=1 ttl=63 time=1.69 ms
64 bytes from 61.150.74.194: icmp_seq=2 ttl=63 time=2.77 ms
64 bytes from 61.150.74.194: icmp_seq=3 ttl=63 time=7.12 ms
--- sso.garmin.cn ping statistics ---
环境需求Node版本18
及以上,推荐最新的LTS版本。
下载地址 https://nodejs.org/en/
NodeJS
安装完毕后,新打开一个管理员命令行窗口, 输入命令执行
corepack enable
在README.md
同级目录打开命令行,执行
Windows在文件管理器中打开脚本所在的目录,在地址栏输入 cmd
然后回车,即可打开命令行,这个步骤不需要管理员权限
yarn
打开 src/constant.ts
,
填入您的佳明账号及密码
//**区
export const GARMIN_USERNAME_DEFAULT = 'example@example.com';
export const GARMIN_PASSWORD_DEFAULT = 'password';
//国际区
export const GARMIN_GLOBAL_USERNAME_DEFAULT = 'example@example.com';
export const GARMIN_GLOBAL_PASSWORD_DEFAULT = 'password';
// 佳明迁移数量配置(批量同步历史数据使用)
export const GARMIN_MIGRATE_NUM_DEFAULT = 100; //每次要迁移的数量,不要填太大
export const GARMIN_MIGRATE_START_DEFAULT = 0; // 从第几条活动开始
注意: 如果执行不能成功,请尝试将梯子更换为美国IP,多更换几个ip试试
同步**区到国际区
yarn sync_cn
同步国际区到**区
yarn sync_global
迁移历史数据:**区到国际区
yarn migrate_garmin_cn_to_global
迁移历史数据:国际区到**区
yarn migrate_garmin_global_to_cn
如果上面ping都正常,却仍然不能正常运行,请尝试将梯子更换为美国IP
上面手动执行名称成功迁移后,可以添加定时任务来自动执行
crontab -e
打开定时任务编辑,按需添加:
PATH=$PATH:/usr/local/bin:/usr/bin
SHELL=/bin/bash
0 */3 * * * cd /root/code/dailysync/ && yarn --cwd /root/code/dailysync/ sync_global >> /var/log/dailysync.log 2>&1
PATH=$PATH:/usr/local/bin:/usr/bin
SHELL=/bin/bash
0 */3 * * * cd /root/code/dailysync/ && yarn --cwd /root/code/dailysync/ sync_cn >> /var/log/dailysync.log 2>&1
其中 /root/code/dailysync/
为脚本在机器上的目录地址,更换为您机器上的目录即可
tail -100f /var/log/dailysync.log
当前为 */10 * * * *
每 10 分钟执行一次
您可以按需修改, 参考网址 https://crontab.guru/examples.html
列举几个常用的:
每小时执行一次: 0 * * * *
每6小时执行一次: 0 */6 * * *
每12小时执行一次: 0 */12 * * *
自动 安全 省心
如果看不到此文档的图片,请移步 知乎链接
此工具实现了佳明运动活动数据(生理数据如睡眠,身体电量,步数 等除外)的一次性迁移与日常运动数据同步,实现同步运动数据到到Strava Strava全球热图 。 额外还实现了RQ数据采集记录跑力的长期趋势及自动签到。
- 支持佳明账号中已有的运动数据从**区一次性迁移到国际区。对应
Action
:Migrate Garmin CN to Garmin Global
- 支持佳明账号中已有的运动数据从国际区一次性迁移到**区。对应
Action
:Migrate Garmin Global to Garmin CN
- 约每20分钟左右检查当前**区账号中是否有新的运动数据,如有则自动下载上传到国际区,并同步到Strava。 对应
Action
:Sync Garmin CN to Garmin Global
- 如果您常用的是国际区,想要在国内运动软件(悦跑圈/咕咚/keep/郁金香等等)同步运动数据及微信运动中显示 【Garmin手表 骑行xx分钟】(微信运动效果)
此工具可以实现自动反向同步**区。 对应
Action
:Sync Garmin Global to Garmin CN
- 微信步数同步:
iOS
: 佳明爱运动小程序绑定后,国际区->**区同步仅能同步活动数据。出去运动不带手机的话,步数会记录在手表中,活动同步后,Connect
会将步数上传到健康
App 中,微信与健康应用链接,即可在微信运动中看到步数。Android
: 暂无可行方法。
- 微信步数同步:
- 如无特殊需求,强烈建议不要将两个同步脚本同时打开,按需开启一个即可!
本工具仅限用于学习和研究使用,不得用于商业或者非法用途。如有任何问题可联系本人删除。
账号及密码保存在自己的 github secrets
中,不会泄露,运行代码均 开放源码,欢迎提交PR
。