autojs 抖音抢红包源码

 

"ui";

var myApp ={};

myApp.isRun = false;

myApp.minHBTime = 8;

myApp.maxHBTime = 15;

myApp.homeActivity = "com.ss.android.ugc.aweme.main.MainActivity";

myApp.tqTime = 3;

myApp.qNum = 0;

myApp.qCNum = 0;

//tabs 数据

var tabs_data = {

    //tabs 背景

    bg: "#ffffff",

    selectColor: {

        //当前页面选中颜色

        on: "#00ffff",

        //当前页面未选中颜色

        off: "#999999"

    },

    //图标大小

    srcSize: 18,

    //字体大小

    textSize: 12,

    //动画缩放比例 未加入动画效果

    zoom: 1.2,

    //是否显示指示器小横条

    tabs_h: true,

    //tabs 按钮数据

    data: [

        ["设置", "@drawable/ic_settings_black_48dp"],

        ["通用设置", "@drawable/ic_settings_black_48dp"],

        ["日志", "@drawable/ic_assignment_black_48dp"],

 

    ],

}

 

//tabs按钮 布局视图信息

var tabs_view = []

//tabs按钮 当前选中按钮

var selectView = 0;

 

//自定义控件 tabs按钮

var Tabs_btn_layout = function () {

    //继承ui.Widget

    util.extend(Tabs_btn_layout, ui.Widget);

    function Tabs_btn_layout() {

        //调用父类构造函数

        ui.Widget.call(this);

        //自定义属性data ,定义控件的每个参数 传入值为整数

        this.defineAttr("data", (view, attr, value, defineSetter) => {

            //获取当前控件的参数值 tabs_data.data[value] 赋值到arr数组

            arr = tabs_data.data[value]

            //设定 _text控件文本

            view._text.setText(arr[0])

            //设定 _src控件图片

            view._src.attr("src", arr[1])

            //把当前控件信息集合到tabs_view数组里面

            tabs_view[tabs_view.length] = view

            //如果当前控件为初始值 则设定控件颜色为选中颜色 selectView==value==0 

            if (value == selectView) {

                view._src.attr("tint", tabs_data.selectColor.on)

                view._text.setTextColor(colors.parseColor(tabs_data.selectColor.on))

            }

        });

    }

    Tabs_btn_layout.prototype.render = function () {

        return (

            //1.0.0-1 修改 w="*" 参数 屏幕方向发生变化时 宽度自适配

            <vertical id="_bg" w="*" bg="{{tabs_data.bg}}" padding="0 10" gravity="center" >

                <img w="{{tabs_data.srcSize}}" h="{{tabs_data.srcSize}}" id="_src" tint="{{tabs_data.selectColor.off}}" />

                <text w="auto" id="_text" textSize="{{tabs_data.textSize}}" textColor="{{tabs_data.selectColor.off}}" />

            </vertical>

        )

    }

    ui.registerWidget("tabs_btn-layout", Tabs_btn_layout);

    return Tabs_btn_layout;

}()

 

//自定义控件 tabs

var Tabs_layout = function () {

    util.extend(Tabs_layout, ui.Widget);

    function Tabs_layout() {

        ui.Widget.call(this);

        this.defineAttr("data", (view, attr, value, defineSetter) => {

            //遍历 tabs_data.data数组 

            for (var i = 0; i < tabs_data.data.length; i++) {

                time = i

                //1.0.0-1 增加 layout_weight="1"参数 屏幕方向发生变化时 宽度自适配

                ui.inflate(<tabs_btn-layout data="{{time}}" layout_weight="1" />, view._tabs, true)

            }

            //根据tabs_h值设置 _color颜色

            tabs_data.tabs_h ? _color = tabs_data.selectColor.on : _color = "#00000000";

            view.tabs.selectedTabIndicatorColor = colors.parseColor(_color);//设置tabs指示器颜色

        });

    }

    Tabs_layout.prototype.render = function () {

        return (

            <card w="*" h="auto" cardElevation="5" foreground="?selectableItemBackground">

                <horizontal id="_tabs" />

                <tabs id="tabs" />

            </card>

        )

    }

    ui.registerWidget("tabs-layout", Tabs_layout);

    return Tabs_layout;

}()

 

