OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  canvas-lms:访问 Canvas 学习管理系统,获取课程数据与作业信息

canvas-lms:访问 Canvas 学习管理系统,获取课程数据与作业信息

 
  env ·  2026-02-19 21:00:46 · 3 次点击  · 0 条评论  

名称: canvas-lms
描述: 访问 Canvas LMS (Instructure) 以获取课程数据、作业、成绩和提交信息。适用于查看截止日期、查询成绩、列出课程或从 Canvas 获取课程资料。


Canvas LMS 技能

通过 REST API 访问 Canvas LMS 数据。

设置

  1. 在 Canvas 中生成 API 令牌:账户 → 设置 → 新建访问令牌
  2. 将令牌存储在环境变量或 .env 文件中:
    bash export CANVAS_TOKEN="你的令牌" export CANVAS_URL="https://your-school.instructure.com" # 或 canvas.yourschool.edu

身份验证

在所有请求中包含令牌:

curl -s -H "Authorization: Bearer $CANVAS_TOKEN" "$CANVAS_URL/api/v1/..."

常用端点

课程与个人资料

# 用户个人资料
curl -s -H "Authorization: Bearer $CANVAS_TOKEN" "$CANVAS_URL/api/v1/users/self/profile"

# 活跃课程
curl -s -H "Authorization: Bearer $CANVAS_TOKEN" "$CANVAS_URL/api/v1/courses?enrollment_state=active&per_page=50"

# 仪表板卡片(快速概览)
curl -s -H "Authorization: Bearer $CANVAS_TOKEN" "$CANVAS_URL/api/v1/dashboard/dashboard_cards"

作业与截止日期

# 待办事项(即将到来的任务)
curl -s -H "Authorization: Bearer $CANVAS_TOKEN" "$CANVAS_URL/api/v1/users/self/todo"

# 即将发生的事件
curl -s -H "Authorization: Bearer $CANVAS_TOKEN" "$CANVAS_URL/api/v1/users/self/upcoming_events"

# 缺失/逾期的提交
curl -s -H "Authorization: Bearer $CANVAS_TOKEN" "$CANVAS_URL/api/v1/users/self/missing_submissions"

# 课程作业列表
curl -s -H "Authorization: Bearer $CANVAS_TOKEN" "$CANVAS_URL/api/v1/courses/{course_id}/assignments?per_page=50"

# 作业详情
curl -s -H "Authorization: Bearer $CANVAS_TOKEN" "$CANVAS_URL/api/v1/courses/{course_id}/assignments/{id}"

# 提交状态
curl -s -H "Authorization: Bearer $CANVAS_TOKEN" "$CANVAS_URL/api/v1/courses/{course_id}/assignments/{id}/submissions/self"

成绩

# 包含成绩的注册信息
curl -s -H "Authorization: Bearer $CANVAS_TOKEN" "$CANVAS_URL/api/v1/users/self/enrollments?include[]=current_grading_period_scores&per_page=50"

提取成绩字段:.grades.current_score

课程内容

# 公告
curl -s -H "Authorization: Bearer $CANVAS_TOKEN" "$CANVAS_URL/api/v1/announcements?context_codes[]=course_{course_id}&per_page=20"

# 模块
curl -s -H "Authorization: Bearer $CANVAS_TOKEN" "$CANVAS_URL/api/v1/courses/{course_id}/modules?include[]=items&per_page=50"

# 文件
curl -s -H "Authorization: Bearer $CANVAS_TOKEN" "$CANVAS_URL/api/v1/courses/{course_id}/files?per_page=50"

# 讨论主题
curl -s -H "Authorization: Bearer $CANVAS_TOKEN" "$CANVAS_URL/api/v1/courses/{course_id}/discussion_topics?per_page=50"

# 收件箱(对话)
curl -s -H "Authorization: Bearer $CANVAS_TOKEN" "$CANVAS_URL/api/v1/conversations?per_page=20"

响应处理

  • 列表端点返回数组
  • 分页:检查 Link 响应头中的 rel="next"
  • 日期格式为 ISO 8601 (UTC)
  • 对于响应较慢的端点,可使用 --max-time 30 参数

使用 jq 解析:

curl -s ... | jq '.[] | {name: .name, due: .due_at}'

若无 jq,可使用 Python:

curl -s ... | python3 -c "import sys,json; data=json.load(sys.stdin); print(json.dumps(data, indent=2))"

提示

  • 课程 ID 会出现在待办事项/作业的响应中
  • 文件下载链接位于文件对象的 url 字段中
  • 始终包含 per_page=50 参数以获取更多结果(默认值通常为 10)
3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor