名称: trainingpeaks
描述: 从 TrainingPeaks 实时获取训练计划、训练课程、体能指标(CTL/ATL/TSB)和个人记录。使用基于 Cookie 的身份验证(无需 API 密钥)。与其他耐力运动、骑行、跑步或游泳铁人三项教练技能结合使用,效果最佳。
通过命令行访问 TrainingPeaks 内部 API。纯 Python 标准库实现 —— 无需 pip 依赖。
app.trainingpeaks.comProduction_tpAuth 的 Cookie然后进行身份验证:
python3 scripts/tp.py auth "<在此处粘贴Cookie值>"
或者设置环境变量(适用于 CI/脚本):
export TP_AUTH_COOKIE="<cookie值>"
凭证以 0600 权限存储在 ~/.trainingpeaks/ 目录下。
auth <cookie> — 身份验证存储并验证 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 |
| 跑步 | hR5sec–hR90min, speed400Meter, speed800Meter, speed1K, speed1Mi, speed5K, speed5Mi, speed10K, speed10Mi, speedHalfMarathon, speedMarathon, speed50K |
~/.trainingpeaks/token.json~/.trainingpeaks/cookie| 文件 | 用途 |
|---|---|
~/.trainingpeaks/cookie |
存储的 Production_tpAuth Cookie |
~/.trainingpeaks/token.json |
缓存的 OAuth Bearer 令牌及过期时间 |
~/.trainingpeaks/config.json |
缓存的运动员 ID 和账户信息 |
YYYY-MM-DD 格式TP_AUTH_COOKIE 环境变量会覆盖存储的 Cookie--json 参数提供原始 API 响应