用途:只读访问 Canvas LMS,列出课程与作业,不修改任何课程或作业数据。
主要能力:scripts/canvas_api.py 是调用 Canvas API 的 Python CLI。list_courses 可列出课程,支持 --enrollment-state active 筛选活跃课程;list_assignments 按课程 ID 列出作业,支持 --order-by due_at 按截止日期排序。脚本自动处理 Canvas 的 Link 头分页。作业描述截断为 500 字符,html_url 指向 Canvas 完整作业页。
使用方式:在 Canvas 浏览器中进入 Account → Settings,在 Approved Integrations 点击 + New Access Token,命名并生成令牌后复制。将令牌与实例地址写入 ${HERMES_HOME:-~/.hermes}/.env:CANVAS_API_TOKEN=your_token_here 与 CANVAS_BASE_URL=https://yourschool.instructure.com(地址为登录 Canvas 时浏览器中的 URL,无末尾斜杠)。随后可设置 CANVAS="python $HERMES_HOME/skills/productivity/canvas/scripts/canvas_api.py",运行 $CANVAS list_courses --enrollment-state active、$CANVAS list_assignments 12345 等命令。也可用 curl 直接调用 API,请求头为 Authorization: Bearer $CANVAS_API_TOKEN。
适用场景:需要以只读方式获取 Canvas 课程与作业清单、按截止日期查看作业时。
限制:仅只读,不修改课程或作业。首次使用建议运行 $CANVAS list_courses 验证认证,401 需重新生成令牌,403 表示令牌对该课程无权限,课程列表为空可尝试 --enrollment-state active 或省略该参数,机构错误需核对 CANVAS_BASE_URL。Canvas 限流约每 10 分钟 700 次请求,可通过 X-Rate-Limit-Remaining 头查看。超时需检查网络连通性。