Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 24 additions & 9 deletions .env
Original file line number Diff line number Diff line change
@@ -1,9 +1,24 @@
# 佳明国区账号密码
GARMIN_USERNAME_DEFAULT=;
GARMIN_PASSWORD_DEFAULT=;
# 佳明国际区账号密码
GARMIN_GLOBAL_USERNAME_DEFAULT=;
GARMIN_GLOBAL_PASSWORD_DEFAULT=;
# 佳明迁移数量配置
GARMIN_MIGRATE_NUM_DEFAULT=100;
GARMIN_MIGRATE_START_DEFAULT=1;
# 佳明中国区账号密码,对应 https://connect.garmin.cn/
GARMIN_USERNAME=
GARMIN_PASSWORD=

# 佳明国际区账号密码,对应 https://connect.garmin.com/
GARMIN_GLOBAL_USERNAME=
GARMIN_GLOBAL_PASSWORD=

# 活动历史迁移配置:每次迁移多少条活动,以及从第几条活动开始
GARMIN_MIGRATE_NUM=100
GARMIN_MIGRATE_START=1

# Wellness 健康数据同步配置,默认关闭;需要同步步数、睡眠、HRV、压力等健康数据时改为 true
# 注意:目标账号需要先人工绑定/连接一台支持健康数据的 Garmin 设备,否则上传会报 419
GARMIN_SYNC_WELLNESS=false

# 日常同步时检查最近几天的健康数据
GARMIN_WELLNESS_SYNC_DAYS=1

# 历史迁移健康数据天数;0 表示不迁移历史健康数据
GARMIN_WELLNESS_MIGRATE_DAYS=30

# 历史迁移从今天往前跳过多少天开始;0 表示从今天开始
GARMIN_WELLNESS_MIGRATE_START_DAYS=0
21 changes: 20 additions & 1 deletion .github/workflows/migrate_garmin_cn_to_garmin_global.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,19 @@ name: Migrate Garmin CN to Garmin Global

on:
workflow_dispatch:
inputs:
migrate_command:
description: "迁移命令:支持 CN -> Global 或 Global -> CN"
required: true
default: "migrate_garmin_cn_to_global"
type: choice
options:
- migrate_garmin_cn_to_global
- migrate_all_cn_to_global
- migrate_wellness_cn_to_global
- migrate_garmin_global_to_cn
- migrate_all_global_to_cn
- migrate_wellness_global_to_cn

env:
BARK_KEY: ${{ secrets.BARK_KEY }}
Expand All @@ -11,6 +24,12 @@ env:
GARMIN_GLOBAL_PASSWORD: ${{ secrets.GARMIN_GLOBAL_PASSWORD }}
GARMIN_MIGRATE_NUM: ${{ secrets.GARMIN_MIGRATE_NUM }}
GARMIN_MIGRATE_START: ${{ secrets.GARMIN_MIGRATE_START }}
# Wellness 健康数据默认关闭;需要迁移步数、睡眠、HRV、压力等数据时,在 Secrets 中设置 GARMIN_SYNC_WELLNESS=true
GARMIN_SYNC_WELLNESS: ${{ secrets.GARMIN_SYNC_WELLNESS }}
# 历史迁移健康数据天数;未配置或 0 表示不迁移历史健康数据
GARMIN_WELLNESS_MIGRATE_DAYS: ${{ secrets.GARMIN_WELLNESS_MIGRATE_DAYS }}
# 历史迁移从今天往前跳过多少天开始;0 表示从今天开始
GARMIN_WELLNESS_MIGRATE_START_DAYS: ${{ secrets.GARMIN_WELLNESS_MIGRATE_START_DAYS }}

jobs:
build:
Expand All @@ -25,7 +44,7 @@ jobs:
node-version: '18'
cache: 'yarn'
- run: yarn
- run: yarn migrate_garmin_cn_to_global
- run: yarn ${{ github.event.inputs.migrate_command || 'migrate_garmin_cn_to_global' }}
- uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: Save Garmin Session
21 changes: 20 additions & 1 deletion .github/workflows/migrate_garmin_global_to_garmin_cn.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,19 @@ name: Migrate Garmin Global to Garmin CN

on:
workflow_dispatch:
inputs:
migrate_command:
description: "迁移命令:支持 Global -> CN 或 CN -> Global"
required: true
default: "migrate_garmin_global_to_cn"
type: choice
options:
- migrate_garmin_global_to_cn
- migrate_all_global_to_cn
- migrate_wellness_global_to_cn
- migrate_garmin_cn_to_global
- migrate_all_cn_to_global
- migrate_wellness_cn_to_global

