有没有识别到关键词文字就自动截屏的脚本?

HAMI_5798629260 · 3 小时前
第 1 条补充
·
3 小时前

我该如何编写Hamibot脚本,并能使用。

回答

Hamibot AI
1
· 3 小时前

有的,你可以编写一个 Hamibot 脚本,在识别到屏幕中包含特定关键词时自动截屏。这个功能结合了 OCR 文字识别屏幕截图 功能,通过定时检测当前屏幕内容来判断是否出现目标关键词。

以下是完整的示例脚本:

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

// 等待无障碍服务启动
auto.waitFor();

// 请求截图权限
if (!requestScreenCapture()) {
    toastLog('请授予屏幕截图权限!');
    hamibot.exit();
}

// 设置你要检测的关键词
const KEYWORD = '订单';

// 每隔1秒检查一次屏幕内容
setInterval(function () {
    // 截取当前屏幕
    const img = captureScreen();
    if (!img) {
        log('截图失败');
        return;
    }

    // 使用 OCR 识别文字(只获取纯文本)
    const textResult = ocr.recognizeText(img);
    if (textResult && textResult.includes(KEYWORD)) {
        toastLog('发现关键词:' + KEYWORD + ',正在自动截屏保存');

        // 生成时间戳文件名
        const date = new Date();
        const fileName = '/sdcard/Hamibot/' + date.toLocaleString().replace(/[/:\s]/g, '-') + '-capture.png';

        // 再次截屏并保存(可选:也可以保存上一次的 img)
        const finalImg = captureScreen();
        images.save(finalImg, fileName);

        toastLog('截图已保存至:' + fileName);

        // 可根据需要添加后续操作,如发送通知、退出循环等
        // hamibot.exit(); // 如果只想触发一次,可以退出
    }
}, 1000); // 每1000毫秒(1秒)检测一次

功能说明:

  • 脚本会每隔 1 秒对屏幕进行一次截图和 OCR 识别。
  • 当识别出的文字中包含你设定的关键词(例如 '订单')时,就会自动保存一张截图到 /sdcard/Hamibot/ 目录下。
  • 文件名为当前时间,避免重复。

注意事项:

  1. 性能优化建议:OCR 识别较耗资源,不建议设置过短的间隔(如低于800ms)。可根据实际需求调整 setInterval 的时间。
  2. 首次运行需授权:确保允许“无障碍服务”和“屏幕截图权限”。
  3. 依赖 OCR 模块:该脚本使用了 Hamibot 内置的 ocr.recognizeText() 方法,请确保你的 Hamibot 版本为 1.2.2 或更高。
  4. 精准匹配可扩展:如果需要正则匹配或多关键词判断,可以修改条件逻辑,例如:
    const keywords = ['订单', '支付', '成功'];
    const found = keywords.some(word => textResult.includes(word));
    if (found) { ... }
    

如果你希望在后台持续监控而不影响其他操作,还可以将检测逻辑放入独立线程中运行。如果有更多定制需求,比如上传截图、发送通知等,也可以进一步扩展脚本。


补充回答 1

编写并使用 Hamibot 脚本的流程非常清晰,下面我会一步步带你完成从零开始创建、调试到运行脚本的全过程。


第一步:准备工作

  1. 安装 Hamibot 客户端

    • 在手机上下载并安装 Hamibot 应用。
    • 支持 Android 设备(暂不支持 iOS)。
  2. 开启无障碍服务

    • 打开 Hamibot → 点击“开始使用”或进入「设置」→ 开启「无障碍服务」。
    • 这是自动化操作的前提权限。
  3. 可选:电脑开发更高效

    • 推荐使用 VSCode 配合插件 Hamibot 开发助手(作者 BATU1579),提供代码提示和同步功能。
    • 插件安装方式:在 VSCode 扩展市场搜索 “Hamibot 开发助手” 并安装。

第二步:编写你的第一个脚本

以下是一个简单的示例脚本,打开微信并等待页面加载:

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

// 等待无障碍服务就绪
auto.waitFor();

// 启动微信
launchApp('微信');
toastLog('已启动微信');

// 等待首页出现“微信”标签
text('微信').waitFor();
sleep(1000);
toastLog('进入微信主界面');

如何输入这段代码?

  • 方法一:在 Hamibot 客户端点击「+」新建脚本 → 粘贴代码 → 保存为“测试脚本”。
  • 方法二:用 VSCode 编辑后通过插件推送到手机。

第三步:运行与调试

  1. 在 Hamibot 主界面找到你保存的脚本。
  2. 点击脚本卡片 → 选择「运行」。
  3. 观察手机是否自动打开微信,并弹出提示信息。
  4. 如果失败,查看日志:
    • 点击脚本右上角图标 → 查看「运行日志」,排查错误。

第四步:学习核心 API

Hamibot 基于 JavaScript,常用功能包括:

类别 示例
应用控制 launchApp('支付宝') —— 启动应用
界面查找 text('登录').findOne() —— 找到文字为“登录”的控件
点击操作 click(500, 800)text('确定').findOne().click()
等待元素 id('btn_submit').waitFor()
截图/OCR captureScreen() + ocr.recognizeText(img)
循环任务 setInterval(() => { ... }, 5000) 每5秒执行一次

你可以参考官方文档获取完整 API 列表。


第五步:进阶技巧

  • 添加异常处理

    try {
        text('提交').findOne(3000); // 最多等3秒
    } catch (e) {
        toastLog('未找到提交按钮');
        hamibot.exit();
    }
    
  • 配置参数化脚本(推荐)
    使用「脚本配置」功能,让非开发者也能修改变量(如账号密码),无需改代码。

  • UI 模式界面(高级)
    若需自定义弹窗或交互界面,可在脚本首行加上 "ui"; 并使用 XML 布局。


必读资源

  • 📚 Hamibot 开发文档:所有 API 和示例都在这里。
  • 💬 社区交流:前往官网论坛或项目页参与讨论。
  • 🛠️ 错误排查:确保已授权“悬浮窗”、“存储”、“无障碍”权限。

你现在就可以尝试写一个最简单的“打开应用”脚本,成功运行后逐步增加复杂度。如果你有具体想实现的功能(比如自动打卡、抢券、消息监控等),我可以为你提供定制化的脚本模板。

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