AutoJs Pro 7.0.4-1 实战教程---史上最全快音短视频

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: AutoJs Pro 7.0.4-1 实战教程---史上最全快音短视频

邀请码: PG84CG,推荐给大家比较稳定,就是不FHY!

1、自动滑动

2、自动签到

3、自动点赞

4、自动评论

5、曲线直线滑动区分

6、自动概率设定

7、滑动次数限制

8、时间间隔限制并随机4S

9、增加各类行日志如toastlError等

10、依据概率随机上滑

11、依据概率随机下滑

12、自动签到

13、自动提现

13、关闭广告和避开广告

auto.waitFor();
let appName = "快音"
let see_count = 1000;// rawInput('请输入滑动次数','1000');//手动输入滑动次数默认是1000次。
app.launchApp(appName);
console.show();
curveBrushScreen = false;//是否曲线滑动true取消滑动false直线滑动 v_close
probability=10;//概率自动点赞、评论、关注的概率
timesInterval = 8;//间隔时间
sleep(4000);
autoSign(appName);
clickVideoMenu();
for (var i = 1; i < see_count; i++) {
    toastLog(appName + "滑动" + i + "次" + "总计:" + see_count + "次");//系统自带目前我huweinova不显示还不知道为啥
    let x1 = random(device.width * 0.2, device.width * 0.3);
    let y1 = device.height * 0.8
    let x2 = random(device.width * 0.2, device.width * 0.3);
    let y2 = device.height * 0.1
    let pressTime = random(300, 500);
    closeAd();
     //福利页保障
    if (text("每日福利").exists()) {
        clickVideoMenu();
    }
    //我的页保障
    if (text("勋章中心").exists()) {
        clickVideoMenu();
    }
    randomHeart('video_like_parent', probability);//随机点赞
    kuaiYinRandomFollow(probability);
    randomUpSildeScreen(x1, y2, x1, y1, pressTime, probability);
    randomDownSildeScreen(x1, y1, x2, y2, pressTime, timesInterval, probability);
    slideScreenDown(x1, y1, x2, y2, pressTime, timesInterval, curveBrushScreen);
}
autoCashOut();
stopApp(appName);
home();
function clickVideoMenu(){
    if (className("android.widget.TextView").text("视频").exists()) {
        let b = className("android.widget.TextView").text("视频").findOnce().bounds();
        click(b.centerX(), b.centerY());
    }
}
function closeAd() {
    let x1 = random(device.width * 0.2, device.width * 0.3);
    let y1 = device.height * 0.8
    let x2 = random(device.width * 0.2, device.width * 0.3);
    let y2 = device.height * 0.1
    let pressTime = random(300, 500);
    if (id("v_close").exists()) {
        id("v_close").findOnce().click();
    }
    if (text("查看详情").exists()) {
        toastInfo("查看详情在边上滑动防止点击!");
        slideScreenDown(device.width * 0.2, y1, device.width * 0.2, y2, pressTime, timesInterval);
    }
    if (text("立即下载").exists()) {
        toastInfo("立即下载在边上滑动防止点击!");
        slideScreenDown(device.width * 0.2, y1, device.width * 0.2, y2, pressTime, timesInterval);
    }
    if (id("close").exists()) {
        toastInfo("close在边上滑动防止点击!");
        slideScreenDown(device.width * 0.2, y1, device.width * 0.2, y2, pressTime, timesInterval);
    }
}
function autoCashOut() {
    sleep(1000);
    if (text("福利").exists()) {
        let b = text("福利").findOnce().bounds();
        let clickResult = click(b.centerX(), b.centerY());
        if (clickResult) {
            sleep(1000);
            if (text("提现").exists()) {
                text("提现").findOnce().click();
                sleep(1000);
                clickResult = text("去提现").findOnce().click();
                if (clickResult) {
                    console.show();
                    toastLog("提现点击按钮成功");
                }
            }
        }
    }
}
function autoSign(appName) {
    if (text("福利").exists()) {
        let b = text("福利").findOnce().bounds();
        let clickResult = click(b.centerX(), b.centerY());
        if (clickResult) {
            sleep(10000);
            if (text("视频").exists()) {
                let video = className("android.widget.TextView").text("视频").findOnce();
                let b = video.bounds();
                click(b.centerX(), b.centerY());
            }
        }
        else {
            if (className("android.widget.TextView").text("视频").exists()) {
                console.info("快音点击,视频");
                let video = className("android.widget.TextView").text("视频").findOnce();
                let b = video.bounds();
                click(b.centerX(), b.centerY());
            }
        }
    }
}
function kuaiYinRandomFollow(probability) {
    index = random(1, parseInt(probability));
    if (index == 1) {
        if (text("关注").exists()) {
            text("关注").findOnce().click();
        }
    }
}
/**
 * 贝塞尔曲线
 * @param {坐标点} ScreenPoint 
 * @param {偏移量} Offset 
 */