env:
BARK_KEY: ${{ secrets.BARK_KEY }}
Expand All @@ -11,6 +24,12 @@ env:
GARMIN_GLOBAL_PASSWORD: ${{ secrets.GARMIN_GLOBAL_PASSWORD }}
GARMIN_MIGRATE_NUM: ${{ secrets.GARMIN_MIGRATE_NUM }}
GARMIN_MIGRATE_START: ${{ secrets.GARMIN_MIGRATE_START }}
# Wellness 健康数据默认关闭;需要迁移步数、睡眠、HRV、压力等数据时,在 Secrets 中设置 GARMIN_SYNC_WELLNESS=true
GARMIN_SYNC_WELLNESS: ${{ secrets.GARMIN_SYNC_WELLNESS }}
# 历史迁移健康数据天数;未配置或 0 表示不迁移历史健康数据
GARMIN_WELLNESS_MIGRATE_DAYS: ${{ secrets.GARMIN_WELLNESS_MIGRATE_DAYS }}
# 历史迁移从今天往前跳过多少天开始;0 表示从今天开始
GARMIN_WELLNESS_MIGRATE_START_DAYS: ${{ secrets.GARMIN_WELLNESS_MIGRATE_START_DAYS }}

jobs:
build:
Expand All @@ -25,7 +44,7 @@ jobs:
node-version: '18'
cache: 'yarn'
- run: yarn
- run: yarn migrate_garmin_global_to_cn
- run: yarn ${{ github.event.inputs.migrate_command || 'migrate_garmin_global_to_cn' }}
- uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: Save Garmin Session
21 changes: 19 additions & 2 deletions .github/workflows/sync_garmin_cn_to_garmin_global.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,19 @@ name: Sync Garmin CN to Garmin Global

on:
workflow_dispatch:
inputs:
sync_command:
description: "同步命令:普通 sync 只同步活动;sync_all 同步活动+Wellness;sync_wellness 只同步 Wellness"
required: true
default: "sync_cn"
type: choice
options:
- sync_cn
- sync_all_cn_to_global
- sync_wellness_cn_to_global
- sync_global
- sync_all_global_to_cn
- sync_wellness_global_to_cn
schedule:
# 每6小时检查一次
- cron: "0 */6 * * *"
Expand All @@ -22,6 +35,10 @@ env:
GARMIN_PASSWORD: ${{ secrets.GARMIN_PASSWORD }}
GARMIN_GLOBAL_USERNAME: ${{ secrets.GARMIN_GLOBAL_USERNAME }}
GARMIN_GLOBAL_PASSWORD: ${{ secrets.GARMIN_GLOBAL_PASSWORD }}
# Wellness 健康数据默认关闭;需要同步步数、睡眠、HRV、压力等数据时,在 Secrets 中设置 GARMIN_SYNC_WELLNESS=true
GARMIN_SYNC_WELLNESS: ${{ secrets.GARMIN_SYNC_WELLNESS }}
# 日常同步时检查最近几天的健康数据;未配置时默认为 1
GARMIN_WELLNESS_SYNC_DAYS: ${{ secrets.GARMIN_WELLNESS_SYNC_DAYS }}

jobs:
build:
Expand All @@ -36,8 +53,8 @@ jobs:
node-version: '18'
cache: 'yarn'
- run: yarn
- run: yarn sync_cn
timeout-minutes: 5
- run: yarn ${{ github.event.inputs.sync_command || 'sync_cn' }}
timeout-minutes: 15
- uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: Save Garmin Session
21 changes: 19 additions & 2 deletions .github/workflows/sync_garmin_global_to_garmin_cn.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,19 @@ name: Sync Garmin Global to Garmin CN

on:
workflow_dispatch:
inputs:
sync_command:
description: "同步命令:普通 sync 只同步活动;sync_all 同步活动+Wellness;sync_wellness 只同步 Wellness"
required: true
default: "sync_global"
type: choice
options:
- sync_global
- sync_all_global_to_cn
- sync_wellness_global_to_cn
- sync_cn
- sync_all_cn_to_global
- sync_wellness_cn_to_global
schedule:
# 每6小时检查一次
- cron: "0 */6 * * *"
Expand All @@ -19,6 +32,10 @@ env:
GARMIN_PASSWORD: ${{ secrets.GARMIN_PASSWORD }}
GARMIN_GLOBAL_USERNAME: ${{ secrets.GARMIN_GLOBAL_USERNAME }}
GARMIN_GLOBAL_PASSWORD: ${{ secrets.GARMIN_GLOBAL_PASSWORD }}
# Wellness 健康数据默认关闭;需要同步步数、睡眠、HRV、压力等数据时,在 Secrets 中设置 GARMIN_SYNC_WELLNESS=true
GARMIN_SYNC_WELLNESS: ${{ secrets.GARMIN_SYNC_WELLNESS }}
# 日常同步时检查最近几天的健康数据;未配置时默认为 1
GARMIN_WELLNESS_SYNC_DAYS: ${{ secrets.GARMIN_WELLNESS_SYNC_DAYS }}

jobs:
build:
Expand All @@ -33,8 +50,8 @@ jobs:
node-version: "18"
cache: "yarn"
- run: yarn
- run: yarn sync_global
timeout-minutes: 5
- run: yarn ${{ github.event.inputs.sync_command || 'sync_global' }}
timeout-minutes: 15
- uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: Save Garmin Session
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ dist
node_modules
*.log
garmin_fit_files
garmin_wellness_files
.env
db/*.db
./src/constant.my.ts

# Virtual environment
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ COPY package.json yarn.lock* tsconfig.json ./
RUN yarn --frozen-lockfile
COPY src ./src
VOLUME /app/db
CMD ["yarn", "sync_cn"]
CMD ["yarn", "sync_global"]
Loading