├── BossAutojs-复聊.js
├── BossAutojs-打招呼.js
├── README.md
├── cardList.json
├── index.html
├── indexPhone.html
├── main.js
├── project.json
├── 定时微信自动发消息.js
├── 应用商店软件更新永久忽略.js
├── 微信主界面自动回复.js
├── 微信消息多发.js
├── 微信自动Ai回复toast监听.js
├── 指定联系朋友圈点赞.js
├── 消息轰炸.js
├── 酷安自动点赞.js
└── 音乐搜索.js
/BossAutojs-复聊.js:
--------------------------------------------------------------------------------
1 | auto.waitFor()
2 | launchApp("BOSS直聘")
3 | text("消息").findOne().parent().click()
4 | sleep(1000)
5 | swipe(800, 2600, 1200, 1600, 200)
6 | sleep(500)
7 | var strArray = [
8 | '我们是饿了么专送,招聘外卖送餐员,月薪7千到一万+,上不封顶,多劳多得的',
9 | '我们现在正在招聘外卖送餐员,站点直招,非中介!工资在7000—14000,会骑电动车,会看导航就行,前期有老手带。',
10 | '你好,我们这份是送餐员的工作,月薪6k-13k以上,多劳多得,新员工会有老骑手一对一培训,不用担心没有经验,公司免费提供电动车,0元入职,多个选择多个机会哦,有兴趣聊一下吗?',
11 | '已读不回是有什么顾虑吗'
12 | ]
13 | chat_again()
14 |
15 | function chat_again() {
16 | className("android.widget.ExpandableListView").scrollable(true).findOne().children().forEach(child => {
17 | sleep(500)
18 | //toastLog(child);
19 | var msg = child.children().findOne(id('tv_msg')).getText()
20 | var msg_status = child.children().findOne(id('iv_msg_status'))
21 | //toastLog(msg_status+'>'+msg)
22 | if (msg != '好的' &&
23 | msg_status &&
24 | msg_status.getText() == '[已读]'
25 | ) {
26 | var bounds = child.bounds();
27 | if (bounds) {
28 | var centerX = bounds.centerX();
29 | var centerY = bounds.centerY();
30 | click(centerX, centerY);
31 | } else {
32 | toastLog("无法获取控件区域!");
33 | }
34 | sendMsg(strArray)
35 | id("iv_back").findOne().click()
36 | sleep(500)
37 | }
38 | });
39 | toastLog('滑动屏幕')
40 | swipe(800, 2950, 1000, 250, 200)
41 | chat_again()
42 | }
43 | //发送单条或者多条消息
44 | function sendMsg(str) {
45 | for (var i = 0; i < strArray.length ; i++) {
46 | className("android.widget.EditText").setText(strArray[i])
47 | //toastLog('发送')
48 | var imgArray = className('android.widget.ImageView').find()
49 | sleep(200)
50 | imgArray[imgArray.length - 1].click()
51 | sleep(200)
52 | }
53 | }
--------------------------------------------------------------------------------
/BossAutojs-打招呼.js:
--------------------------------------------------------------------------------
1 | auto.waitFor();
2 | launchApp("BOSS直聘")
3 | sayHello()
4 |
5 | function sayHello() {
6 | text("牛人").findOne().parent().click()
7 | sleep(2000)
8 | id("rv_list").className("androidx.recyclerview.widget.RecyclerView").scrollable(true).findOne().children().forEach(child => {
9 | //关闭广告
10 | var ads = child.findOne(id("cl_ads_guide_card"));
11 | if (ads != null && ads != '') {
12 | var adsX = ads.children().findOne(id("iv_close"));
13 | adsX.click();
14 | }
15 | //判断是否在线
16 | var target = child.findOne(id("iv_online_state"));
17 | if (target != '' && target != null) {
18 | child.click()
19 | sleep(500)
20 | if (className("android.widget.Button").text("立即沟通").exists()) {
21 | sleep(1000)
22 | var targetText = '偏好工作地点'
23 | /*while (!textContains(targetText).exists()) {
24 | //toastLog('循环')
25 | swipe(1000, 2300, 1100 , 1800 , 800)
26 | //swipe(device.width / 2, device.height * 0.8, device.width / 2, device.height * 0.2, 500);
27 | //sleep(2000)
28 | }*/
29 | // 获取目标文本后的内容
30 | textAfterTarget = textContains(targetText).findOne().text();
31 | //toastLog(textAfterTarget)
32 |
33 | // 判断内容是否包含宝安区或龙岗区
34 | var isValidLocation = textAfterTarget.includes('宝安区') || textAfterTarget.includes('龙岗区');
35 | if (isValidLocation) {
36 | toastLog("位置符合要求");
37 | /*text('立即沟通').findOne().click()
38 | sleep(1000)
39 | className("android.widget.EditText").setText('你好,我们这份是送餐员的工作,月薪6k-13k以上,多劳多得,新员工会有老骑手一对一培训,不用担心没有经验,公司免费提供电动车,0元入职,多个选择多个机会哦,有兴趣聊一下吗?')
40 | sleep(500)
41 | var imgArray = className('android.widget.ImageView').find()
42 | imgArray[imgArray.length - 1].click()
43 | sleep(1000)
44 | id("iv_back").findOne().click()
45 | sleep(500)*/
46 | }
47 | id("iv_back").findOne().click()
48 | sleep(1000)
49 | } else {
50 | sleep(500)
51 | id("iv_back").findOne().click()
52 | sleep(500)
53 | }
54 | }
55 | });
56 | sayHello();
57 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | <<<<<<< HEAD
2 | # autojs自动化脚本
3 | ###### 需要搭配autojs使用,开启无障碍权限
4 | ###### 前面发的只支持微信8.0.40版
5 | #### main.js适配的是微信8.0.42
6 | - 微信定时给指定的联系人发消息。
7 | - 微信自动回复Wechat
8 | - 酷安自动点赞Coolpak
9 | - 详见其他仓库已打包。
10 | =======
11 | # WeChat 自动聊天回复
12 | ##
13 | >>>>>>> wechat/main
14 |
--------------------------------------------------------------------------------
/cardList.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "title": "功能1",
4 | "url": "https://pic.rmb.bdstatic.com/bjh/171cd6cf9e22e5a8ac1567725a71a8e4.jpeg"
5 | },
6 | {
7 | "title": "功能2",
8 | "url": "https://pic.rmb.bdstatic.com/bjh/f99b58ad941c90bb94d2c8969d5a7fb7.jpeg"
9 | },
10 | {
11 | "title": "功能3",
12 | "url": "https://pic.rmb.bdstatic.com/bjh/d3de1d7f8b4381e952de1499d4892329.jpeg"
13 | },
14 | {
15 | "title": "功能4",
16 | "url": "https://pic.rmb.bdstatic.com/bjh/b97040da6b4d791391a96dea7acf1580.jpeg"
17 | },
18 | {
19 | "title": "功能5",
20 | "url": "https://pic.rmb.bdstatic.com/bjh/8dd74c59886964ffdda4401ea4bf78ed.jpeg"
21 | },
22 | {
23 | "title": "功能6",
24 | "url": "https://pic.rmb.bdstatic.com/bjh/3cbb35d423544aac493178079c200913.jpeg"
25 | },
26 | {
27 | "title": "功能7",
28 | "url": "https://pic.rmb.bdstatic.com/bjh/791d0f965a41243b994f47247e84d722.jpeg"
29 | },
30 | {
31 | "title": "功能8",
32 | "url": "https://picsum.photos/800"
33 | }
34 |
35 | ]
36 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 | index
13 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
185 |
186 |
--------------------------------------------------------------------------------
/indexPhone.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | index
6 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
211 |
212 |
--------------------------------------------------------------------------------
/main.js:
--------------------------------------------------------------------------------
1 | auto.waitFor();
2 | console.show();
3 | log("****微信自动回复聊天脚本****")
4 | log("**********开始运行**********")
5 | <<<<<<< HEAD
6 | //启动一个线程
7 | var firstThread = threads.start(function() {
8 | //toast监听悬浮窗通知
9 | events.observeToast();
10 | events.onToast(function(toast) {
11 | // 发微信消息
12 | function sendAiMessageByName(name) {
13 | launchApp("微信"); //打开微信
14 | sleep(1000);
15 | //在联系人界面时
16 | if (name[0] == id("obn").findOne().getText()) {
17 | log("进去悬浮窗通知聊天")
18 | //点击聊天输入框
19 | id("kii").findOne().parent().click();
20 | var res = http.get("http://api.qingyunke.com/api.php?key=free&appid=0&msg=" + name[1]);
21 | if (res.statusCode != 200) {
22 | log("请求失败: " + res.statusCode + " " + name[1]);
23 | } else {
24 | var r_msg = res.body.json();
25 | setText(r_msg.content);
26 | sleep(500);
27 | text('发送').findOne().click(); //点击发送
28 | log("消息发送成功");
29 | //回主界面
30 | id("he").findOne().click();
31 | sleep(300);
32 | id("b5i").findOne().click();
33 | swipe(1400, 1800, 1100, 2000, 400);
34 | }
35 | } else {
36 | //checkNewMsg();
37 | id("jha").findOne().click(); //搜索联系人
38 | //填入联系人
39 | id("d98").findOne().setText(name[0]);
40 | sleep(1000);
41 | //搜索到联系人后点击进去聊天界面
42 | id("odf").findOne().parent().click();
43 | sleep(500);
44 | //点击聊天输入框
45 | id("o4q").findOne().parent().click();
46 | //设置文本消息自动聊天
47 | res = http.get("http://api.qingyunke.com/api.php?key=free&appid=0&msg=" + name[1]);
48 | if (res.statusCode != 200) {
49 | log("请求失败: " + res.statusCode + " " + res.statusMessage);
50 | } else {
51 | r_msg = res.body.json();
52 | setText(r_msg.content);
53 | }
54 | sleep(500);
55 | text('发送').findOne().click(); //点击发送
56 | log("消息发送成功");
57 | //回主界面
58 | id("he").findOne().click();
59 | sleep(300);
60 | id("b5i").findOne().click();
61 | swipe(1400, 1800, 1100, 2000, 400);
62 | }
63 | }
64 | // 解锁
65 | function unlockPhone(password) {
66 | if (!device.isScreenOn()) {
67 | device.wakeUpIfNeeded();
68 | sleep(100);
69 | swipe(800, 2600, 1200, 1600, 600);
70 | for (var i = 0; i < password.length; i++) {
71 | n = text(password[i].toString()).findOne();
72 | n.parent().click();
73 | sleep(600);
74 | }
75 | }
76 | }
77 | =======
78 | // 解锁
79 | function unlockPhone(password) {
80 | if (!device.isScreenOn()) {
81 | device.wakeUpIfNeeded();
82 | log("wake");
83 | swipe(800, 2600, 1200, 1600, 500);
84 | for (var i = 0; i < password.length; i++) {
85 | n = text(password[i].toString()).findOne();
86 | n.parent().click();
87 | }
88 | }
89 | }
90 | threads.start(function(){
91 | events.observeToast()
92 | events.onToast(function (toast) {
93 | >>>>>>> wechat/main
94 | var pkg = toast.getPackageName();
95 | log("Toast内容: " + toast.getText() +
96 | " 来自: " + getAppName(pkg) +
97 | " 包名: " + pkg);
98 | <<<<<<< HEAD
99 | var nameAndMessageSet = toast.getText().toString().split(":");
100 | =======
101 | >>>>>>> wechat/main
102 | if (pkg == "com.tencent.mm" && currentActivity().search('com.tencent.mm') == -1) {
103 | // var nameAndMessageSet = toast.getText().toString().split(":");
104 | // 锁屏密码
105 | var password = [0, 8, 1, 7];
106 | // 解锁手机
107 | unlockPhone(password);
108 | <<<<<<< HEAD
109 | // 到达主屏
110 | sendAiMessageByName(nameAndMessageSet);
111 | }
112 | });
113 | toast("监听中,请在日志中查看记录的Toast及其内容");
114 | });
115 | //启动另一个线程
116 | var sonThread = threads.start(function() {
117 | //微信无悬浮通知时,但在微信界面
118 | setInterval(function() {
119 | inChatSendMsg();
120 | //主界面监控界面发消息
121 | function inChatSendMsg() {
122 | //主界面找到发消息的人,进去聊天界面
123 | var kmvSet = id("o_u").find();
124 | if (kmvSet.length > 0) {
125 | log("有" + kmvSet.length + "个联系人给你发消息");
126 | //单个联系人发的消息数量
127 | msgNum = kmvSet[0].getText();
128 | /*通过子控件获取父控件
129 | var child = ui.findOne(new UiSelector().text("child"));
130 | var parent = child.parent();
131 | */
132 | //进去聊天界面
133 | kmvSet[0].parent().click();
134 | var name = id("obn").findOne().getText();
135 | log("进入*" + name + "*聊天对话");
136 | if (name != "微信运动" && name != "微信支付" && name != "QQ邮箱提醒") {
137 | //id("he").findOne().click();
138 | var all_msg = id("bkl").find();
139 | if (all_msg.length > 0) {
140 | var new_msg = all_msg[all_msg.length - 1].text();
141 | log("新消息*" + new_msg + "*");
142 | var res = http.get("http://api.qingyunke.com/api.php?key=free&appid=0&msg=" + new_msg);
143 | if (res.statusCode != 200) {
144 | log("请求失败: " + res.statusCode + " " + res.statusMessage);
145 | } else {
146 | var r_msg = res.body.json();
147 | sendMsg = r_msg.content;
148 | setText(sendMsg);
149 | text('发送').findOne().click(); //点击
150 | log("消息发送成功");
151 | sleep(2000);
152 | id("he").findOne().click();
153 | }
154 | } else {
155 | log("未找到消息");
156 | id("he").findOne().click();
157 | }
158 | } else {
159 | log("自动退出");
160 | id("he").findOne().click();
161 | }
162 |
163 | }
164 | }
165 | }, 3000)
166 | });
167 | //检测是否在主界面 微信 通讯录 发现 我
168 | function checkNewMsg() {
169 | if (id("he").exists()) {
170 | log("聊天界面");
171 | id("he").findOne().click();
172 | }
173 | //退出订阅号
174 | if (className("android.view.View").desc("订阅号消息").exists()) {
175 | className("android.widget.ImageView").desc("返回").findOne().click();
176 | }
177 | //点击左下角微信
178 | text("微信").findOne().parent().click();
179 | }
180 | =======
181 | launchApp("微信");
182 | }
183 | });
184 | })
185 | //主线程
186 | do {
187 | sleep(3000);
188 | inChatSendMsg();
189 | } while (true);
190 | //主界面监控界面发消息
191 | function inChatSendMsg() {
192 | //主界面找到发消息的人,进去聊天界面
193 | var kmvSet = id("o_u").find();
194 | if (kmvSet.length > 0) {
195 | log("有" + kmvSet.length + "个联系人给你发消息");
196 | //单个联系人发的消息数量
197 | msgNum = kmvSet[0].getText();
198 | /*通过子控件获取父控件
199 | var child = ui.findOne(new UiSelector().text("child"));
200 | var parent = child.parent();
201 | */
202 | //进去聊天界面
203 | kmvSet[0].parent().parent().parent().click();
204 | var name = id("obn").findOne().getText();
205 | log("进入*" + name + "*聊天对话"+"-新消息:"+msgNum);
206 | if (name != "微信运动" && name != "微信支付" && name != "QQ邮箱提醒") {
207 | //id("he").findOne().click();
208 | var all_msg = id("bkl").find();
209 | if (all_msg.length > 0) {
210 | //最新的消息
211 | var new_msg = all_msg[all_msg.length - 1].text();
212 | log("新消息*" + new_msg + "*");
213 | var res = http.get("http://api.qingyunke.com/api.php?key=free&appid=0&msg=" + new_msg);
214 | if (res.statusCode != 200) {
215 | log("请求失败: " + res.statusCode + " " + res.statusMessage);
216 | } else {
217 | var r_msg = res.body.json();
218 | sendMsg = r_msg.content;
219 | setText(sendMsg);
220 | text('发送').findOne().click(); //点击
221 | log("消息发送成功");
222 | sleep(2000);
223 | id("he").findOne().click();
224 | }
225 | } else {
226 | log("未找到消息");
227 | id("he").findOne().click();
228 | }
229 | } else {
230 | log("自动退出");
231 | id("he").findOne().click();
232 | }
233 | }
234 | }
235 | >>>>>>> wechat/main
236 |
--------------------------------------------------------------------------------
/project.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "WeChat",
3 | "main": "main.js",
4 | "ignore": [
5 | "build"
6 | ],
7 | "packageName": "org.autojs.wechat",
8 | "versionName": "1.0.0",
9 | "versionCode": 1
10 | }
--------------------------------------------------------------------------------
/定时微信自动发消息.js:
--------------------------------------------------------------------------------
1 | /*微信自动发消息
2 | 可以把具体的步骤分解如下 :
3 |
4 | 如果手机在休眠,则唤醒屏幕解锁 ,否则直接下一步;
5 | 启动微信 ;
6 | 主界面直接搜索联系人,进去聊天界面,发消息
7 | 回主界面;
8 | auto.js 设定定时执行脚本, 每天6:30自动执行 ;
9 | 代码如下:*/
10 | // 解锁
11 | function unlockPhone(password) {
12 | if (!device.isScreenOn()) {
13 | device.wakeUpIfNeeded();
14 | sleep(100);
15 | swipe(800, 2600, 1200, 1600, 800);
16 | for (var i = 0; i < password.length; i++) {
17 | n = text(password[i].toString()).findOne();
18 | n.parent().click();
19 | sleep(600);
20 | }
21 | }
22 | }
23 | // 发微信消息
24 | function sendMessageByName(name) {
25 | launchApp("微信"); //打开微信
26 | //sleep(500); //避免卡顿
27 | id("gsl").findOne().click(); //搜索联系人
28 | //填入联系人
29 | id("cd7").findOne().setText(name);
30 | sleep(1000);
31 | //搜索到联系人后点击进去聊天界面
32 | id("kpm").findOne().parent().click();
33 | //点击聊天输入框
34 | id("kii").findOne().parent().click();
35 | //设置文本消息
36 | setText("晚安");
37 | //sleep(500);
38 | id("b8k").findOne().click(); //点击发送
39 | //回主界面
40 | id("g0").findOne().click();
41 | id("apy").findOne().click();
42 | }
43 | auto.waitFor(); //无障碍检测
44 | setScreenMetrics(1440, 3200); //设置屏幕像素
45 | // 锁屏密码
46 | password = [0, 8, 1, 7];
47 | // 解锁手机
48 | unlockPhone(password);
49 | // 到达主屏
50 | sendMessageByName("17305218161");
51 |
--------------------------------------------------------------------------------
/应用商店软件更新永久忽略.js:
--------------------------------------------------------------------------------
1 | auto.waitFor();
2 | launchApp("应用商店")
3 | sleep(1000)
4 | text("我的").findOne().parent().click()
5 | sleep(500)
6 | text("应用升级").findOne().parent().click()
7 | sleep(500)
8 | while (true) {
9 | id("update_details").findOne().click();
10 | sleep(100);
11 | id("ignore_permanently").findOne().click();
12 | sleep(100);
13 | }
--------------------------------------------------------------------------------
/微信主界面自动回复.js:
--------------------------------------------------------------------------------
1 | auto.waitFor();
2 |
3 | console.show();
4 | log("微信自动聊天机器人");
5 | launchApp("微信");
6 | sleep(1000);
7 | //等有收到新消息
8 | while (true) {
9 | sleep(1000)
10 | var kmvSet = id("kmv").find();
11 | if (kmvSet.length == 0) {
12 | log("没有新消息");
13 | } else if (kmvSet.length > 0) {
14 | log("有" + kmvSet.length + "联系人给你发消息");
15 | //单个联系人发的消息数量
16 | msgNum = kmvSet[0].getText();
17 | //log(kmvSet[i]);
18 | /*通过子控件获取父控件
19 | var child = ui.findOne(new UiSelector().text("child"));
20 | var parent = child.parent();
21 | */
22 | //进去聊天界面
23 | kmvSet[0].parent().click();
24 | //调用在聊天界面发消息的方法
25 | inChatSendMsg()
26 | }
27 | }
28 | //聊天界面发消息
29 | function inChatSendMsg() {
30 | id("hp").findOne().children().forEach(child => {
31 | var target = child.findOne(id("b4b"));
32 | if (target) {
33 | child.click();
34 | log("进入*" + id("ko4").findOne().getText() + "*聊天对话");
35 | id("kii").findOne().click();
36 | var sendMsg = "";
37 | var all_msg = id("b4b").find();
38 | var new_msg = all_msg[all_msg.length - 1].text();
39 | if (sendMsg != new_msg) {
40 | if (all_msg.length > 0) {
41 | log("新消息*" + new_msg + "*");
42 | var res = http.get("http://api.qingyunke.com/api.php?key=free&appid=0&msg=" + new_msg);
43 | if (res.statusCode != 200) {
44 | log("请求失败: " + res.statusCode + " " + res.statusMessage);
45 | } else {
46 | var r_msg = res.body.json();
47 | sendMsg = r_msg.content;
48 | setText(sendMsg);
49 | sleep(1000);
50 | id("b8k").findOne().click(); //点击
51 | log("消息发送成功");
52 | sleep(2000);
53 | id("g0").findOne().click();
54 | id("apy").findOne().click();
55 | }
56 | } else {
57 | log("未找到聊天消息")
58 | }
59 | }
60 | }
61 | })
62 | }
--------------------------------------------------------------------------------
/微信消息多发.js:
--------------------------------------------------------------------------------
1 | //适配微信8.0.42版
2 | //聊天窗口,悬浮窗内开启脚本
3 | auto.waitFor();
4 | //任意条自定义消息逗号隔开
5 | var strArray = [
6 | "这是第一条消息",
7 | "这是第二条消息",
8 | "这是第三条消息",
9 | ]
10 | //发送单条或者多条消息
11 | function sendMsg() {
12 | for (var i = 0; i < strArray.length ; i++) {
13 | id("bkk").className("android.widget.EditText").findOne().setText(strArray[i])
14 | //toastLog('发送')
15 | text("发送").findOne().click();
16 | }
17 | sendMsg()
18 | }
19 | sendMsg()
--------------------------------------------------------------------------------
/微信自动Ai回复toast监听.js:
--------------------------------------------------------------------------------
1 | auto();
2 | events.observeToast();
3 | events.onToast(function(toast) {
4 | // 发微信消息
5 | function sendAiMessageByName(name) {
6 | launchApp("微信"); //打开微信
7 | //sleep(500); //避免卡顿
8 | if (!id("dl").exists()) {
9 | //点击左下角微信
10 | id("kd_").className("android.widget.RelativeLayout").clickable(true).selected(true).findOne().click();
11 | }
12 | id("gsl").findOne().click(); //搜索联系人
13 | //填入联系人
14 | id("cd7").findOne().setText(name[0]);
15 | sleep(800);
16 | //搜索到联系人后点击进去聊天界面
17 | id("kpm").findOne().parent().click();
18 | //点击聊天输入框
19 | id("kii").findOne().parent().click();
20 | //设置文本消息自动聊天
21 | var res = http.get("http://api.qingyunke.com/api.php?key=free&appid=0&msg=" + name[1]);
22 | if (res.statusCode != 200) {
23 | log("请求失败: " + res.statusCode + " " + res.statusMessage);
24 | } else {
25 | var r_msg = res.body.json();
26 | setText(r_msg.content);
27 | }
28 | sleep(500);
29 | id("b8k").findOne().click(); //点击发送
30 | //回主界面
31 | id("g0").findOne().click();
32 | id("apy").findOne().click();
33 | swipe(1400, 1800, 1100, 2000, 400);
34 | }
35 | // 解锁
36 | function unlockPhone(password) {
37 | if (!device.isScreenOn()) {
38 | device.wakeUpIfNeeded();
39 | sleep(100);
40 | swipe(800, 2600, 1200, 1600, 600);
41 | for (var i = 0; i < password.length; i++) {
42 | n = text(password[i].toString()).findOne();
43 | n.parent().click();
44 | sleep(600);
45 | }
46 | }
47 | }
48 | var pkg = toast.getPackageName();
49 | log("Toast内容: " + toast.getText() +
50 | " 来自: " + getAppName(pkg) +
51 | " 包名: " + pkg);
52 | if (pkg == "com.tencent.mm") {
53 | var nameAndMessageSet = toast.getText().toString().split(":");
54 | // 锁屏密码
55 | var password = [0, 8, 1, 7];
56 | // 解锁手机
57 | unlockPhone(password);
58 | // 到达主屏
59 | sendAiMessageByName(nameAndMessageSet);
60 | }
61 |
62 | });
63 | toast("监听中,请在日志中查看记录的Toast及其内容");
--------------------------------------------------------------------------------
/指定联系朋友圈点赞.js:
--------------------------------------------------------------------------------
1 | //desc("微信").findOne().click();
2 | launchApp("微信");
3 | id("f2s").className("android.widget.TextView").text("发现").findOne().parent().click();
4 | id("iwg").indexInParent(0).findOne().click();
5 | username = "遗忘"
6 | while (true) {
7 | className("android.widget.ListView").findOne().scrollDown();
8 | sleep(3000);
9 | var nicknames = id("hg4").className("android.widget.TextView").find();
10 | if (nicknames.size() > 0) {
11 | nicknames.forEach(function(ele, index) {
12 | if (ele.text() == username) {
13 | toastLog("找到了" + ele.text());
14 | id("nh").find()[index].click();
15 | id("n3").findOne().click();
16 | toastLog("已给" + ele.text() + "点赞成功");
17 | //点第一条后停止
18 | //exit();
19 | } else {
20 | toastLog("不是目标" + ele.text());
21 | }
22 | });
23 | }
24 | }
--------------------------------------------------------------------------------
/消息轰炸.js:
--------------------------------------------------------------------------------
1 | function messageFire(msg, num) {
2 | var tip = "";
3 | if (null != msg && '' != msg) {
4 | if (num != "" && !isNaN(num)) {
5 | for (var i = 1; i <= num; i++) {
6 | sendMessage(msg);
7 | }
8 | tip = "运行结束";
9 |
10 | } else {
11 | tip = "只能输入正整数";
12 | }
13 | } else {
14 | tip = "消息不能为空";
15 | }
16 | log(tip);
17 | return tip;
18 | }
19 |
20 | // 发微信消息
21 | function sendMessage(msg) {
22 | //点击聊天输入框
23 | id("kii").findOne().click();
24 | //设置文本消息
25 | setText(msg);
26 | id("b8k").findOne().click(); //点击发送
27 | }
28 | "auto"; //无障碍检测
29 |
30 | var msg = rawInput("请输入消息");
31 | var num = rawInput("请输入轰炸次数");
32 | toast(messageFire(msg, num));
--------------------------------------------------------------------------------
/酷安自动点赞.js:
--------------------------------------------------------------------------------
1 | auto.waitFor()
2 | launchApp("酷安");
3 | //text("首页").findOne().click()
4 | sleep(1000)
5 | swipe(1000, 2700, 1100, 500, 200)
6 | sleep(2000)
7 | var qx = requestScreenCapture()
8 | if (!qx) {
9 | toastLog("请先授权");
10 | exit();
11 | }
12 | autoStar()
13 |
14 | function autoStar() {
15 | id("main_fragment").waitFor();
16 | if (id("main_fragment").findOne()) {
17 | var dt = id("main_fragment").findOne().children().find(className("androidx.cardview.widget.CardView"))
18 | //toastLog(dt.size())
19 | dt.forEach(child => {
20 | //var target = child.find(className("android.widget.LinearLayout").clickable(true).longClickable(true));
21 | //target.click();
22 | if (child.findOne(id("feed_action_view_like"))) {
23 | var star = child.findOne(id("feed_action_view_like")).children().findOne(id("image_view"))
24 | //toastLog("star-" + star)
25 | //star.click();
26 | var bounds = star.bounds();
27 | if (bounds) {
28 | var centerX = bounds.centerX();
29 | var centerY = bounds.centerY();
30 | if (centerY < 2950) {
31 | // 截取屏幕截图
32 | var img = captureScreen();
33 | //var height = img.getHeight()
34 | // 获取控件star中心点的颜色
35 | var color = images.pixel(img, centerX, centerY);
36 | //toastLog(color)
37 | // 判断颜色是否为绿色
38 | if (colors.red(color) > 200 && colors.green(color) > 200 && colors.blue(color) > 200) {
39 | // 颜色为白色
40 | toastLog("star")
41 | click(centerX, centerY);
42 | sleep(1000)
43 | }else{
44 | //toastLog("cancel star")
45 | //click(centerX, centerY);
46 | //sleep(1000)
47 | }
48 | }
49 | } else {
50 | toastLog("无法获取控件区域!");
51 | }
52 | }
53 | });
54 | }
55 | swipe(1000, 2950, 1100, 230, 200)
56 | sleep(500)
57 | autoStar()
58 | }
59 |
60 | // 获取屏幕控件的截图和颜色判断
61 | function checkColorAndClick() {
62 | // 截取屏幕截图
63 | var img = captureScreen();
64 |
65 | // 获取控件的位置和大小
66 | var widget = text("某个控件的文本").findOne();
67 | var bounds = widget.bounds();
68 |
69 | // 计算控件的中心坐标
70 | var centerX = bounds.centerX();
71 | var centerY = bounds.centerY();
72 |
73 | // 获取控件中心点的颜色
74 | var color = images.pixel(img, centerX, centerY);
75 |
76 | // 判断颜色是否为绿色
77 | if (colors.red(color) < 10 && colors.green(color) > 200 && colors.blue(color) < 10) {
78 | // 颜色为绿色,执行点击操作
79 | click(centerX, centerY);
80 | } else if (colors.red(color) > 200 && colors.green(color) > 200 && colors.blue(color) > 200) {
81 | // 颜色为白色,不做处理
82 | // do nothing
83 | } else {
84 | // 其他颜色,可以根据自己的需求进行处理
85 | // do something else
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/音乐搜索.js:
--------------------------------------------------------------------------------
1 | /*
2 | Author Zhang Ruyi
3 | Data 2024.05.09
4 | Comment 音乐搜索自动点击下载脚本
5 | */
6 | "ui";
7 | ui.layout(
8 |
9 |
10 |
11 |
12 |
13 | );
14 |
15 | ui.click_me1.on("click", () => {
16 | toast("自动下载音源一");
17 | currentThread = threads.start(download1); // 启动线程一
18 |
19 | });
20 | toast("脚本运行结束")
21 |
22 | ui.click_me2.on("click", () => {
23 | toast("自动下载音源二");
24 | currentThread = threads.start(download2); // 启动线程
25 | });
26 |
27 | function startMusic() {
28 | auto.waitFor();
29 | log("开始运行");
30 | launchApp("音乐搜索");
31 | sleep(2000);
32 | toast("启动音乐搜索");
33 | }
34 |
35 | //音源一
36 | function download1() {
37 | startMusic();
38 | click(200, 450);
39 | while (true) {
40 | id('recyclerView').findOne().children().forEach(child => {
41 | if (child != null) {
42 | var target = child.findOne(id("more"));
43 | if (target != null) {
44 | target.click();
45 | sleep(200)
46 | text("下载").click();
47 | var nameView = child.findOne(id("name"));
48 | var contentView = child.findOne(id('content'));
49 | if (nameView != null && contentView != null) {
50 | log(nameView.text() + "-" +
51 | contentView.text());
52 | }
53 | check();
54 | }
55 | }
56 | });
57 | sleep(500)
58 | swipe(800, 2300, 850, 660, 800);
59 | }
60 | }
61 |
62 | //音源二
63 | function download2() {
64 | startMusic();
65 | click(400, 450);
66 |
67 | while (true) {
68 | (id('recyclerView').untilFind())[1].children().forEach(child => {
69 | var target = child.findOne(id("more"));
70 | if (target != null) {
71 | target.click();
72 | sleep(200);
73 | text("无损").findOne().click();
74 | text("下载").click();
75 | check();
76 | var nameView = child.findOne(id("name"));
77 | var contentView = child.findOne(id('content'));
78 | if (nameView != null && contentView != null) {
79 | log(nameView.text() + "-" +
80 | contentView.text());
81 | }
82 | }
83 | });
84 | swipe(800, 2300, 850, 660, 800);
85 | }
86 | }
87 |
88 | function check() {
89 | // 检查界面是否有 "正在下载" 文字
90 | if (text("正在下载").exists() || text("正在加载").exists()) {
91 | log("正在下载,等待...");
92 | // 等待 "正在下载" 文字消失
93 | while (text("正在下载").exists() || text("正在加载").exists()) {
94 | sleep(100);
95 | }
96 | } else {
97 | log("继续下载");
98 | }
99 | }
100 |
--------------------------------------------------------------------------------