SuperAPI AI 工具集

strava

数据与分析

查看项目

更新于 10-16 06:57

技能介绍

Strava Skill 用于与 Strava 交互,加载活动、分析训练并跟踪健身数据。

用途 该技能通过 Strava API 获取并分析用户的 Strava 活动、统计和训练数据,适合需要查询运动记录、汇总距离或查看活动详情的场景。

主要能力

  • 列出最近活动(可指定数量,如最近 30 条或 10 条)。
  • 按日期筛选活动,支持使用 Unix 时间戳指定 after 和 before 参数。
  • 获取指定活动的完整详情。
  • 获取已认证运动员的个人资料。
  • 获取指定运动员的统计数据。
  • 支持分页浏览活动列表。
  • 提供令牌刷新方式,访问令牌每 6 小时过期。

使用方式

  1. 创建 Strava API 应用:访问 https://www.strava.com/settings/api 创建应用(测试时回调地址可使用 http://localhost),记录 Client ID 和 Client Secret。
  2. 获取初始 OAuth 令牌:在浏览器中访问授权 URL(替换 CLIENT_ID): https://www.strava.com/oauth/authorize?client_id=CLIENT_ID&response_type=code&redirect_uri=http://localhost&approval_prompt=force&scope=activity:read_all 授权后会重定向到 http://localhost/?code=AUTHORIZATION_CODE,然后用以下命令交换令牌: curl -X POST https://www.strava.com/oauth/token
    -d client_id=YOUR_CLIENT_ID
    -d client_secret=YOUR_CLIENT_SECRET
    -d code=AUTHORIZATION_CODE
    -d grant_type=authorization_code 返回 access_token 和 refresh_token。
  3. 配置凭据:可添加到 ~/.thinkfleet/thinkfleet.json,或使用环境变量 STRAVA_ACCESS_TOKEN、STRAVA_REFRESH_TOKEN、STRAVA_CLIENT_ID、STRAVA_CLIENT_SECRET。
  4. 调用示例:
  • 列出最近 30 条活动: curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}"
    "https://www.strava.com/api/v3/athlete/activities?per_page=30"
  • 按日期筛选(2024 年 1 月 1 日之后): curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}"
    "https://www.strava.com/api/v3/athlete/activities?after=1704067200"
  • 获取活动详情(替换 ACTIVITY_ID): curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}"
    "https://www.strava.com/api/v3/activities/ACTIVITY_ID"
  • 获取运动员资料: curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}"
    "https://www.strava.com/api/v3/athlete"
  • 获取运动员统计(替换 ATHLETE_ID): curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}"
    "https://www.strava.com/api/v3/athletes/ATHLETE_ID/stats"
  • 分页:使用 page 和 per_page 参数。
  • 令牌刷新:bash {baseDir}/scripts/refresh_token.sh,或手动 POST 到 https://www.strava.com/oauth/token,使用 grant_type=refresh_token 和 refresh_token。

常见数据字段 活动对象包含:name(活动标题)、distance(距离,米)、moving_time(移动时间,秒)、elapsed_time(总时间,秒)、total_elevation_gain(爬升,米)、type(活动类型,如 Run、Ride、Swim)、sport_type(具体运动类型)、start_date(开始时间,ISO 8601)、average_speed(平均速度,m/s)、max_speed(最大速度,m/s)、average_heartrate(平均心率,如有)、max_heartrate(最大心率,如有)、kudos_count(获得的 kudos 数)。

适用场景

  • 查询和汇总跑步、骑行、游泳等运动记录。
  • 按时间范围分析训练活动。
  • 查看单次活动详情或运动员统计。

限制

  • 速率限制:每 15 分钟 200 次请求,每天 2,000 次请求;触发限制时响应会包含 X-RateLimit-* 头。
  • 访问令牌每 6 小时过期,需要刷新。
  • 若返回 401 Unauthorized,表示访问令牌已过期,需运行令牌刷新命令。
  • 若遇到速率限制错误,需等待限制窗口重置(可查看 X-RateLimit-Usage 头)。

提示

  • 转换 Unix 时间戳:Linux 使用 date -d @TIMESTAMP,macOS 使用 date -r TIMESTAMP。
  • 米转公里除以 1000,米转英里除以 1609.34。
  • m/s 转 km/h 乘以 3.6,m/s 转 mph 乘以 2.237。
  • 秒转小时除以 3600。
  • 可用 jq 解析 JSON,或用 grep/sed 做基本提取。