最新今日头条直播间抢红包福袋脚本源码下载

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-30 09:13   36   0

现在每个app的直播间都会发红包,正常情况我们是一直守在旁边抢就行了,但是这样的效率太低。今天我就分享一个可以24小时挂机自动抢红包的脚本,操作简单,一键启动.

脚本核心源码:

importClass(android.view.View);
const dx = device.width, dy = device.height;//获取屏幕的宽和高
setInterval(() => { }, 1000);
threads.start(function () {
    var mainWindow = '<vertical>\
    <img id="center" margin="1" w="40" h="40" src="https://s1.ax1x.com/2020/08/23/d0swbd.png" />\
    <button id="start" margin="1" w="40" color="#ffffff" bg="#FF4FB3FF" foreground="?selectableItemBackground">开始</button>\
    <button id="stop" margin="1" w="40" visibility="gone" color="#ffffff" bg="#FF4FB3FF" foreground="?selectableItemBackground">暂停</button>\
    <button id="exit" margin="1" w="40" color="#ffffff" bg="#FF4FB3FF" foreground="?selectableItemBackground">退出</button>\
</vertical>';
    var window = floaty.window(mainWindow);
    window.setPosition(10, dy / 2);
    var x = 0,
        y = 0,
        windowX = 0,
        windowY = 0,
        isRuning = false,
        isShowingAll = true;
    //脚本主进程
    var LuckyMoneyMainEngine;
    window.center.setOnTouchListener(function (view, event) {
        switch (event.getAction()) {
            case event.ACTION_DOWN:
                x = event.getRawX();
                y = event.getRawY();
                windowX = window.getX();
                windowY = window.getY();
                break;
            case event.ACTION_MOVE:
                window.setPosition(windowX + (event.getRawX() - x), windowY + (event.getRawY() - y));
                break;
            case event.ACTION_UP:
                if (Math.abs(event.getRawY() - y) < 5 && Math.abs(event.getRawX() - x) < 5) {
                    ui.run(function () {
                        if (isShowingAll) {
                            isShowingAll = false;
                            window.start.setVisibility(View.GONE);
                            window.stop.setVisibility(View.GONE);
                            window.exit.setVisibility(View.GONE);
                        } else {
                            isShowingAll = true;
                            if (isRuning) {
                                window.start.setVisibility(View.GONE);
                                window.stop.setVisibility(View.VISIBLE);
                            } else {
                                window.start.setVisibility(View.VISIBLE);
                                window.stop.setVisibility(View.GONE);
                            }
                            window.exit.setVisibility(View.VISIBLE);
                        }
                    });
                }
                break;
        }
        return true;
    });
    window.start.click(function () {
        if (!isRuning) {
            startAuto();
        }
        isRuning = true;
        ui.run(function () {
            window.start.setVisibility(View.GONE);
            window.stop.setVisibility(View.VISIBLE);
        });
    });
    function startAuto() {
        threads.start(function () {
            LuckyMoneyMainEngine = engines.execScript("FastFox", "LuckyMoneyMain();\n" + LuckyMoneyMain.toString());
        });
    }
    function stopAuto() {
        if (isRuning) {
            LuckyMoneyMainEngine.getEngine().forceStop();
        }
        isRuning = false;
        ui.run(function () {
            window.start.setVisibility(View.VISIBLE);
            window.stop.setVisibility(View.GONE);
        });
        threads.shutDownAll();
    }
    window.stop.click(stopAuto);
    window.exit.click(function () {
        exit();
    });
});
///红包主程序
function LuckyMoneyMain() {
    const _HS_PACKAGENAME = "com.ss.android.ugc.live";//抖音package名称
    const _HS_LIVE_ACTIVITY = "com.ss.android.ugc.live.live.ui.LiveDetailActivity";//抖音package名称
    const dx = device.width, dy = device.height;//获取屏幕的宽和高
    var STORAGE = storages.create(device.getAndroidId());
    var clickTime = Number(STORAGE.get("CLICKTIME", "1.28")) * 1000;// 点击时间,毫秒ms
    var _SUM_FAIL_COUNT = 0, _SUM_GAIN_COUNT = 0;//失败次数——成功次数
    console.show();
    console.setSize(200, 200);
    console.setPosition(dx / 3, 0);
    console.log("启动" + app.getAppName(_HS_PACKAGENAME));
    //app.launch(_HS_PACKAGENAME);
    console.warn("请手动进入一个直播间..");
    //等待进入直播间 
    waitForActivity(_HS_LIVE_ACTIVITY, 1000);
    //处理弹框的进程
    threads.start(function () {
        while (true) {
            if (idContains("st").textContains("关注主播,不错过任何一次直播").exists() && idContains("avr").textContains("关注").exists()) {
                console.warn(">>处理弹框..");
                click(dx - 10, dy / 2);
            }
            if (idContains("beu").textContains("送我一个").exists() && idContains("ebr").textContains("立即赠送").exists()) {
                console.warn(">>处理弹框..");
                click(dx - 10, dy / 2);
            }
            sleep(2000);
        }
    });
    while (true) {
        console.info(">>寻找红包...");
        console.info(">>总:" + (_SUM_GAIN_COUNT + _SUM_FAIL_COUNT) + "--得:" + _SUM_GAIN_COUNT + "--失:" + _SUM_FAIL_COUNT);
        while (true) {
            //直播结束的判断 
            if (idContains("ttlive_tv_end_label").textContains("直播已结束").exists()) {
                console.info(">>当前直播结束..翻..")
                swipeUp();
                continue;
            }
            //寻找红包
            var luckyMoney = idMatches(/(.*cwg.*|.*red_envelope_content.*)/).findOne(4 * 1000);
            if (luckyMoney == null || !luckyMoney) {
                console.info(">>当前没有红包..翻..")
                swipeUp();
                continue;
            }
            var luckyMoneyTime = 0;//分别为红包的点击时间和红包的数量
            //处理歪包(根据用户头像)
            if (luckyMoney.id().indexOf("iv_user_avatar") != -1) {
                var luckyMoneyFrame = luckyMoney.parent().parent().parent();//红包的父集-父集
                luckyMoneyFrame.children().forEach(function (child) {
                    if (child.className() == "android.widget.TextView") {
                        var temp = child.text();
                        if (temp.indexOf(":") != -1) {
                            luckyMoneyTime = temp;
                        }
                    }
                });
            }
            //处理直包(根据红包)
            if (luckyMoney.id().indexOf("cwg") != -1) {
                if (id("e3o").exists()) {
                    luckyMoneyTime = id("e3o").findOne().text();
                }
            }
            //将时间转换为秒钟
            if (luckyMoneyTime != 0) {
                luckyMoneyTime = timeToSec(luckyMoneyTime);
            }
            console.log(luckyMoneyTime);
            //大于12秒的红包,重新寻找,2秒轮循环
            if (luckyMoneyTime > 12) {
                console.log(">.等待..或者重新寻找..");
                sleep(2 * 1000);
                continue;
            }
            //否则点击进入红包
            clickWidget(luckyMoney);
            sleep(500);
            break;
        }
        //就用来处理进入红包,并且进行时间校准
        var luckyMoneyTimeMs = 0;
        if (idContains("e3o").exists()) {
            var localMs = Number(idContains("e3o").findOne().text());
            //大于4秒的包,时间校准,否则直接抢
            if (localMs >= 3) {
                var nextMs = localMs;
                while (true) {
                    if (idContains("e3o").exists()) {
                        nextMs = Number(idContains("e3o").findOne().text());
                    }
                    if ((localMs - nextMs) >= 1) {
                        break;
                    }
                    //sleep(10);
                }
                luckyMoneyTimeMs = nextMs * 1000;
            }
            console.log(">>当前时间" + luckyMoneyTimeMs);
            //等待,直到抢包时间
            if (luckyMoneyTimeMs > clickTime) {
                sleep(luckyMoneyTimeMs - clickTime);
            }
        }
        console.log("开抢");
        idContains("d1r").clickable(true).exists() ? idContains("d1r").clickable(true).findOne().click() : click(dx / 2, dy / 2);
        sleep(2 * 1000);
        //成功次数
        if (textContains("奖励已放入").exists()) {
            _SUM_GAIN_COUNT = _SUM_GAIN_COUNT + 1;
            back();
        }
        //失败次数
        if (textContains("手慢了").exists()) {
            _SUM_FAIL_COUNT = _SUM_FAIL_COUNT + 1;
            back();
        }
        sleep(2 * 1000);
    }
    //以下是公共参数//
    //向上滑动/加载
    function swipeUp() {
        swipe(dx * (2 / 3), dy * (5 / 6), dx * (2 / 3), dy * (2 / 6), 100);
        sleep(2 * 1000);
    }
    //点击控件的公共函数
    //入参:widget 控件
    function clickWidget(widget) {
        if (widget) {
            var x = widget.bounds().centerX()
            var y = widget.bounds().centerY()
            //log('将要点击的坐标 %s,%s', x, y)
            click(x, y);
        }
    }
    //将分-秒转换
    function timeToSec(localtime) {
        var min = localtime.split(':')[0];
        var sec = localtime.split(':')[1];
        return Number(min * 60) + Number(sec);
    }
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP