注释很详细,直接上代码
较初阶版新增内容
1. 简单但好用的ui界面
为方便大家参考,ui界面的模板单独拿出来了
ui界面模板
2. opencv图像识别
3. 需加载情况特殊处理(防卡壳)
4. 增加自动判断是否已点赞的情况
源码部分
// 启用自动执行auto();//设置运行框标题颜色和字体大小console.setTitle("眨眼睛出品","#ff11ee00",40);//设置运行框初始的位置console.setPosition(400, 100);//判断运行框是否显示在屏幕上var isconsoleshow =false //初始函数init_operator();//初始化函数
function init_operator(){//申请截图权限requestScreenCapture();//自动授予截图权限//安卓版本高于Android 9if(device.sdkInt>28){//等待截屏权限申请并同意threads.start(function () {packageName('com.android.systemui').text('立即开始').waitFor();text('立即开始').click();});}
}function click_img(path_){//获取手机中程序所在的目录var pos = files.cwd()//读取微信图标的小图片var wx = images.read(pos+path_);//暂停一会防止截图过快截到授予权限时的照片sleep(1000)//截图并找图//region的内容分别是所查找区域的左上角坐标,区域的宽高//(如果只有两位数字则表示从这个坐标到右下角)//threshold的内容是相似度var p = findImage(captureScreen(), wx, {region: [0, 50],threshold: 0.9});if(!p){log("未找到图片或已点赞")return false;}click(p.x,p.y+30)log("成功点赞");return true;
}//点赞流程
function dz_operator(){//需求次数var num=dialogs.input("请输入一个数字")//额外储存var num_res=num;//无法下滑的情况(在加载,需要缓慢特殊的滑动方式),判定是否需要加载var num_need_jj=0;while(num>0){//等待关注字眼出现textContains("关注").waitFor();log("查询到视频")//图片位置在autojs的文件同级目录(“脚本”下一级)if(click_img("/视频号点赞部分图片.jpg")){num-=1;var num_shunxu=num_res-numlog("第"+num_shunxu+"次点赞成功!")num_need_jj=0;}else{if(num_need_jj<3){num_need_jj+=1;}}//处理加载视频的情况if(num_need_jj==3){swipe(534, 1200, 535,600 , 2000)}//下滑scrollDown();sleep(100);}}// 定义开始按钮的响应函数function startstopButtonClick() {toast("开始按钮被点击");// 在这里编写开始按钮被点击后的逻辑if (window.startstopButton.getText() === "开始") {//定义开始之后的逻辑threads.start(function () {dz_operator();});//修改按钮文本为停止window. startstopButton. setText("停止")} else {//点击停止之后的逻辑//修改按钮文本为开始window.startstopButton. setText("开始")}}// 定义控制台按钮的响应函数function consoleButtonClick() {toast("控制台按钮被点击");// 在这里编写停止按钮被点击后的逻辑//这里对控制台状态操作需要启用新线程,否则当场卡死//暂时还不明白为啥不能在同一个线程改变控制台状态,先这样用着threads.start(function () {//如果当前是显示状态则隐藏if (isconsoleshow){console.hide(true) //修改标记isconsoleshow=false }else{//同理//填true是为了程序关闭时将控制台一同关闭console.show(true) isconsoleshow=true }console.setBackgroud("#44000000");});}// 定义退出按钮的响应函数function exitButtonClick() {toast("退出按钮被点击");// 在这里编写退出按钮被点击后的逻辑//直接结束程序exit ();}// 创建UI界面var window = floaty.window(//垂直分布<vertical><button id="startstopButton" text="开始" w="auto" h="auto"/><button id="consoleButton" text="控制台" w="auto" h="auto"/><button id="exitButton" text="退出" w="auto" h="auto"/></vertical>);// 设置开始停止按钮的点击事件监听器window.startstopButton.click(() => {//开始及停止按钮点击处理函数startstopButtonClick();});// 设置控制台按钮的点击事件监听器window.consoleButton.click(() => {//控制台按钮点击处理函数consoleButtonClick();});// 设置退出按钮的点击事件监听器window.exitButton.click(() => {//退出按钮点击处理函数exitButtonClick();});// 保持程序运行状态,否则会运行完即关闭setInterval(() => {}, 1000);
图片素材下载(放在autojs同级目录,一般是在“脚本”文件夹的下一级)
(为防止水印覆盖图案故意将图片截长了点,请读者自行截取左边的内容使用)
图片素材链接
运行效果:
运行框信息输出概况