You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用stackr库调用Stack Exchange API获取用户徽章详情?

获取Stack Exchange用户具体徽章详情的方法(使用stackr库)

嘿,我懂你想要的不只是徽章总数,而是每个徽章的具体名称、描述这些细节对吧?用stackr库完全能实现,核心就是利用Stack Exchange API的filter系统——默认的请求只会返回精简数据,我们需要自定义filter来获取徽章的详细信息,下面给你一步步说明:

1. 基础操作:用预定义filter获取徽章基本信息

stackr库提供了预定义的withbadges filter,专门用来返回用户的徽章详情。直接在stack_users()函数里指定这个filter即可:

library(stackr)

# 替换成你要查询的用户ID和目标站点(比如stackoverflow)
target_user_id <- "12345"
target_site <- "stackoverflow"

# 获取带详细徽章的用户数据
user_data <- stack_users(
  user_id = target_user_id,
  site = target_site,
  filter = "withbadges"
)

# 提取徽章列表
badges_list <- user_data$items[[1]]$badges

# 遍历输出每个徽章的名称和描述
for (badge in badges_list) {
  cat("🔹 徽章名称:", badge$name, "\n")
  cat("   描述:", badge$description, "\n\n")
}

2. 进阶:自定义filter获取更多徽章字段

如果你还想获取徽章的等级(金/银/铜)、获得日期等更多信息,可以自己构建自定义filter。用stack_filter()函数就能创建包含指定字段的filter:

# 创建自定义filter,包含徽章名称、描述、等级、获得时间
custom_filter <- stack_filter(
  include = c(
    "items.badges.name",
    "items.badges.description",
    "items.badges.rank",
    "items.badges.awarded_date"
  ),
  site = target_site
)

# 使用自定义filter请求数据
user_data_with_full_badges <- stack_users(
  user_id = target_user_id,
  site = target_site,
  filter = custom_filter$filter
)

# 提取并输出完整徽章信息
full_badges_list <- user_data_with_full_badges$items[[1]]$badges
for (badge in full_badges_list) {
  cat("🔹 徽章名称:", badge$name, "\n")
  cat("   等级:", stringr::str_to_title(badge$rank), "\n")
  cat("   描述:", badge$description, "\n")
  cat("   获得日期:", as.Date(as.POSIXct(badge$awarded_date, origin = "1970-01-01")), "\n\n")
}

注意事项

  • 如果你的请求频率较高,建议设置Stack Exchange API密钥(通过Sys.setenv(STACK_EXCHANGE_KEY = "你的密钥")),这样能提升调用限制;
  • 不同站点的徽章体系略有差异,确保site参数指定正确(比如stackoverflow、serverfault等);
  • 若返回结果为空,先检查用户ID是否正确,以及该用户是否有公开的徽章数据。

内容的提问来源于stack exchange,提问作者Pozmanski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:37:09