ui.layout(

    <frame>

        <vertical>

            <appbar w="*" h="auto">

                <toolbar id="toolbar" title="{{tabs_data.data[0][0]}}" />

            </appbar>

            <viewpager w="*" id="viewpager" layout_alignParentBottom="true" >

                <frame >

                    <vertical>

                        <Switch id="rootSwith" text="无障碍服务:" checked="{{auto.service != null}}" w="auto" textStyle="bold" />

                        <horizontal> <text text="抢取时间:"/>     <input id="minHBTime" text="{{myApp.minHBTime}}"/><text text="~"/>  <input id="maxHBTime" text="{{myApp.maxHBTime}}"/><text text="(提前几秒进直播)"/> </horizontal>

 

                      

                        <button id="startRun" text="启动" />

                        <text text="QQ群: 856728443  " />

                        <text text="本程序仅供参考学使用,如若非法使用概不负责"/>

                    </vertical>

                </frame>

                <frame >

                    <vertical>

                     

                    </vertical>

                </frame>

                <frame>

                    <vertical>

                        <text text="日志" />

                        <com.stardust.autojs.core.console.ConsoleView id="console" layout_weight="1" />

                        <text h="50px" w="*" />

                    </vertical>

                </frame>

 

            </viewpager>.

        </vertical>

        <tabs-layout data="" layout_gravity="bottom" />

    </frame>

)

 

ui.tabs.setupWithViewPager(ui.viewpager);//绑定ViewPager到指示器

 

//页面更改侦听器

ui.viewpager.setOnPageChangeListener({

    //已选定页面发生改变时触发

    onPageSelected: function (index) {

        //  log("上次选中" + tabs_view[selectView]._text.text())

        //设置selectView上次页面 图案和字体颜色为未选中颜色 tabs_data.selectColor.off

        tabs_view[selectView]._src.attr("tint", tabs_data.selectColor.off)

        tabs_view[selectView]._text.setTextColor(colors.parseColor(tabs_data.selectColor.off))

        //设置当前页面 图案和字体颜色为选中颜色 tabs_data.selectColor.on

        tabs_view[index]._src.attr("tint", tabs_data.selectColor.on)

        tabs_view[index]._text.setTextColor(colors.parseColor(tabs_data.selectColor.on))

        //更改标题 title 内容

        ui.toolbar.setTitle(tabs_view[index]._text.text())

        //设置当前页面为 index

        selectView = index

    }

})

 

ui.console.setConsole(runtime.console);

// 设置控制台字体颜色

let c = new android.util.SparseArray();

let Log = android.util.Log;

c.put(Log.VERBOSE, new java.lang.Integer(colors.parseColor("#dfc0c0c0")));

c.put(Log.DEBUG, new java.lang.Integer(colors.parseColor("#cc000000")));

c.put(Log.INFO, new java.lang.Integer(colors.parseColor("#ff64dd17")));

c.put(Log.WARN, new java.lang.Integer(colors.parseColor("#ff2962ff")));

c.put(Log.ERROR, new java.lang.Integer(colors.parseColor("#ffd50000")));

c.put(Log.ASSERT, new java.lang.Integer(colors.parseColor("#ffff534e")));

ui.console.setColors(c);

 

/* 禁止返回键退出脚本 */

ui.emitter.on('back_pressed', function (event) {

    event.consumed = true;

});

//无障碍监听

ui.rootSwith.on("check", function (checked) {

    // 用户勾选无障碍服务的选项时,跳转到页面让用户去开启

    if (checked && auto.service == null) {

        app.startActivity({

            action: "android.settings.ACCESSIBILITY_SETTINGS"

        });

    }

    if (!checked && auto.service != null) {

        auto.service.disableSelf();

    }

})

 

// 当用户回到本界面时,resume事件会被触发

ui.emitter.on("resume", function () {

    // 此时根据无障碍服务的开启情况,同步开关的状态

    ui.rootSwith.checked = auto.service != null;

});

 

threads.start(function(){

    //请求截图

    if (!requestScreenCapture()) {

        ui.run(function(){

            toastLog("请求截图失败!");

        })

        exit();

    }

 

    

    // 屏蔽音量键调节声音

    events.setKeyInterceptionEnabled("volume_up", true);

    //启用按键监听

    events.observeKey();

    //监听音量键按下

    events.onKeyDown("volume_up", () => {

        log('按音量键停止');

        toastLog("停止脚本");

        myApp.isRuning = false;

    

 

        mainThreads.interrupt();

    

      //  exit();   //停止、退出脚本

    });

})



 

