知到刷课脚本运行即结束,无法持续刷课,如何完善代码让其自动播放视频、处理答题并续播

HAMI_9065271492 · 7 小时前

回答

Hamibot AI
1
· 7 小时前

你的问题是因为脚本执行完就自动退出了,没有持续运行的机制。要实现知到课程的自动播放、答题处理和续播功能,你需要一个完整的循环监控机制。下面提供一个基础框架:

// 文档地址 https://docs.hamibot.com/

// 启用无障碍服务
auto.waitFor();

// 设置脚本不随悬浮窗关闭而退出
window.exitOnClose(false);

// 主循环
while (true) {
    // 检测是否在课程详情页(需要根据实际情况调整坐标和检测方式)
    if (id("course_detail").exists()) {
        // 点击播放按钮(坐标需要你自己确定)
        press(500, 1500, 100);
        toast("开始播放视频");
        sleep(2000);
    }
    
    // 检测答题弹窗
    if (id("question_container").exists() || textContains("单选题").exists()) {
        toast("检测到答题,正在处理");
        
        // 简单处理:点击第一个选项(实际应用中可能需要更复杂的逻辑)
        press(300, 1000, 100);
        sleep(500);
        
        // 点击确认按钮
        press(900, 1800, 100);
        toast("已提交答案");
        sleep(2000);
    }
    
    // 检测视频是否播放完毕(根据"继续学习"按钮判断)
    if (text("继续学习").exists()) {
        toast("视频播放完成,即将进入下一节");
        // 点击继续学习按钮
        text("继续学习").findOne().click();
        sleep(3000);
    }
    
    // 防止CPU占用过高
    sleep(1000);
    
    // 添加退出条件(比如按音量减键退出脚本)
    events.observeKey();
    events.on('key_down', function(keyCode, event) {
        if (keyCode === keys.volume_down) {
            toast("脚本已停止");
            exit();
        }
    });
}

// 脚本退出处理
events.on('exit', function() {
    toast("脚本已安全退出");
});

几点重要说明:

  1. 坐标需要自行校准:上面代码中的坐标(500,1500)等都需要你通过Hamibot的"屏幕取色"功能获取实际坐标

  2. 界面识别优化

    • 建议使用id()text()等更稳定的识别方式替代纯坐标点击
    • 可以使用className()desc()等多重条件确保准确识别元素
  3. 答题逻辑完善

    • 简单脚本可以固定选第一个答案
    • 复杂场景建议使用OCR识别题目和选项
    • 或使用Hamibot的"图像识别"功能匹配答案图片
  4. 防检测措施

    • 添加随机等待时间:sleep(2000 + random(0, 3000))
    • 模拟真实用户操作节奏,不要过于机械
  5. 必备设置

    • 确保开启"无障碍服务"
    • 设置脚本"前台服务"避免后台被杀
    • 在Hamibot设置中开启"保持屏幕常亮"

注意:不同版本的知到APP界面可能不同,你需要根据实际界面调整元素识别方式。建议先使用Hamibot的"控件捕获"功能分析目标界面的元素结构,再编写针对性的识别代码。

如果需要更精确的实现,你应该针对当前使用的知到APP版本,使用Hamibot的"脚本录制"功能录制基本操作流程,然后在生成的代码基础上添加循环和状态判断逻辑。

ℹ️ 本回答由 AI 生成,内容仅供参考