function bezier_curves(ScreenPoint, Offset) {
    cx = 3.0 * (ScreenPoint[1].x - ScreenPoint[0].x);
    bx = 3.0 * (ScreenPoint[2].x - ScreenPoint[1].x) - cx;
    ax = ScreenPoint[3].x - ScreenPoint[0].x - cx - bx;
    cy = 3.0 * (ScreenPoint[1].y - ScreenPoint[0].y);
    by = 3.0 * (ScreenPoint[2].y - ScreenPoint[1].y) - cy;
    ay = ScreenPoint[3].y - ScreenPoint[0].y - cy - by;
    tSquared = Offset * Offset;
    tCubed = tSquared * Offset;
    result = {
        "x": 0,
        "y": 0
    };
    result.x = (ax * tCubed) + (bx * tSquared) + (cx * Offset) + ScreenPoint[0].x;
    result.y = (ay * tCubed) + (by * tSquared) + (cy * Offset) + ScreenPoint[0].y;
    return result;
}
/**
 * 滑动(默认概率是百分之三十)
 * @param {*} qx 
 * @param {*} qy 
 * @param {*} zx 
 * @param {*} zy 
 * @param {*} time 
 * @param {*} timesInterval 
 */
function slideScreenDown(qx, qy, zx, zy, time, timesInterval, CurveBrushScreen) {
    if (CurveBrushScreen) {
        curveDown(qx, qy, zx, zy, time, timesInterval); //曲线概率
    } else {
        lineDown(qx, qy, zx, zy, time, timesInterval); //直线概率
    }
}
/**
 * 概率0-9 大于3的时候采用曲线概率 小于3的时候直线概率
 */
function randomFunction() {
    return Math.floor(Math.random() * 10);
}
function curveDown(qx, qy, zx, zy, time, timesInterval) {
    toastInfo("曲线滑动");
    var xxy = [time];
    var point = [];
    var dx0 = {
        "x": qx,
        "y": qy
    };
    var dx1 = {
        "x": random(qx - 100, qx + 100),
        "y": random(qy, qy + 50)
    };
    var dx2 = {
        "x": random(zx - 100, zx + 100),
        "y": random(zy, zy + 50),
    };
    var dx3 = {
        "x": zx,
        "y": zy
    };
    for (var i = 0; i < 4; i++) {
        eval("point.push(dx" + i + ")");
    };
    for (let i = 0; i < 1; i += 0.08) {
        let newPoint = bezier_curves(point, i);
        xxyy = [parseInt(newPoint.x), parseInt(newPoint.y)]
        xxy.push(xxyy);
    }
    gesture.apply(null, xxy);
    let randomMin = timesInterval * 1000;
    let randomMax = (parseInt(timesInterval) + 2) * 1000;
    let delayTime = random(randomMin, randomMax);
    sleep(delayTime);
}
/**
 * 屏幕向下滑动并延迟8至12秒
 */
function lineDown(startX, startY, endX, endY, pressTime, timesInterval) {
    toastInfo("屏幕向下滑动");
    swipe(startX, startY, endX, endY, pressTime);
    let randomMin = timesInterval * 1000;
    let randomMax = (parseInt(timesInterval) + 2) * 1000;
    let delayTime = random(randomMin, randomMax);
    sleep(delayTime);
}
/**
 * 按照指定概率随机上滑
 * @param {*} startX 
 * @param {*} startY 
 * @param {*} endX 
 * @param {*} endY 
 * @param {*} pressTime 
 * @param {*} probability 
 */
function randomUpSildeScreen(startX, startY, endX, endY, pressTime, probability) {
    let randomIndex = random(1, parseInt(probability));
    if (randomIndex == 1) {
        swipe(startX, startY, endX, endY, pressTime);
        delayTime = random(12000, 15000);
        sleep(delayTime);
    }
}
/**
 * 连续下滑对上一个无兴趣
 * 其实得和上滑做个排他,既然无兴趣不要在上滑
 */
function randomDownSildeScreen(startX, startY, endX, endY, pressTime, timesInterval, probability) {
    let randomIndex = random(1, parseInt(probability));
    if (randomIndex == 1) {
        swipe(startX, startY, endX, endY, pressTime);
        sleep(2000);
        swipe(startX, startY, endX, endY, pressTime);
        sleep(timesInterval);
    }
}
/**
 * 输出Tosat和Info日志
 * @param {日志消息} messagge 
 */
function toastInfo(message) {
    toast(message)
    console.info(message)
}
/**
 * 输出Tosat和Error日志
 * @param {日志消息} messagge 
 */
function toastError(message) {
    toast(message)
    console.error(message)
}
function toastLog(message) {
    toast(message)
    console.log(message)
}
function toastWarn(message) {
    toast(message)
    console.warn(message)
}
/**
 * 按照指定概率随机上滑
 * @param {*} startX 
 * @param {*} startY 
 * @param {*} endX 
 * @param {*} endY 
 * @param {*} pressTime 
 * @param {*} probability 
 */