var mainThreads = null;

 

ui.startRun.on("click",function(){

    myApp.minHBTime = ui.minHBTime.getText();

    myApp.maxHBTime = ui.maxHBTime.getText();

    threads.start(function(){

      let   fy= floaty.rawWindow(<vertical alpha="0.6">

        <card w="*" h="32" bg="#333333" gravity="center_vertical"><vertical h="auto" padding="15 0 10 0">

            <text id="qNum" text="抢 0 次" textColor="#FFFFFF"/>

        </vertical>

        <View bg="#F44336" w="5" h="*"/></card>

        <card w="*" h="32" bg="#333333" gravity="center_vertical">

        <vertical h="auto" padding="15 0 10 0">

            <text id="qCNum" text="成 0 次" textColor="#FFFFFF"/>

        </vertical>

        <View bg="#4CAF50" w="5" h="*"/></card>

        <card w="*" h="32" bg="#00aa00" gravity="center_vertical"><vertical h="auto" padding="15 0 10 0">

            <text id="hq" text="获取" textColor="#FFFFFF"  />

        </vertical>

        <View bg="#F44336" w="5" h="*"/></card>

        </vertical>);

    

        fy.setPosition(0,700);

        setInterval(()=>{}, 1000);

 

        fy.hq.click(()=>{

            myApp.isRun = !myApp.isRun;

            if(myApp.isRun){

                fy.hq.setText("暂停");

                toastLog("开始抢红包");

                mainThreads =  threads.start(function(){

                    startQ(fy);

                })

            }

            else{

                fy.hq.setText("开始");

                mainThreads.interrupt();

                toastLog("暂停")

            }

         

        })

    })



 

    mainThreads =  threads.start(function(){

       // start();

    })

})



 

function start(){

    sleep(5000);

    ui.run(function(){

        toastLog("开始获取");

    })

    startQ();

 

    return;

    let app = launchApp("抖音");

    sleep(2000);

    log("app:"+app);

    if(app){

        log(currentActivity());

        waitForActivity(myApp.homeActivity);

        sleep(2000);

        if(openZB()){

           sleep(5000);

           popup();

      

            log("1111111111");

            // ui.run(function(){

            //     let w = floaty.rawWindow(<vertical alpha="0.6">

            //     <card w="*" h="32" bg="#333333" gravity="center_vertical"><vertical h="auto" padding="15 0 10 0">

            //         <text id="grab" text="抢 0 次" textColor="#FFFFFF"/>

            //     </vertical>

            //     <View bg="#F44336" w="5" h="*"/></card>

            //     <card w="*" h="32" bg="#333333" gravity="center_vertical">

            //     <vertical h="auto" padding="15 0 10 0">

            //         <text id="succeed" text="成 0 次" textColor="#FFFFFF"/>

            //     </vertical>

            //     <View bg="#4CAF50" w="5" h="*"/></card></vertical>);

 

            //     w.setPosition(0,500);

            //     setInterval(()=>{}, 1000);

            // })

 

            startQ();

 

        }

    }else{

        console.log("启动失败");

        ui.run(function(){

            toastLog("启动失败");

        })

    }

}


 

function startQ(fy){

    ui.run(function(){

        toastLog("开始抢");

    })

    sleep(5000);

   while(true){

 

        if(id("g8k").exists()){

            log("找到紅包");

            let parent = id("g8k").findOne();

           let currentHB = parent.findOne(textContains(":"));

           if(currentHB){

                

                let t = currentHB.text().split(":");

                log(t);

                if(t.length==2){

                    log(t[0] +":"+t[1]);

                    let s = parseInt( t[0])*60+parseInt( t[1]);

                    if(myApp.minHBTime<=s&&myApp.maxHBTime>=s){

                        log("等待抢红包");

                        if(currentHB.bounds().centerX()>0&&currentHB.bounds().centerY()>0){

                            log(currentHB.bounds().centerX()+","+currentHB.bounds().centerY());

                            sleep((s-parseInt( myApp.tqTime))*1000);

                            click(currentHB.bounds().centerX(),currentHB.bounds().centerY());

                           // id("br0").waitFor();

                  

                            if(dd(fy)){

                                if(getHBTime()>0){

                                    continue;

                                }

                            }

                  

                            sleep(5000);

                        }

                    }

                }

           }else{

                log("没有显示红包时间");

           }

        }else{

            log("没找到红包");

            ui.run(function(){

                toast("没找到红包");

            })

        }

      

        swipe(device.width-350,device.height-300,device.width-300,300,random(200,300));

        sleep(8000);

  }

 

}

