回答
关于“短剧全自动”自动化需求,Hamibot 本身不提供内置的短剧专属脚本,但你可以通过编写或适配脚本实现短剧 App 的自动播放、滑动切换、跳过广告等功能。以下是实现该需求的核心步骤与最佳实践:
1. 基础权限与环境准备
- 进入手机「设置」→「无障碍」→ 开启 Hamibot 的无障碍服务。
- 进入手机「设置」→「应用管理」→ 找到 Hamibot → 授予“后台弹出界面”权限。未授予权限会导致脚本启动后立即提示“运行结束”。
- 在 Hamibot 控制台开启“保持屏幕常亮”与“防休眠”选项,避免播放中途锁屏中断。
2. 核心自动化逻辑
短剧自动化通常包含以下环节:
- 启动目标 App 并等待主界面加载
- 识别视频播放状态
- 模拟上滑或点击“下一集”
- 自动处理广告、签到、权限申请等弹窗
- 循环执行并记录异常日志
3. 兼容 Rhino 引擎的示例代码
// 文档地址 https://docs.hamibot.com/
var targetApp = "com.example.shortdrama"; // 替换为目标短剧 App 包名
var playDuration = 60000; // 单集预估播放时长(毫秒),需根据实际调整
function launchAndWatch() {
launchApp(targetApp);
sleep(5000); // 等待 App 冷启动
while (true) {
// 尝试定位视频播放控件(不同 App 控件特征不同,需抓包或布局分析确认)
var videoNode = className("android.widget.VideoView").findOne(3000) ||
className("android.view.SurfaceView").findOne(3000);
if (!videoNode) {
log("未检测到视频界面,尝试处理弹窗");
handlePopups();
sleep(2000);
continue;
}
log("视频播放中,等待 " + (playDuration / 1000) + " 秒后切换");
sleep(playDuration);
// 模拟上滑切换下一集
var w = device.width;
var h = device.height;
swipe(w / 2, h * 0.75, w / 2, h * 0.25, 300);
sleep(3000); // 等待下一集加载
}
}
function handlePopups() {
// 匹配常见弹窗按钮文本
var keywords = ["跳过", "关闭", "我知道了", "允许", "取消"];
for (var i = 0; i < keywords.length; i++) {
var btn = text(keywords[i]).findOne(800);
if (btn) {
btn.click();
log("已点击弹窗: " + keywords[i]);
sleep(1000);
return;
}
}
}
launchAndWatch();
4. 稳定性优化建议
- 动态定位优先:短剧 App 更新频繁,硬编码坐标极易失效。优先使用
text()、desc()、className()组合定位,或使用id()配合waitFor()。 - 随机化操作:固定间隔与固定坐标易触发平台风控。可在
sleep()中加入随机偏移,例如sleep(playDuration + random(-2000, 2000))。 - 异常恢复机制:添加
try...catch包裹核心逻辑,配合auto.waitFor()确保无障碍服务就绪后再执行。 - 日志与调试:使用 Hamibot 控制台的实时日志功能,通过
log()输出关键节点,便于快速定位卡死或误触问题。
5. 常见问题排查
- 脚本秒退:90% 为无障碍服务或后台弹窗权限未开启,按第 1 步重新授权即可。
- 滑动无响应:部分 App 拦截无障碍滑动事件,可改用
click()点击界面上的“下一集”或“>”按钮。 - 频繁卡在广告页:在
handlePopups()中补充该 App 特有的广告按钮文本,或增加click(device.width / 2, device.height / 2)作为兜底点击。
如果你能提供具体的短剧 App 名称、当前脚本的报错日志或界面控件结构(可通过 Hamibot 的“布局分析”功能获取),我可以为你输出精准适配的定位代码与防中断策略。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实