手把手带你AutoJS自动化脚本开发指南:抖音自动刷视频+AI玩法全解析(附带原源码工具)

手把手带你AutoJS自动化脚本开发指南:抖音自动刷视频+AI玩法全解析(附带原源码工具)

AutoJS 自动化工具介绍

开发工具是自动化中耳熟能详的工具,AutoJS,这个工具是开源免费的,可以自己编译源码定制 app。不想麻烦的直接使用官方的 release 版就行。开发工具就用 VSCode。文章最后给了源码和工具地址,想自己开发自动工具的可以尝试玩玩。

这个工具可以实现手机上任何 app 的自动化,比如:

  • 抖音刷视频
  • 自动回复
  • 微信自动回复
  • 短信通知监控
  • 回调等信息

未来结合 AI 会有更多玩法。建议先使用官方的 app 尝试下使用功能,再去研究源码。

抖音自动化脚本示例

这是我开发的抖音搜索关键词,自动刷视频脚本。当然你可以基于我的代码继续实现:

  • 评论自动回复
  • 自动点赞

效果如下:

图片

开发过程

代码基本都是 AI 生成,调试细节即可实现。开发工具是 VSCode 和官方插件。学习下控件的 id 获取和如何点击功能等。

支持打包和自定义 UI,已经将 UI 设计好了,后续完善每一个平台的细节,界面如下:

图片

自动刷抖音详细代码

// 日志函数 - 添加时间戳
function log(message) {
    var timestamp = newDate().toLocaleTimeString();
    console.log("[" + timestamp + "] " + message);
}

// 主函数
function main() {
    isRunning = true
    log(“========== 抖音搜索自动化开始 ==========”);

    try {
        // 打开抖音
        log(“准备打开抖音APP”);
        launchDouYin();

        // 等待抖音加载
        log(“等待抖音加载(5秒)”);
        sleep(5000);

        // 点击搜索按钮
        log(“准备点击搜索按钮”);
        clickSearchButton();

        // 输入搜索关键词
        var keyword = “虚拟电商”; // 可以修改为你想搜索的关键词
        log(“准备输入搜索关键词: ” + keyword);
        inputSearchKeyword(keyword);

        // 执行搜索
        log(“准备执行搜索操作”);
        performSearch();

        // 处理搜索结果
        log(“准备处理搜索结果”);
        processSearchResults();
    } catch (e) {
        isRunning = false;
        log(“脚本执行出错: ” + e);
    } finally {
        isRunning = false;
        log(“========== 抖音搜索自动化结束 ==========”);
    }
}

// 打开抖音APP
function launchDouYin() {
    var packageName = “com.ss.android.ugc.aweme”; // 抖音包名
    log(“正在启动抖音APP,包名: ” + packageName);
    launch(packageName);
    toast(“正在打开抖音…”);
}

// 点击搜索按钮(优化版)
function clickSearchButton() {
    log(“尝试定位搜索按钮…”);
    // 多种定位方式组合
    var success = false;

    // 方式1:通过desc定位
    log(“尝试通过desc定位搜索按钮”);
    var searchBtn = desc(“搜索”).findOne(2000);
    if (searchBtn) {
        log(“找到desc定位的搜索按钮,准备点击”);
        searchBtn.click();
        toast(“通过desc定位点击搜索按钮”);
        success = true;
    } else {
        log(“未找到desc定位的搜索按钮”);
    }

    sleep(2000);
}

// 输入搜索关键词(使用fullId精准定位)
function inputSearchKeyword(keyword) {
    log(“准备输入搜索关键词: ” + keyword);
    // 等待搜索输入框出现
    log(“尝试通过fullId定位搜索输入框”);
    var inputBox = id(“com.ss.android.ugc.aweme:id/et_search_kw”).findOne(3000);

    if (inputBox) {
        log(“成功定位到搜索输入框,准备输入文本”);
        inputBox.setText(keyword);
        toast(“成功输入搜索关键词: ” + keyword);
    } else {
        log(“无法定位搜索框,使用备用方法输入”);
    }
    sleep(1500);
}

// 执行搜索
function performSearch() {
    log(“准备执行搜索操作”);

    // 方式2:点击界面搜索按钮
    log(“尝试定位界面搜索按钮”);
    var searchButton = text(“搜索”).findOne(1000) || desc(“搜索”).findOne(1000)                      

    if(searchButton) {
        xy = searchButton.bounds()
        log(“找到界面搜索按钮,准备点击”);
        click(xy.centerX(), xy.centerY())
    }

    toast(“正在搜索…”);
    log(“已触发搜索操作,等待3秒”);
    sleep(3000);
}

function processSearchResults() {
    toast(“开始处理搜索结果”);

    log(“尝试点击第一个视频”);

    var vedioButton = text(“视频”).findOne(1000) || desc(“视频”).findOne(1000) 
    click(vedioButton.bounds().centerX(), vedioButton.bounds().centerY());

    likes = id(“com.ss.android.ugc.aweme:id/n6w”).visibleToUser().find()
    // 随机滑动
    for( i = 0; i < randomInt(1, 300); i++) {
        // 随机滑动
        scrollDown();
        sleep(500);
    }

    var firstVideo = id(“com.ss.android.ugc.aweme:id/desc”).visibleToUser().findOne()
    click(firstVideo.bounds().centerX(), firstVideo.bounds().centerY());
    log(“等待20s第一个视频”);
    sleep(22000);

    // 滑动查看结果
    for (var i = 0; i < 5; i++) {
        log(“执行第 ” + (i + 1) + ” 次滑动”);
        scrollDown();

        log(“等待20s查看视频”);
        sleep(randomInt(1500, 3000)); // 随机滑动间隔
        log(“看下一个”);
        scrollDown()  
    }

    toast(“搜索自动化完成”);
    log(“搜索结果处理完成”);
}

// 辅助函数 – 向下滑动
function scrollDown() {
    log(“执行向下滑动操作”);
    var x = device.width / 2;
    var startY = device.height * 2 / 3;
    var endY = device.height / 3;
    swipe(x, startY, x, endY, 500);
    print(“滑动完成” + startY + “——>” + endY)
}

function scrollUp() {
    log(“执行向上滑动操作”);
    var x = device.width / 2;
    var startY = device.height * 2 / 3;
    var endY = device.height / 2;
    swipe(x, endY, x, startY, 500);
    print(“滑动完成” + startY + “——>” + endY)
}

function randomInt(min, max) {
    returnMath.floor(Math.random() * (max – min + 1)) + min;
}

// 运行主函数
// main();
var i = 1;
var max = 20;
var isRunning = false; // flag: 标记 main() 是否正在执行

function runLoop() {
    while (1) {
        if (i >= max) {
            console.log(“所有任务完成”);
            return;
        }

        console.log(“开始第 ” + i + ” 次运行” + isRunning);
        if (!isRunning) { // 如果 main() 没在执行
            console.log(“第 ” + i + ” 次运行”);
            i++;
            main()
        } 
    }
}runLoop(); // 启动


#免费获取源码

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容