淘宝双十一活动自动完成 解放双手
刚开始学js和autojs,里面还有很多bug,希望大佬可以完善一下或者写个好一点的供大家学习学习嘿嘿
更新于 2022.11.08
第一步 下载安装auto.js
具体方法看我之前的文章
第二步
新建文件,将一下代码复制进去,保存运行。
运行之前注意打开悬浮窗权限和无障碍权限。
//淘宝双十一双for循环脚本代码
//更新于2022.11.08 21点04分
//版本 v1.2.0
auto(); // 自动打开无障碍服务
// 所有操作都是竖屏
const WIDTH = Math.min(device.width, device.height);
const HEIGHT = Math.max(device.width, device.height);
// const IS_ROOT = files.exists("/sbin/su") || files.exists("/system/xbin/su") || files.exists("/system/bin/su");
setScreenMetrics(WIDTH, HEIGHT);
requestScreenCapture(false); //请求竖屏截图
console.show() //控制台可视化
// 监听音量下键
function registerKey() {
try {
events.observeKey()
} catch (err) {
console.log('监听音量键停止失败,应该是无障碍权限出错,请关闭软件后台任务重新运行。')
console.log('如果还是不行可以重启手机尝试。')
quit()
}
events.onKeyDown('volume_down', function (event) {
console.log('淘宝任务脚本停止了')
console.log('请手动切换回主页面')
quit()
})
}
threads.start(registerKey) //开启监听音量键线程
// 打开淘宝进入活动
function openAndInto() {
console.log('正在打开淘宝App...')
app.launchApp("淘宝");
sleep(1500)
toastLog("请自行进入到活动界面")
sleep(3000)
log("任务开始")
// sleep(6000)
// click(775,1180)
// log("正在进入活动界面");
className("android.widget.Button").text("去赚能量").findOne().click()
log("查看任务完成情况");
sleep(2000);
}
function doTask(){
if(textContains("签到").exists()){
textContains("去完成").findOnce().click();
log("已签到");
sleep(1000)
}
if (!textContains("浏览15秒").exists()) {
//log(textContains("去完成"))
log("未发现可完成任务")
log("程序退出")
exit()
}
console.log("发现可浏览任务");
sleep(1000)
//截图
// var img = captureScreen();
// console.log("请求截屏");
sleep(500)
var taskList = textContains("浏览15秒").find() //找到所有包含该文字的标签
var taskListOffsetY = [];
//将y值全部放入到taskListOffsetY数组中
taskList.forEach(task => {
taskListOffsetY.push(task.bounds().top)
});
//console.log("taskListOffsetY:" + taskListOffsetY);
var toFinish = textContains("去完成").find() //找到所有包含该文字的标签
var toFinishCenterY = []; //存放去完成按钮的中心y坐标
//将去完成中心坐标y值全部放入到toFinishCenterY数组中
toFinish.forEach(task => {
toFinishCenterY.push(task.bounds().centerY())
});
//console.log("toFinishCenterY:" + toFinishCenterY);
// var taskListOffsetY =
loop:
for (let i = 0; i < taskListOffsetY.length; i++) {
for (let j = 0; j < toFinishCenterY.length; j++) {
if (Math.abs(taskListOffsetY[i] - toFinishCenterY[j]) < 10) {
click(850,toFinishCenterY[j]) //点击去完成
log("点击去完成(850,"+toFinishCenterY[j]+")");
break loop;
}
}
}
sleep(15000); //浏览15秒
// 等待任务完成文本出现
var count = 0
while(true){
if (textContains("任务完成").exists() || textContains("下单可获得额外喵果").exists() || textContains("去完成").exists()|| textContains("任务已经全部完成啦").exists()){
log("任务完成");
break
}
if (textContains("宝贝口袋").exists() && textContains("购物车").exists()) {
sleep(300)
console.log("检测到在直播间购物车中");
sleep(500);
back();
}
if (textContains("挑战幸运飞行任务").exists()) {
sleep(300)
console.log("检测到游戏,直接返回");
sleep(500);
back();
break;
}
if(count>5){
console.log("未发现任务完成文本,强制返回");
// sleep(1000)
break
// back()
}
console.log("请等待"+ (5-count));
sleep(1000)
count++
}
//sleep(500)
delete taskList,taskListOffsetY,toFinish,toFinishCenterY
}
function main(){
registerKey()
openAndInto()
toast("请先进入到活动界面");
sleep(5000)
while (true){
doTask()
back();
sleep(1000)
}
}
main();