function getHBTime(){

    if(id("g8k").exists()){

    

        let parent = id("g8k").findOne();

       let currentHB = parent.findOne(textContains(":"));

       if(currentHB){

            let t = currentHB.text().split(":");

            if(t.length==2){

                let s = parseInt( t[0])*60+parseInt( t[1]);

                return s;

            }

        }

        

    }

    return -1;

}

//等待抢

function dd(fy){

    log("1111-->");

    log("----->"+id("br0").exists());

    if(id("br0").exists()){

        let b = id("br0").findOne().bounds();

        log("2222222222");

        if(b.centerX()>0&&b.centerY()>0){

            log("111111111")

            while(true){

                click(b.centerX(),b.centerY());

                if(text("看看大家手气").exists()||id("a7f").exists()){

                    click(device.width-10,device.height/2);

                    myApp.qNum++;

                    ui.run(function(){

                        fy.qNum.setText("已抢"+ myApp.qNum+"次");

                    })

                    return true;

                     break;

                }else if(text("奖励已放入你的账户").exists()){

                    myApp.qCNum++;

                    myApp.qNum++;

                    ui.run(function(){

                        fy.qCNum.setText("已抢"+ myApp.qCNum+"次");

                    })

                  

                    ui.run(function(){

                        fy.qNum.setText("成功"+ myApp.qNum+"次");

                    })

                    return true;

                    break;

                }else if(text("奖励已放入你的礼物背包").exists()){

                    myApp.qCNum++;

                    myApp.qNum++;

                    ui.run(function(){

                        fy.qCNum.setText("成功"+ myApp.qCNum+"次");

                    })

                  

                    ui.run(function(){

                        fy.qNum.setText("已抢"+ myApp.qNum+"次");

                    })

                    return true;

                }else if(text("送你一个好运气").exists()){

                   

                    myApp.qNum++;

                   

                  

                    ui.run(function(){

                        fy.qNum.setText("已抢"+ myApp.qNum+"次");

                    })

                    return true;

                }else{

                    sleep(50);

                }

            }

            

        }

    }

   return false;

}


 

function openZB(){

 

    let img =images.grayscale(captureScreen());

    if(img){

    

          let template = images.grayscale(images.read("./res/zb.png"));

 

        //截图并找图

         var p = findImage(img, template,{

            threshold:0.6

         });

         if(p){

            log("打开直播");

            ui.run(function(){

                toastLog("打开直播");

            })

           click(p.x,p.y);

           sleep(1000);

         }

         template = null;

         return true;

    }else{

 

        sleep(1000);

        log("截图为失败");

    }

    img.recycle();

    ui.run(function(){

        toastLog("打开直播失败请手动打开直播");

    })

    return false;

}



 

function killapp() {

    for (let i = 1; i < 6; i++) {

        app['openAppSetting'](PKG);

        var stop_obj = textMatches('/(.*停止.*|.*结束.*)/')["findOne"](5000);

        if (stop_obj != null) {

            var stop_obj2 = className("Button")["textMatches"]('/(.*停止.*|.*结束.*)/')['findOne'](1000);

            if (stop_obj2 != null) {

                if (stop_obj2["enabled"]() == true) {

                    if (stop_obj2["click"]() == true) {

                        var ok_ojb = className('Button')["text"]('确定')["findOne"](1000);

                        if (ok_ojb != null) {

                            ok_ojb['click']();

                            break;

                        }

                        var stop_contrl = className('Button')["textContains"]('停止')["findOne"](1000);

                        if (stop_contrl != null) {

                            stop_contrl["click"]();

                            break;

                        }

                    }

                } else {

                    break;

                }

            }

        }

 

        sleep(1000)

    }

 

    log('finish-end');

    home()

    sleep(2000)

}

 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值