自动化在线法律课程视频观看,播放律师云学院(lawschool.lawyerpass.com)上的培训视频列表。
使用浏览器工具(Chrome profile by 浏览器 Relay)和持续状态文件+ cron 工作 l 的 lawyerpass.com 的多个课程的视频是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
使用 browser 工具(通过 Browser Relay 启动的 Chrome 用户配置文件)配合持久化状态文件(video_state.json)与定时任务(cron job),实现对 lawschool.lawyerpass.com 上多门课程视频的自动化播放与长期监控。
video_state.json):记录学习进度、当前播放视频、待播队列video-check-loop):每 8 分钟触发一次,检查视频播放状态,完成后自动切换至下一视频profile=chrome,并从状态文件中读取 targetIdreferences/workflow.md 获取完整分步操作流程references/known-issues.md,了解关键注意事项与潜在陷阱https://lawschool.lawyerpass.com/course/list/course/detail?courseId=app-lesson-card.square-itemdocument.querySelector('video')课程卡片使用 Angular Router 实现导航, 标签上无 href 属性。需通过拦截 history.pushState 捕获跳转路径:
let captured = '';
const orig = window.history.pushState.bind(window.history);
window.history.pushState = function(s, t, url) { captured = url; orig(s, t, url); };
[...document.querySelectorAll('app-lesson-card.square-item')]
.find(c => c.textContent.includes('课程标题关键词'))
?.querySelector('a')?.click();
return captured; // 返回类似 "/course/detail?courseId=d5b19f94..."
随后调用 navigate 命令,跳转至 https://lawschool.lawyerpass.com 拼接捕获到的路径。
部分来自「课程广场」的课程需先完成选课操作,视频区域才会加载显示:
// 步骤 1:检测并点击选课按钮
const btn = [...document.querySelectorAll('button, a, [class*=btn]')]
.find(el => el.textContent.includes('选修并学习'));
if (btn) { btn.click(); return 'clicked_enroll'; }
return 'no_enroll_btn';
若成功点击 → 等待 3 秒 → 点击确认弹窗:
const confirm = [...document.querySelectorAll('button, [class*=btn], [class*=confirm]')]
.find(el => el.textContent.match(/确定|确认|OK/));
confirm?.click();
再等待 3 秒后,执行 video.play() 开始播放。
const v = document.querySelector('video');
if (!v) return JSON.stringify({ found: false, url: location.href });
return JSON.stringify({
found: true,
ct: Math.round(v.currentTime),
dur: Math.round(v.duration),
paused: v.paused,
ended: v.ended,
url: location.href
});
播放完成判定条件:ended === true 或 ct >= dur - 3
注意:部分视频结束时
ended为false,但ct === dur—— 必须同时检查两项条件。
{
"schedule": { "kind": "every", "everyMs": 480000 },
"sessionTarget": "isolated",
"payload": { "kind": "agentTurn", "timeoutSeconds": 120 }
}
⚠️ 请勿将 everyMs 设为小于 300000(即 5 分钟) —— 将导致 API 调用频率超限错误。
完整 video_state.json 结构定义详见 references/state-schema.md。
可使用 scripts/lawschool_init_state.py 脚本生成初始状态文件。
每次视频开始播放和播放完成时,均需调用 message 工具发送通知:
✅ 播完:{title}({done}/{total})▶ 开始:{title},{duration},第{done+1}/{total}门🎉 全部{total}门完成!| 文件 | 适用场景 |
|---|---|
references/workflow.md |
完整的初始化配置与监控循环操作指南 |
references/state-schema.md |
状态文件字段定义及更新规则说明 |
references/known-issues.md |
启动前必读 —— 关键注意事项与已知问题 |
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 133.7万人学习
共49课时 | 82.4万人学习