OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  trainingpeaks:获取实时训练计划、锻炼内容和健身指标

trainingpeaks:获取实时训练计划、锻炼内容和健身指标

 
  integration ·  2026-02-05 10:38:52 · 3 次点击  · 0 条评论  

名称: trainingpeaks
描述: 从 TrainingPeaks 实时获取训练计划、训练课程、体能指标(CTL/ATL/TSB)和个人记录。使用基于 Cookie 的身份验证(无需 API 密钥)。与其他耐力运动、骑行、跑步或游泳铁人三项教练技能结合使用,效果最佳。


TrainingPeaks 技能

通过命令行访问 TrainingPeaks 内部 API。纯 Python 标准库实现 —— 无需 pip 依赖。

  1. 在浏览器中登录 TrainingPeaks
  2. 打开开发者工具 → 应用程序 → Cookie → app.trainingpeaks.com
  3. 找到名为 Production_tpAuth 的 Cookie
  4. 复制其值(长编码字符串)

然后进行身份验证:

python3 scripts/tp.py auth "<在此处粘贴Cookie值>"

或者设置环境变量(适用于 CI/脚本):

export TP_AUTH_COOKIE="<cookie值>"

凭证以 0600 权限存储在 ~/.trainingpeaks/ 目录下。

命令

存储并验证 Production_tpAuth Cookie。将其交换为 Bearer 令牌并缓存运动员 ID。

python3 scripts/tp.py auth "eyJhbGci..."
# ✓ 身份验证成功!
#   账户:user@example.com
#   运动员 ID:12345
#   令牌有效期剩余:60 分钟

auth-status — 检查身份验证状态

python3 scripts/tp.py auth-status
# Cookie:已存储(文件)
# 令牌:有效(剩余 42 分钟)
# 运动员 ID:12345
# ✓ 就绪

profile [--json] — 运动员资料

python3 scripts/tp.py profile
# 资料
# ════════════════════════════════════════
#   姓名:        Ruben Example
#   邮箱:       ruben@example.com
#   运动员 ID:  12345
#   账户类型:     Premium
#   自行车 FTP:    280 W

workouts <开始日期> <结束日期> [--filter all|planned|completed] [--json]

列出指定日期范围内的训练课程(最多 90 天)。

# 本周所有训练课程
python3 scripts/tp.py workouts 2026-01-26 2026-02-01

# 仅已完成的训练课程
python3 scripts/tp.py workouts 2026-01-01 2026-01-31 --filter completed

# 用于脚本处理的原始 JSON 数据
python3 scripts/tp.py workouts 2026-01-26 2026-02-01 --json

输出列:日期、标题、运动类型、状态(✓/○)、计划时长、实际时长、TSS、距离。

workout <id> [--json] — 训练课程详情

获取单个训练课程的完整详情,包括描述、教练评论和所有指标。

python3 scripts/tp.py workout 123456789
# 训练课程:Tempo Intervals 3x10min
# ══════════════════════════════════════════════════
#   日期:         2026-01-28
#   运动类型:        Bike
#   状态:       Completed ✓
#   ...

fitness [--days 90] [--json] — CTL/ATL/TSB 数据

获取体能(CTL)、疲劳度(ATL)和状态(TSB)数据。

# 最近 90 天(默认)
python3 scripts/tp.py fitness

# 整个赛季
python3 scripts/tp.py fitness --days 365

# 用于图表的 JSON 数据
python3 scripts/tp.py fitness --json

显示包含当前 CTL/ATL/TSB 及状态解读的摘要,以及一个 14 天的每日数据表。

peaks <运动类型> <记录类型> [--days 3650] [--json] — 个人记录

按运动类型和指标获取排名靠前的个人记录。

# 最佳 20 分钟功率(所有时间)
python3 scripts/tp.py peaks Bike power20min

# 去年 5K 跑步个人记录
python3 scripts/tp.py peaks Run speed5K --days 365

# 5 秒最大功率
python3 scripts/tp.py peaks Bike power5sec

有效的个人记录类型:

运动类型 记录类型
自行车 power5sec, power1min, power5min, power10min, power20min, power60min, power90min, hR5sec, hR1min, hR5min, hR10min, hR20min, hR60min, hR90min
跑步 hR5sechR90min, speed400Meter, speed800Meter, speed1K, speed1Mi, speed5K, speed5Mi, speed10K, speed10Mi, speedHalfMarathon, speedMarathon, speed50K

令牌管理

  • Bearer 令牌缓存在 ~/.trainingpeaks/token.json
  • 令牌约 1 小时后过期;系统会使用存储的 Cookie 自动刷新
  • Cookie 可持续数周;存储在 ~/.trainingpeaks/cookie
  • 如果 Cookie 过期,您将收到清晰的错误提示,需要重新进行身份验证

文件位置

文件 用途
~/.trainingpeaks/cookie 存储的 Production_tpAuth Cookie
~/.trainingpeaks/token.json 缓存的 OAuth Bearer 令牌及过期时间
~/.trainingpeaks/config.json 缓存的运动员 ID 和账户信息

注意事项

  • 所有日期使用 YYYY-MM-DD 格式
  • 训练课程查询的最大时间范围:90 天
  • 速率限制:API 请求之间至少间隔 150 毫秒
  • TP_AUTH_COOKIE 环境变量会覆盖存储的 Cookie
  • 默认输出为人类可读格式;--json 参数提供原始 API 响应
3 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor