网淘吧来吧,欢迎您!

Strava技能使用说明

2026-03-30 新闻来源:网淘吧 围观:16
电脑广告
手机广告

Strava 技能

与 Strava 互动,加载活动、分析锻炼并追踪健身数据。

设置

1. 创建 Strava API 应用程序

  1. 前往https://www.strava.com/settings/api
  2. 创建一个应用(测试时使用http://localhost作为回调地址)
  3. 记下你的客户端 ID客户端密钥

2. 获取初始 OAuth 令牌

在浏览器中访问此 URL(替换 CLIENT_ID):

Strava

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

这将返回访问令牌刷新令牌

3. 配置凭证

添加到~/.clawdbot/clawdbot.json

{
  "skills": {
    "entries": {
      "strava": {
        "enabled": true,
        "env": {
          "STRAVA_ACCESS_TOKEN": "your-access-token",
          "STRAVA_REFRESH_TOKEN": "your-refresh-token",
          "STRAVA_CLIENT_ID": "your-client-id",
          "STRAVA_CLIENT_SECRET": "your-client-secret"
        }
      }
    }
  }
}

或者使用环境变量:

export STRAVA_ACCESS_TOKEN="your-access-token"
export STRAVA_REFRESH_TOKEN="your-refresh-token"
export STRAVA_CLIENT_ID="your-client-id"
export STRAVA_CLIENT_SECRET="your-client-secret"

使用方法

列出近期活动

获取最近30项活动:

curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
  "https://www.strava.com/api/v3/athlete/activities?per_page=30"

获取最近10项活动:

curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
  "https://www.strava.com/api/v3/athlete/activities?per_page=10"

按日期筛选活动

获取特定日期(Unix时间戳)之后的活动:

# Activities after Jan 1, 2024
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
  "https://www.strava.com/api/v3/athlete/activities?after=1704067200"

获取指定日期范围内的活动:

# Activities between Jan 1 - Jan 31, 2024
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
  "https://www.strava.com/api/v3/athlete/activities?after=1704067200&before=1706745600"

获取活动详情

获取特定活动的完整详情(替换 `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 1 (default)
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
  "https://www.strava.com/api/v3/athlete/activities?page=1&per_page=30"

# Page 2
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
  "https://www.strava.com/api/v3/athlete/activities?page=2&per_page=30"

令牌刷新

访问令牌每6小时过期一次。使用辅助脚本刷新:

bash {baseDir}/scripts/refresh_token.sh

或手动操作:

curl -s -X POST https://www.strava.com/oauth/token \
  -d client_id="${STRAVA_CLIENT_ID}" \
  -d client_secret="${STRAVA_CLIENT_SECRET}" \
  -d grant_type=refresh_token \
  -d refresh_token="${STRAVA_REFRESH_TOKEN}"

响应中包含一个新的访问令牌刷新令牌。请使用这两个令牌更新您的配置。

通用数据字段

活动对象包括:

  • 名称— 活动标题
  • 距离— 距离(单位:米)
  • 运动时间— 运动时间(单位:秒)
  • 总耗时— 总时间(单位:秒)
  • 累计爬升高度— 爬升高度(单位:米)
  • 类型— 活动类型(跑步、骑行、游泳等)
  • 运动类型— 具体运动类型
  • 开始日期— 开始时间(ISO 8601格式)
  • 平均速度— 平均速度,单位:米/秒
  • 最高速度— 最高速度,单位:米/秒
  • 平均心率— 平均心率(如可用)
  • 最高心率— 最高心率(如可用)
  • 点赞数— 收到的点赞数量

请求频率限制

  • 200次请求每15分钟
  • 2,000次请求每天

如果达到请求频率限制,响应中将包含X-RateLimit-*(速率限制相关)标头。

实用技巧

  • 转换Unix时间戳:date -d @时间戳(Linux系统)或date -r 时间戳(macOS系统)
  • 将米转换为公里:除以1000
  • 将米转换为英里:除以1609.34
  • 将米/秒转换为公里/小时:乘以3.6
  • 将米/秒转换为英里/小时:乘以2.237
  • 将秒转换为小时:除以3600
  • 解析JSON,可使用jq(如果可用),或使用grep/sed进行基本提取

示例

获取上周的跑步活动及其距离:

LAST_WEEK=$(date -d '7 days ago' +%s 2>/dev/null || date -v-7d +%s)
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
  "https://www.strava.com/api/v3/athlete/activities?after=${LAST_WEEK}&per_page=50" \
  | grep -E '"name"|"distance"|"type"'

获取近期活动的总距离:

curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
  "https://www.strava.com/api/v3/athlete/activities?per_page=10" \
  | grep -o '"distance":[0-9.]*' | cut -d: -f2 | awk '{sum+=$1} END {print sum/1000 " km"}'

错误处理

如果遇到401未授权错误,表示您的访问令牌已过期。请运行令牌刷新命令。

如果遇到速率限制错误,请等待限制窗口重置(请检查X-RateLimit-Usage头部信息)。

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏
文章底部电脑广告
手机广告位-内容正文底部

相关文章

您是本站第326370名访客 今日有221篇新文章/评论