autojs-练手-视频号点赞(进阶版)

2023-12-13 08:32:53

注释很详细,直接上代码

较初阶版新增内容

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 9
    if(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-num
                log("第"+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同级目录,一般是在“脚本”文件夹的下一级)

在这里插入图片描述

(为防止水印覆盖图案故意将图片截长了点,请读者自行截取左边的内容使用)
图片素材链接

运行效果:

在这里插入图片描述

运行框信息输出概况

在这里插入图片描述

文章来源:https://blog.csdn.net/m0_73756108/article/details/134961191
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。