function randomUpSildeScreen(startX, startY, endX, endY, pressTime, probability) {
    let randomIndex = random(1, parseInt(probability));
    if (randomIndex == 1) {
        swipe(startX, startY, endX, endY, pressTime);
        delayTime = random(12000, 15000);
        sleep(delayTime);
    }
}
/**
 * 连续下滑对上一个无兴趣
 * 其实得和上滑做个排他,既然无兴趣不要在上滑
 */
function randomDownSildeScreen(startX, startY, endX, endY, pressTime, timesInterval, probability) {
    let randomIndex = random(1, parseInt(probability));
    if (randomIndex == 1) {
        swipe(startX, startY, endX, endY, pressTime);
        sleep(2000);
        swipe(startX, startY, endX, endY, pressTime);
        sleep(timesInterval);
    }
}
/**
 * 随机点赞
 * @param {点赞ID}} view_id 
 */
function randomHeart(view_id, probability) {
    index = random(1, parseInt(probability));
    if (index == 1) {
        var target = id(view_id).findOnce();
        if (target == null) {
            return;
        } else {
            target.click();
            sleep(1000);
        }
    }
}
/**
 * 随机关注
 * @param {控件ID} follow_view_id 
 * @param {概率} probability 
 */
function randomFollow(follow_view_id, probability) {
    index = random(1, parseInt(probability));
    if (index == 1) {
        var target = id(follow_view_id).findOnce();
        if (target == null) {
            return;
        } else {
            target.click();
            sleep(1000);
        }
    }
}
/**
 * 强制停止app
 * @param {应用名称} appName 
 */
function stopApp(appName) {
    try {
        openAppSetting(getPackageName(appName));
        sleep(3000);
        if (className("android.widget.Button").text("强行停止").exists()) {
            className("android.widget.Button").text("强行停止").findOnce().click();
        } else {
            if (text("强行停止").exists()) {
                text("强行停止").findOnce().click();
            }
        }
        sleep(3000);
        if (className("android.widget.Button").text("确定").exists()) {
            className("android.widget.Button").text("确定").findOnce().click();
            toastLog(appName + "已经停止!");
        }
        else {
            if (text("强行停止").exists()) {
                text("强行停止").findOnce().click();
                toastLog(appName + "已经停止!");
            } else {
                if (text("结束运行").exists()) {
                    text("结束运行").findOnce().click();
                    sleep(500);
                    if (text("确定").exists()) {
                        text("确定").findOnce().click();
                        toastLog("MIUI9 Android7"+appName + "已经停止!");
                    }
                }
            }
        }
    } catch (e) {
        toastLog(e);
    }
}

 

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
JavaScript Android开发
AutoJs4.1.0实战教程---js文件打包发布成APK文件
AutoJs4.1.0实战教程---js文件打包发布成APK文件
1753 0
AutoJs4.1.0实战教程---js文件打包发布成APK文件
AutoJs4.1.0实战教程---抖音极速版
AutoJs4.1.0实战教程---抖音极速版
417 0
Autojs4.1.0实战教程---抖音极速版自动评论
Autojs4.1.0实战教程---抖音极速版自动评论
506 1
|
JavaScript Android开发
使用贝叶斯曲线滑动安卓屏幕(autojsPro7)
使用贝叶斯曲线滑动安卓屏幕(autojsPro7)
452 0
|
存储 关系型数据库 数据处理
OceanBase数据库常见问题之start ob出错如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
API 开发工具 开发者
抖音商品详情API入门:为开发者和商家打造增长工具箱
抖音商品详情API入门:为开发者和商家打造增长工具箱
|
12月前
|
机器学习/深度学习 人工智能 算法
Agent Q:具备自我学习、评估的智能体
近年来,人工智能领域取得了显著进步,特别是智能体技术备受瞩目。智能体作为AI系统核心,能自主学习、决策和执行任务,应用广泛。Agent Q作为一种具备自我学习和评估能力的智能体,通过强化学习算法,能自动优化行为策略,适应复杂环境,无需人工干预。此外,它还能根据评估指标调整策略,持续提升任务完成质量。尽管存在复杂环境适应性和计算资源消耗等挑战,Agent Q仍为智能机器人、自动驾驶等领域的应用提供了新思路,推动了AI技术的发展。论文详细内容可在此处获取:https://multion-research.s3.us-east-2.amazonaws.com/AgentQ.pdf
378 1
|
数据可视化 数据格式 Python
Matplotlib绘图从零入门到实践(含各类用法详解)
本文是一份全面的Matplotlib绘图库教程,涵盖了从基础到高级的各类用法,包括安装、基础图形绘制、调节设置、数值处理、图形美化、动画制作等,并提供了理论讨论和实例项目,旨在帮助读者从零开始学习并掌握Python中的Matplotlib绘图。
477 0
AutoJs Pro 7.0.4-1 实战教程---史上最全抖音极速版
AutoJs Pro 7.0.4-1 实战教程---史上最全抖音极速版
503 0
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp微信小程序的投票评选系统的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的投票评选系统的详细设计和实现
210 0