├── README.md
├── taojinbi.js
└── taojinbi1.js
/README.md:
--------------------------------------------------------------------------------
1 | # taojinbi-js
2 | 淘宝 淘金币Autojs自动刷取脚本,自动执行脚本,包含蚂蚁森林收取能量,芭芭农场全任务,解放你的双手
3 |
4 | ## 两个都可以使用
5 |
--------------------------------------------------------------------------------
/taojinbi.js:
--------------------------------------------------------------------------------
1 | "ui";
2 | auto() //开启无障碍服务 v1.6.7
3 | /*
4 | 1.淘宝人生加载过慢
5 | 2.收藏店铺关键字更新为‘订阅+10’
6 | */
7 |
8 | if (floaty && floaty.hasOwnProperty("checkPermission") && !floaty.checkPermission()) {
9 | floaty.requestPermission(); toast("请先开启悬浮窗权限再运行,否则无法显示提示"); exit()
10 | }
11 |
12 | //===================用户可编辑参数===================
13 | //所有任务重复次数,解决新增任务问题
14 | var MAX_ALL_TASK_EPOCH = 2
15 | //浏览任务最大执行次数
16 | var MAX_EPOCH = 101
17 | //任务执行默认等待的时长 考虑到网络卡顿问题 默认15秒
18 | var wait_sec = 15
19 | //序列化数据到本地
20 | var storage = storages.create("javis486");
21 | //线程执行其任务
22 | var thread = null
23 |
24 | //===================通用函数=========================
25 | //点击控件
26 | function btn_click(x) { if (x) return x.click() }
27 |
28 | //点击控件所在坐标
29 | function btn_position_click(x) { if (x) click(x.bounds().centerX(), x.bounds().centerY()) }
30 |
31 | //不断查找元素x的父元素,指定满足要求(解决模拟器和手机不查找元素不一致问题)
32 | function btn_assure_click(x) {
33 | if (x && x.clickable()) return x.click()
34 | for (let ii = 0; ii < 6; ii++) {
35 | if (!x) break
36 | x = x.parent()
37 | if (x && x.clickable()) return x.click()
38 | let list_x = x.children()
39 | for (let i = 0; i < list_x.length; i++) {
40 | if (list_x[i] && list_x[i].clickable()) {
41 | return list_x[i].click()
42 | }
43 | }
44 | }
45 | return false
46 | }
47 |
48 | //消息提示
49 | function toast_console(msg, tshow) {
50 | console.log(msg);
51 | if (tshow) toast(msg);
52 | }
53 |
54 | // 截屏查找图片颜色并单击对应的点
55 | function cs_click(num, rgb, xr, yr, wr, hr, flipup) {
56 | while (num--) {
57 | let img = captureScreen()
58 | if (flipup != undefined) img = images.rotate(img, 180)
59 | let point = findColor(img, rgb, { region: [img.getWidth() * xr, img.getHeight() * yr, img.getWidth() * wr, img.getHeight() * hr], threshold: 8 })
60 | if (point) {
61 | if (flipup != undefined) {
62 | point.x = img.getWidth() - point.x; point.y = img.getHeight() - point.y
63 | }
64 | return click(point.x, point.y);
65 | }
66 | if (num) sleep(1000)
67 | }
68 | return false
69 | }
70 |
71 | //===================业务逻辑函数=========================
72 | //获取[浏览以下商品]的所在组控件数
73 | function get_group_count() {
74 | let x = textContains('浏览以下商品').findOne(5)
75 | if (x) return x.parent().childCount()
76 | return 0
77 | }
78 |
79 | //等待sec秒,有完成提示后立即返回
80 | function wait(sec) {
81 | let t_sec = sec
82 | let pre_num = 0 //[浏览以下商品]的所在组控件数有时会变化
83 | while (sec--) {
84 | let a1 = textMatches('点我领取奖励|任务已完成快去领奖吧|任务完成|任务已完成|任务已经|任务已经全部完成啦').findOne(10)
85 | let cur_num = get_group_count()
86 | let a10 = pre_num > 0 && cur_num != pre_num; pre_num = cur_num
87 | let a = descMatches('任务完成|快去领奖吧').findOne(1000)
88 | if (a1 || a10 || a) {
89 | toast_console('到时立即返回')
90 | return true
91 | }
92 | }
93 | toast_console('等待' + t_sec + 's返回');
94 | return true
95 | }
96 |
97 | //根据正则表达式获取任务
98 | function get_task(key_reg_str, skip_reg) {
99 | sleep(500); textMatches('每日来访领能量.+|累计任务奖励|x500').findOne(2000);
100 | let list_x = textMatches(input_value(ui.txt_btn_reg_str)).find()
101 | let reg = new RegExp(key_reg_str)
102 | for (let i = 0; i < list_x.length; i++) {
103 | let btn_topic = list_x[i].parent().child(0).child(0) //主题
104 | let btn_desc = list_x[i].parent().child(0).child(1).child(0) //描述
105 | if (!btn_desc) continue
106 | let txt_desc = btn_desc.text()
107 | let txt_topic = btn_topic.text()
108 | if (skip_reg != undefined && skip_reg.test(txt_topic)) continue
109 | if (reg.test(txt_desc) || reg.test(txt_topic)) {
110 | toast_console(txt_topic)
111 | let obj = new Object(); obj.x = list_x[i]; obj.txt = txt_topic;
112 | return obj
113 | }
114 | }
115 | return null
116 | }
117 |
118 | //淘金币获取奖励
119 | function get_rewards(reward) {
120 | if (reward) {
121 | sleep(500); btn_click(text('领取奖励').findOne(1000)); sleep(3000) //等待调整布局
122 | }
123 | }
124 |
125 | //确保任务按钮被单击,解决单击时布局发生改变的问题
126 | function assure_click_task(name) {
127 | let obj = null
128 | for (let i = 0; i < 3; i++) {
129 | obj = get_task(name)
130 | if (!obj) return false
131 | if (obj.x) break
132 | }
133 | if (!obj.x) {
134 | toast_console('无法找到[' + name + '任务],请确保其在未完成任务列表中'); return false
135 | }
136 | obj.x.click();
137 | return true
138 | }
139 |
140 | //保证返回到任务界面
141 | function assure_back(tag) {
142 | let num = 8
143 | while (num-- && !text(tag).findOne(1000)) {
144 | back()
145 | btn_click(textMatches("残忍离开|立即领取").findOne(200))
146 | }
147 | }
148 |
149 | //淘宝人生套装任务
150 | function suit_task() {
151 | toast_console('查看-淘宝人生套装任务')
152 | if (!assure_click_task('套装')) return
153 | sleep(5000); cs_click(6, '#fed362', 0.2, 0.05, 0.7, 0.4, true) //领取套装
154 | sleep(5000); assure_back('x500')
155 | }
156 |
157 | function do_baba_farm(all_task) {
158 | //金色获取肥料按钮
159 | btn_click(text('继续努力').findOne(1000))
160 | if (btn_click(text('立即领取').findOne(1000))) {
161 | btn_assure_click(text('肥料礼包').findOne(1000))
162 | btn_click(text('开心收下').findOne(1000))
163 | btn_click(text('去施肥').findOne(1000))
164 | }
165 | cs_click(6, '#fed362', 0.5, 0.45, 0.45, 0.25) //领取肥料
166 | sleep(500); btn_position_click(text('去施肥,赚更多肥料').findOne(1000)); sleep(500)
167 | //签到列表领肥料
168 | if (cs_click(3, '#9dbe77', 0.66, 0.66, 0.25, 0.25)) {
169 | console.log('打开签到列表领肥料'); sleep(1000)
170 | btn_click(text('去签到').findOne(1000)); btn_click(text('去领取').findOne(1000)); sleep(2000)
171 | if (all_task) {
172 | do_simple_task(16, 16, '浏览', 'x500', false)
173 | if (ui.ck_baba_suit_task.checked) {
174 | suit_task()
175 | }
176 | if (ui.ck_baba_xxl_task.checked) {
177 | xiaoxiaole_task()
178 | }
179 | if (ui.ck_baba_zhifubao_task.checked) {
180 | zhifubao_baba_farm_task()
181 | }
182 | }
183 | btn_click(text('去领取').findOne(1000))
184 | btn_click(text('关闭').findOne(1000)); sleep(1000)
185 | if (all_task && ui.ck_baba_friend_forest_task.checked) {
186 | friend_forest_task()
187 | }
188 | }
189 | }
190 |
191 | //芭芭农场任务
192 | function baba_farm_task() {
193 | toast_console('查看-芭芭农场任务')
194 | if (!assure_click_task(input_value(ui.txt_baba_farm_task_reg_str))) return
195 | sleep(6000)
196 | do_baba_farm()
197 | cs_click(3, '#fff39f', 0.45, 0.6, 0.25, 0.35) //金色施肥按钮
198 | sleep(500); assure_back(input_value(ui.txt_task_list_ui_reg)); get_rewards(true)
199 | }
200 |
201 | //淘宝成就签到
202 | function achievement_signin_task() {
203 | toast_console('查看-淘宝成就签到任务')
204 | if (!assure_click_task(input_value(ui.txt_achievement_task_reg_str))) return
205 | btn_click(text("成就礼包").findOne(3000))
206 | btn_click(text("我收下了").findOne(1000))
207 | let btn_x = text('成就签到').findOne(2000)
208 | if (btn_x) {
209 | btn_x.parent().child(3).click()
210 | }
211 | btn_click(text("我收下了").findOne(1000))
212 | sleep(1000); assure_back(input_value(ui.txt_task_list_ui_reg)); get_rewards(true)
213 | }
214 |
215 | //淘宝成就月账单任务
216 | function achievement_month_task() {
217 | toast_console('查看-淘宝成就月账单任务')
218 | if (!assure_click_task(input_value(ui.txt_achievement_month_reg_str))) return
219 | btn_assure_click(text('月度账单').findOne(3000)); sleep(2000)
220 | assure_back(input_value(ui.txt_task_list_ui_reg)); get_rewards(true)
221 |
222 | }
223 |
224 | //喂小鸡任务,可以直接返回
225 | function feed_chick_task() {
226 | toast_console('查看-蚂蚁庄园喂小鸡任务')
227 | if (!assure_click_task(input_value(ui.txt_feedchick_task_reg_str))) return
228 | sleep(1000); btn_click(text('取消').findOne(2000));
229 | assure_back(input_value(ui.txt_task_list_ui_reg)); get_rewards(true)
230 | }
231 |
232 | //蚂蚁森林偷取能量
233 | function steal_energy(num_find) {
234 | let num = 5
235 | while (num-- && !textMatches('.+动态').findOne(1000)) sleep(500);
236 | if (textMatches('.+动态').findOne(500)) {
237 | let point = null; num = 5
238 | while (num--) {
239 | let img = captureScreen();
240 | point = findColor(img, '#ff6e01', { region: [img.getWidth() * 0.7, img.getHeight() * 0.6, img.getWidth() * 0.25, img.getHeight() * 0.25], threshold: 8 })
241 | if (point) break
242 | sleep(1000)
243 | }
244 | if (!point) {
245 | toast('找能量按钮去哪了?'); exit()
246 | }
247 | for (let i = 1; i <= num_find; i++) {
248 | for (let j = 0; j < 12; j++) {
249 | if (!cs_click(1, '#b6ff00', 0.1, 0.2, 0.8, 0.4)) break
250 | sleep(400)
251 | }
252 | if (num_find == 1) return
253 | click(point.x, point.y); sleep(1500)
254 | if (!textMatches('.+动态').findOne(1000)) break
255 | toast('找能量/' + i)
256 | }
257 | }
258 | toast('找能量执行完毕')
259 | }
260 |
261 | //蚂蚁森林任务
262 | function ant_forest_task(num, back_reg) {
263 | toast_console('查看-蚂蚁森林任务')
264 | if (!assure_click_task(input_value(ui.txt_antforest_reg_str))) return
265 | btn_click(text('打开').findOne(1000))
266 | sleep(2000); console.hide(); steal_energy(num); console.show()
267 | assure_back(back_reg); get_rewards(true)
268 | }
269 |
270 | //逛好店领10金币
271 | function browse_goodshop_task(not_key_reg_str) {
272 | toast_console('查看-逛好店并领10金币任务')
273 | if (!assure_click_task(input_value(ui.txt_browse_goog_shop_reg_str))) return
274 | for (let i = 0; i < 11 && ui.ck_earn_10coin.checked; i++) {
275 | let btn_x = desc('逛10秒+10').findOne(2000)
276 | toast_console('逛10秒+10金币/' + (i + 1))
277 | if (!btn_x) break
278 | btn_x.parent().click(); sleep(13000);
279 | if (ui.ck_pat_shop.checked) {
280 | btn_x = textContains('+10').findOne(800)
281 | if (btn_x) {
282 | btn_click(btn_x.parent()); sleep(800)
283 | }
284 | }
285 | back(); sleep(800);
286 | }
287 | wait(wait_sec); assure_back(input_value(ui.txt_task_list_ui_reg)); get_rewards(true)
288 | }
289 |
290 | //去天猫红包任务
291 | function tianmao_task() {
292 | toast_console('查看-去天猫APP领红包任务')
293 | if (!assure_click_task(input_value(ui.txt_tianmao_task_reg_str))) return
294 | sleep(4000)
295 | if (text('攻略').findOne(4000)) {
296 | btn_click(textContains('继续逛逛').findOne(1000))
297 | wait(wait_sec)
298 | }
299 | assure_back(input_value(ui.txt_task_list_ui_reg)); get_rewards(true)
300 | }
301 |
302 | //掷骰子任务
303 | function dice_task() {
304 | toast_console('查看-淘宝人生掷骰子任务')
305 | if (!assure_click_task(input_value(ui.txt_dice_task_reg_str))) return
306 | console.hide(); sleep(15000);
307 | //去他大爷的神秘礼物
308 | toast_console('掷骰子任务-查看是否有神秘礼物(QTM的神秘)', true)
309 | cs_click(5, '#ffffff', 0.3, 0.1, 0.7, 0.5, true);
310 | //单击礼包
311 | toast_console('掷骰子任务-查看是否有礼包(QTM的礼包)', true)
312 | cs_click(3, '#fee998', 0.2, 0.2, 0.7, 0.8);
313 | //橙色收下奖励按钮按钮
314 | toast_console('掷骰子任务-点击5次开心收下按钮(一点都不开心- -)', true)
315 | for (let i = 0; i < 5; i++) {
316 | cs_click(1, '#ff7d44', 0.1, 0.15, 0.2, 0.5, true); sleep(500)
317 | }
318 | sleep(1000)
319 | //金色前进按钮
320 | toast_console('掷骰子任务-尝试点击色子前进', true)
321 | cs_click(4, '#fff89d', 0.2, 0.5, 0.45, 0.3); sleep(3000)
322 | //橙色收下奖励按钮按钮
323 | cs_click(2, '#ff7d44', 0.1, 0.15, 0.2, 0.5, true);
324 | back(); sleep(1000)
325 | //橙色返回淘宝按钮
326 | cs_click(3, '#ff7d44', 0.1, 0.15, 0.2, 0.5, true)
327 | btn_click(text('立刻离开').findOne(1000)); get_rewards(true); console.show()
328 | }
329 |
330 |
331 | //消消乐任务
332 | function xiaoxiaole_task() {
333 | toast_console('查看-消消乐任务')
334 | if (!assure_click_task(input_value(ui.txt_xiaoxiaole_task_reg_str))) return
335 | console.hide(); sleep(10000)
336 | cs_click(3, '#11c6bf', 0.2, 0.6, 0.3, 0.3); //开心收下奖励
337 | cs_click(3, '#ffffff', 0.8, 0.05, 0.2, 0.2) //跳过
338 | sleep(2000)
339 | //回到主页
340 | for (let i = 0; i < 6; i++) {
341 | cs_click(1, '#8d5546', 0, 0, 0.1, 0.1); sleep(1000) //back();
342 | if (cs_click(1, '#ffbd29', 0.2, 0.5, 0.45, 0.45)) break //橙色返回
343 | if (cs_click(1, '#965417', 0.2, 0.2, 0.6, 0.6, true)) break //咖啡色暂时返回
344 | }
345 | toast("回到主页了么,您?");
346 | sleep(3000) //过渡动画
347 | //邮件领取 pass
348 | cs_click(3, '#ffffff', 0.65, 0.15, 0.3, 0.5); sleep(500)
349 | //滑到屏幕下方
350 | for (let i = 0; i < 8; i++)swipe(device.width / 2, device.height / 2, device.width / 2, device.height / 5, 500)
351 | //点击第一关 绿色圆圈
352 | sleep(1000); cs_click(3, '#63cbc4', 0.5, 0.3, 0.4, 0.4, true); sleep(2000)
353 | //开始 绿色方块
354 | cs_click(2, '#11c6bf', 0.3, 0.5, 0.3, 0.3); sleep(2000)
355 | cs_click(3, '#ffffff', 0.8, 0.05, 0.2, 0.2) //跳过
356 | sleep(2000)
357 | //消除方块,兼容不同机型
358 | let rgb = '#fff0e0'
359 | img = captureScreen()
360 | let point1 = findColor(img, rgb, { region: [img.getWidth() * 0.2, img.getHeight() * 0.3, img.getWidth() * 0.4, img.getHeight() * 0.4], threshold: 4 })
361 | img = images.rotate(img, 180)
362 | let point2 = findColor(img, rgb, { region: [img.getWidth() * 0.2, img.getHeight() * 0.3, img.getWidth() * 0.4, img.getHeight() * 0.4], threshold: 4 })
363 | if (point1 && point2) {
364 | let box_x = (img.getWidth() - point2.x - point1.x) / 5
365 | let box_y = (img.getHeight() - point2.y - point1.y) / 6
366 | list_xy = [[0, 1, 0, 2], [0, 5, 0, 4], [2, 2, 3, 2]]
367 | list_xy.forEach(xy => {
368 | x1 = (xy[0] + 0.5) * box_x + point1.x; x2 = (xy[2] + 0.5) * box_x + point1.x
369 | y1 = (xy[1] + 0.5) * box_y + point1.y; y2 = (xy[3] + 0.5) * box_y + point1.y
370 | swipe(x1, y1, x2, y2, 600); sleep(800)
371 | });
372 | }
373 | cs_click(2, '#8d5546', 0, 0, 0.1, 0.1); //back()
374 | sleep(1000);
375 | //回到主页1 灰色的暂时离开
376 | cs_click(2, '#9d6031', 0.2, 0.2, 0.4, 0.5, true)
377 | //回到主页2 金色的回到主页
378 | cs_click(2, '#ffbd29', 0.2, 0.5, 0.45, 0.45); sleep(2000);
379 | //再挑战?
380 | cs_click(5, '#ffffff', 0.6, 0.15, 0.35, 0.5); sleep(800)
381 | //返回淘宝按钮
382 | back(); sleep(1000);
383 | cs_click(3, '#ff6e09', 0.2, 0.2, 0.4, 0.4, true);
384 | console.show(); get_rewards(true)
385 | }
386 |
387 | //淘金币夺宝任务,需花费100淘金币
388 | function duobao_task(back_reg) {
389 | toast_console('查看-100淘金币夺宝任务')
390 | if (!assure_click_task(input_value(ui.txt_doubao_task_reg_str))) return
391 | if (btn_assure_click(text('去“我的奖品”查看').findOne(3000))) {
392 | swipe(device.width / 2, device.height * 0.8, device.width / 2, device.height * 0.2, 500)
393 | }
394 | btn_assure_click(textMatches('立即参与|立即夺宝').findOne(3000))
395 | btn_click(text('参与兑换抽奖号').findOne(3000))
396 | let num = 5
397 | while (num--) btn_click(text('-').findOne(1000))
398 | btn_click(text('确定兑换').findOne(1000)); sleep(200)
399 | btn_click(text('确认兑换').findOne(1000)); sleep(200)
400 | btn_click(text('我知道了').findOne(1000)); sleep(1000)
401 | back(); sleep(800); back(); sleep(800); back(); sleep(800); cs_click(4, '#ff7d44', 0.1, 0.2, 0.5, 0.5, true)
402 | get_rewards(true)
403 | }
404 |
405 | //执行简单的浏览任务
406 | function do_simple_task(epoch, sec, reg_str, back_reg, reward) {
407 | toast_console('查看-可执行的简单浏览任务')
408 | skip_reg = new RegExp(input_value(ui.txt_simple_skip_reg_str))
409 | for (let i = 0; i < epoch; i++) {
410 | let obj = get_task(reg_str, skip_reg)
411 | if (!obj) {
412 | console.log('简单浏览任务执行完毕'); break
413 | }
414 | if (!obj.x) {
415 | console.log('继续执行简单浏览任务'); continue
416 | }
417 | obj.x.click();
418 | wait(sec)
419 | let num = 8
420 | while (num-- && !text(back_reg).findOne(1000)) {
421 | if (obj.txt.indexOf('充值金') > -1) {
422 | btn_click(text('O1CN01NN8T8d1tBlBM5R7qG_!!6000000005864-1-tps-100-100').findOne(1000))
423 | sleep(500); btn_click(text('立即领取').findOne(1000)); sleep(500);
424 | }
425 | back(); btn_position_click(desc('继续退出').findOne(400))
426 | btn_click(textMatches('残忍离开|回到淘宝').findOne(400))
427 | if (obj.txt.indexOf('淘宝吃货') > -1) cs_click(1, '#ff4c55', 0.2, 0.2, 0.4, 0.4, true)
428 | }
429 | get_rewards(reward)
430 | }
431 | }
432 |
433 |
434 | //进入到淘金币列表界面
435 | function get_into_taojinbi_task_list() {
436 | let task_list_ui_reg = input_value(ui.txt_task_list_ui_reg)
437 | toast_console('启动淘宝app')
438 | app.launch('com.taobao.taobao'); sleep(1500)
439 | if (!text(task_list_ui_reg).findOne(2000)) {
440 | let num = 8
441 | while (num-- && !desc('领淘金币').findOne(1000)) back();
442 | let btn_x = desc('领淘金币').findOne(500)
443 | if (!btn_x) {
444 | toast_console('无法返回到淘宝主界面,请手动回到淘宝主界面后重新运行'); exit()
445 | }
446 | btn_x.click(); toast_console('进入到淘金币主界面..'); sleep(2000)
447 | for (let i = 0; i < 6; i++) {
448 | btn_click(text('签到领金币').findOne(1000)); btn_click(text('领取奖励').findOne(1000))
449 | btn_x = text('赚金币').findOne(1000)
450 | if (btn_x) break
451 | }
452 | if (!btn_x) {
453 | toast_console('无法找到[赚金币]按钮,请重新运行程序'); exit()
454 | }
455 | btn_x.click()
456 | }
457 | toast_console('进入到淘金币列表界面..'); textMatches('每日来访领能量.+').findOne(6000);
458 | }
459 |
460 |
461 | function taojinbi_task() {
462 | let simple_task_reg_str = input_value(ui.txt_simple_task_reg_str)
463 | let task_list_ui_reg = input_value(ui.txt_task_list_ui_reg)
464 | for (let i = 0; i < MAX_ALL_TASK_EPOCH; i++) {
465 | toast_console("#第" + (i + 1) + "次执行全任务")
466 | get_into_taojinbi_task_list()
467 | if (ui.ck_simple_task.checked) {
468 | do_simple_task(MAX_EPOCH, wait_sec, simple_task_reg_str, task_list_ui_reg, true)
469 | }
470 | if (ui.ck_feedchick_task.checked) {
471 | feed_chick_task()
472 | }
473 | if (ui.ck_dice_task.checked) {
474 | dice_task()
475 | }
476 | if (ui.ck_baba_farm_task.checked) {
477 | baba_farm_task()
478 | }
479 | if (ui.ck_antforest.checked) {
480 | ant_forest_task(8, input_value(ui.txt_task_list_ui_reg))
481 | }
482 | if (ui.ck_browse_goog_shop.checked) {
483 | browse_goodshop_task();
484 | }
485 | if (ui.ck_achievement_month_task) {
486 | achievement_month_task()
487 | }
488 | if (ui.ck_achievement_task.checked) {
489 | achievement_signin_task()
490 | }
491 | if (ui.ck_doubao_task.checked) {
492 | duobao_task(task_list_ui_reg)
493 | }
494 | if (ui.ck_tianmao_task.checked) {
495 | tianmao_task()
496 | }
497 | if (ui.ck_xiaoxiaole_task.checked) {
498 | xiaoxiaole_task()
499 | }
500 | get_rewards(true)
501 | }
502 | toast_console('*****淘金任务执行完毕*****')
503 | }
504 |
505 | function main() {
506 | requestScreenCapture(false);
507 | console.show();
508 | console.log("淘金币" + storage.get('taojinbi_version', '') + " 本APP完全免费,作者:Javis486,github下载地址:https://github.com/JavisPeng/taojinbi")
509 | taojinbi_task();
510 | toast_console('###***全部任务执行完毕***###')
511 | }
512 |
513 |
514 | //获取选择框列表
515 | function get_check_box_list() {
516 | return [ui.ck_simple_task, ui.ck_dice_task, ui.ck_baba_farm_task, ui.ck_antforest, ui.ck_tianmao_task,
517 | ui.ck_achievement_task, ui.ck_browse_goog_shop, ui.ck_earn_10coin, ui.ck_pat_shop,
518 | ui.ck_feedchick_task, ui.ck_doubao_task, ui.ck_xiaoxiaole_task, ui.ck_achievement_month_task,
519 | ui.ck_baba_suit_task, ui.ck_baba_xxl_task, ui.ck_baba_zhifubao_task, ui.ck_baba_friend_forest_task
520 | ];
521 | }
522 |
523 | //获取输入框列表
524 | function get_input_list() {
525 | return [ui.txt_btn_reg_str, ui.txt_task_list_ui_reg, ui.txt_simple_task_reg_str, ui.txt_feedchick_task_reg_str, ui.txt_browse_goog_shop_reg_str,
526 | ui.txt_baba_farm_task_reg_str, ui.txt_dice_task_reg_str, ui.txt_doubao_task_reg_str, ui.txt_achievement_task_reg_str,
527 | ui.txt_antforest_reg_str, ui.txt_tianmao_task_reg_str, ui.txt_xiaoxiaole_task_reg_str, ui.txt_achievement_month_reg_str, ui.txt_simple_skip_reg_str
528 | ];
529 | }
530 |
531 |
532 | function input_value(x) {
533 | return String(x.getText())
534 | }
535 |
536 | //保存选项
537 | function save_opt() {
538 | let list_ck = get_check_box_list().map(x => x.checked)
539 | let list_txt = get_input_list().map(x => input_value(x))
540 | storage.put("list_ck", list_ck)
541 | storage.put("list_txt", list_txt)
542 | toast_console('选项保存成功', true);
543 | }
544 |
545 | //加载选择项状态
546 | function load_opt() {
547 | let list_ck_v = storage.get("list_ck", null)
548 | let list_txt_v = storage.get("list_txt", null)
549 | if (list_ck_v) {
550 | let list_ck = get_check_box_list();
551 | for (let i = 0; i < list_ck_v.length; i++) {
552 | list_ck[i].checked = list_ck_v[i];
553 | }
554 | }
555 | if (list_txt_v) {
556 | let list_txt = get_input_list();
557 | for (let i = 0; i < list_txt_v.length; i++) {
558 | list_txt[i].setText(list_txt_v[i]);
559 | }
560 | }
561 | }
562 |
563 | //选择项开关
564 | function task_toggle() {
565 | list_ck = get_check_box_list();
566 | list_ck.forEach(x => {
567 | x.checked = !x.checked;
568 | })
569 | }
570 |
571 | //直接启动支付宝蚂蚁森林偷取好友能量,需添加蚂蚁森林到首页
572 | function zfb_antforest() {
573 | if (thread && thread.isAlive()) {
574 | toast_console('当前程序正在执行其他任务,请结束后再运行', true); return
575 | }
576 | thread = threads.start(function () {
577 | requestScreenCapture(false);
578 | app.launch('com.eg.android.AlipayGphone'); sleep(2000)
579 | let btn_ant = textContains('蚂蚁森林').findOne(5000)
580 | if (!btn_ant) {
581 | toast_console('无法找到蚂蚁森林,请先添加到支付宝首页', true); return
582 | }
583 | btn_position_click(btn_ant)
584 | steal_energy(64);
585 | });
586 | }
587 |
588 | //单独执行芭芭农场全任务
589 | function solo_baba_farm() {
590 | if (thread && thread.isAlive()) {
591 | toast_console('当前程序正在执行其他任务,请结束后再运行', true); return
592 | }
593 | thread = threads.start(function () {
594 | requestScreenCapture(false);
595 | app.launch('com.taobao.taobao');
596 | if (!text('亲密度').findOne(1000)) {
597 | //btn_assure_click(desc('我的淘宝').findOne(3000))
598 | let btn_x = desc('芭芭农场').findOne(3000)
599 | if (!btn_x) {
600 | toast_console('无法进入芭芭农场主界面,请手动回到淘宝主界面后重新运行'); exit()
601 | }
602 | btn_x.click(); toast_console('进入芭芭农场主界面..');
603 | sleep(6000)
604 | btn_click(text('立即去收').findOne(2000))
605 | if (text('兑换').findOne(3000)) {
606 | cs_click(2, '#984f2e', 0.05, 0.2, 0.1, 0.3); sleep(6000)
607 | }
608 | }
609 | console.show()
610 | do_baba_farm(true)
611 | toast_console('**芭芭农场任务完成**');
612 | });
613 | }
614 |
615 | //支付宝芭芭农场
616 | function zhifubao_baba_farm_task() {
617 | toast_console('查看-支付宝芭芭农场任务')
618 | //if (!assure_click_task('支付宝芭芭农场')) return
619 | btn_position_click(textContains('支付宝芭芭农场').findOne(1000))
620 | toast_console('等待农场主界面出现');
621 | btn_click(text('继续赚肥料').findOne(7000)); sleep(2000)
622 | toast_console('领取肥料');
623 | cs_click(4, '#fed362', 0.55, 0.65, 0.45, 0.15); sleep(1500); //领取肥料
624 | btn_click(text('去施肥').findOne(1000)); sleep(500)
625 | if (cs_click(2, '#fed362', 0.1, 0.2, 0.1, 0.2, true)) { //打开列表
626 | toast_console('开始领取'); sleep(1500)
627 | for (let i = 0; i < 4; i++) {
628 | btn_click(text('领取').findOne(500)); sleep(500)
629 | }
630 | let btn_water = textContains('浇水').findOne(1000)//蚂蚁森林任务
631 | if (btn_water) {
632 | click(btn_water.bounds().right + 10, btn_water.bounds().top)
633 | console.hide(); steal_energy(1, true); assure_back('队伍设置'); console.show()
634 | sleep(1000); btn_click(text('领取').findOne(1000));
635 | }
636 | if (btn_click(text('去逛逛').findOne(1000))) {
637 | sleep(4000); btn_click(textContains('继续赚').findOne(5000)); return
638 | }
639 | }
640 | assure_back('x500')
641 | }
642 |
643 | //芭芭农场中的好友林
644 | function friend_forest_task() {
645 | toast_console('前往芭芭农场中的好友林'); sleep(3000)
646 | btn_click(textContains('我知道啦').findOne(3500))
647 | console.hide()
648 | cs_click(3, '#fed362', 0.01, 0.5, 0.2, 0.3); sleep(2000)// 打开好友林
649 | if (cs_click(3, '#b63223', 0.4, 0.1, 0.2, 0.3)) { //中心领取
650 | btn_click(textMatches('继续加油|开心收下').findOne(1000))
651 | }
652 | //收取肥料
653 | let fu = images.fromBase64('/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wAARCAAOABEDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAMCBQb/xAAcEAACAwEBAQEAAAAAAAAAAAABAgADERITIQT/xAAXAQADAQAAAAAAAAAAAAAAAAAAAwQF/8QAGBEBAQADAAAAAAAAAAAAAAAAAAECERL/2gAMAwEAAhEDEQA/ALHn1f8AQQzau59khWE8LFZtY/RsQz2e1qVkAEndjK1ue2hWZeUOiZ8TY3dabmEX0YQP5f/Z')
654 | for (let i = 0; i < 8; i++) {
655 | let img = captureScreen()
656 | var point = findImage(img, fu, { region: [0.1 * device.width, 0.3 * device.height], threshold: 0.9 });
657 | if (point) {
658 | click(point.x, point.y); sleep(1000)
659 | }
660 | }
661 | if (btn_click(text('点我领肥料').findOne(1000))) {
662 | btn_click(text('立即去浇灌').findOne(1000)); console.show(); sleep(4000); return
663 | }
664 | if (btn_click(text('立即领取').findOne(1000))) {
665 | btn_click(text('开心收下').findOne(1000))
666 | }
667 | console.show(); back()
668 | }
669 |
670 | //取消关注的店铺
671 | function cancel_pat_shop() {
672 | if (thread && thread.isAlive()) {
673 | toast_console('当前程序正在执行其他任务,请结束后再运行', true); return
674 | }
675 | thread = threads.start(function () {
676 | app.launch('com.taobao.taobao');
677 | toast('单击我的淘宝'); btn_assure_click(desc('我的淘宝').findOne(6000))
678 | toast('点击关注店铺'); btn_assure_click(desc('订阅店铺').findOne(2000)); sleep(1000)
679 | btn_assure_click(desc('全部').findOne(2000));
680 | for (let i = 0; i < MAX_EPOCH; i++) {
681 | let list_x = className("ImageView").find()
682 | for (let i = 0; i < list_x.length; i++) {
683 | let btn_x = list_x[i]
684 | let h = btn_x.bounds().bottom - btn_x.bounds().top
685 | if (h < 10) { //hight较小的控件
686 | if (btn_x && btn_x.parent()) {
687 | btn_x.parent().click(); sleep(500)
688 | let bnt_cancel = desc('取消订阅').findOne(1000)
689 | if (bnt_cancel) {
690 | btn_click(bnt_cancel.parent()); sleep(500)
691 | }
692 | }
693 | }
694 | }
695 | }
696 | })
697 | }
698 |
699 | ui.layout(
700 |
701 |
702 |
703 |
704 |
705 |
706 |
768 |
769 |
770 | );
771 |
772 |
773 | //创建选项菜单(右上角)
774 | ui.emitter.on("create_options_menu", menu => {
775 | menu.add("关于");
776 | });
777 |
778 | //监听选项菜单点击
779 | ui.emitter.on("options_item_selected", (e, item) => {
780 | switch (item.getTitle()) {
781 | case "关于":
782 | alert("关于", "淘金币" + storage.get('taojinbi_version', '') + " 多多支持!");
783 | break;
784 | }
785 | e.consumed = true;
786 | });
787 | activity.setSupportActionBar(ui.toolbar);
788 |
789 | //设置滑动页面的标题
790 | ui.viewpager.setTitles(["淘金币", '芭芭农场', "参数配置"]);
791 | //让滑动页面和标签栏联动
792 | ui.tabs.setupWithViewPager(ui.viewpager);
793 | //按钮单击事件
794 | ui.btn_toogle.click(task_toggle)
795 | ui.btn_save_opt.click(save_opt)
796 | ui.btn_antforest.click(zfb_antforest)
797 | ui.btn_load_opt.click(load_opt)
798 | ui.btn_cancel_pat_shop.click(cancel_pat_shop)
799 | ui.btn_exit.click(function () { ui.finish() })
800 | ui.btn_babafarm.click(solo_baba_farm)
801 | //运行选择项
802 | ui.btn_run_main.click(function () {
803 | if (thread && thread.isAlive()) {
804 | toast_console('当前程序正在执行其他任务,请结束后再运行', true); return
805 | }
806 | thread = threads.start(function () {
807 | main(); exit()
808 | })
809 | })
810 |
--------------------------------------------------------------------------------
/taojinbi1.js:
--------------------------------------------------------------------------------
1 | "ui";
2 | auto() //开启无障碍服务 v1.6.7
3 | /*
4 | 1.淘宝人生加载过慢
5 | 2.收藏店铺关键字更新为‘订阅+10’
6 | */
7 |
8 | if (floaty && floaty.hasOwnProperty("checkPermission") && !floaty.checkPermission()) {
9 | floaty.requestPermission(); toast("请先开启悬浮窗权限再运行,否则无法显示提示"); exit()
10 | }
11 |
12 | //===================用户可编辑参数===================
13 | //所有任务重复次数,解决新增任务问题
14 | var MAX_ALL_TASK_EPOCH = 3
15 | //浏览任务最大执行次数
16 | var MAX_EPOCH = 101
17 | //任务执行默认等待的时长 考虑到网络卡顿问题 默认15秒
18 | var wait_sec = 15
19 | //序列化数据到本地
20 | var storage = storages.create("javis486");
21 | //线程执行其任务
22 | var thread = null
23 |
24 | //===================通用函数=========================
25 | //点击控件
26 | function btn_click(x) { if (x) return x.click() }
27 |
28 | //点击控件所在坐标
29 | function btn_position_click(x) { if (x) click(x.bounds().centerX(), x.bounds().centerY()) }
30 |
31 | //不断查找元素x的父元素,指定满足要求(解决模拟器和手机不查找元素不一致问题)
32 | function btn_assure_click(x) {
33 | if (x && x.clickable()) return x.click()
34 | for (let ii = 0; ii < 6; ii++) {
35 | if (!x) break
36 | x = x.parent()
37 | if (x && x.clickable()) return x.click()
38 | let list_x = x.children()
39 | for (let i = 0; i < list_x.length; i++) {
40 | if (list_x[i] && list_x[i].clickable()) {
41 | return list_x[i].click()
42 | }
43 | }
44 | }
45 | return false
46 | }
47 |
48 | //消息提示
49 | function toast_console(msg, tshow) {
50 | console.log(msg);
51 | if (tshow) toast(msg);
52 | }
53 |
54 | // 截屏查找图片颜色并单击对应的点
55 | function cs_click(num, rgb, xr, yr, wr, hr, flipup) {
56 | while (num--) {
57 | let img = captureScreen()
58 | if (flipup != undefined) img = images.rotate(img, 180)
59 | let point = findColor(img, rgb, { region: [img.getWidth() * xr, img.getHeight() * yr, img.getWidth() * wr, img.getHeight() * hr], threshold: 8 })
60 | if (point) {
61 | if (flipup != undefined) {
62 | point.x = img.getWidth() - point.x; point.y = img.getHeight() - point.y
63 | }
64 | return click(point.x, point.y);
65 | }
66 | if (num) sleep(1000)
67 | }
68 | return false
69 | }
70 |
71 | function find_img_from_base64(try_times, target_img, pos_x, pos_y, width, height) {
72 | while (try_times--) {
73 | let screen = captureScreen()
74 | var target = images.fromBase64(target_img)
75 | let point = findImage(screen, target, {
76 | region: [
77 | screen.getWidth() * pos_x,
78 | screen.getHeight() * pos_y,
79 | screen.getWidth() * width,
80 | screen.getHeight() * height
81 | ],
82 | threshold: 0.8
83 | })
84 | if (point) {
85 | toast_console("找到 " + target_img + " posX: " + point.x + " posY: " + point.y, true)
86 | console.show()
87 | return point
88 | }
89 | if (try_times) {
90 | sleep(1000)
91 | }
92 | }
93 | toast_console("没找到 " + target_img, true)
94 | return false
95 | }
96 |
97 | //===================业务逻辑函数=========================
98 | //获取[浏览以下商品]的所在组控件数
99 | function get_group_count() {
100 | let x = textContains('浏览以下商品').findOne(5)
101 | if (x) return x.parent().childCount()
102 | return 0
103 | }
104 |
105 | //等待sec秒,有完成提示后立即返回
106 | function wait(sec) {
107 | let t_sec = sec
108 | let pre_num = 0 //[浏览以下商品]的所在组控件数有时会变化
109 | while (sec--) {
110 | let a1 = textMatches('点我领取奖励|任务已完成快去领奖吧|任务完成|任务已完成|任务已经|任务已经全部完成啦').findOne(10)
111 | let cur_num = get_group_count()
112 | let a10 = pre_num > 0 && cur_num != pre_num; pre_num = cur_num
113 | let a = descMatches('任务完成|快去领奖吧').findOne(1000)
114 | if (a1 || a10 || a) {
115 | toast_console('到时立即返回')
116 | return true
117 | }
118 | }
119 | toast_console('等待' + t_sec + 's返回');
120 | return true
121 | }
122 |
123 | //根据正则表达式获取任务
124 | function get_task(key_reg_str, skip_reg) {
125 | sleep(500); textMatches('每日来访领能量.+|累计任务奖励|x500').findOne(2000);
126 | let list_x = textMatches(input_value(ui.txt_btn_reg_str)).find()
127 | let reg = new RegExp(key_reg_str)
128 | for (let i = 0; i < list_x.length; i++) {
129 | let btn_topic = list_x[i].parent().child(0).child(0) //主题
130 | let btn_desc = list_x[i].parent().child(0).child(1).child(0) //描述
131 | if (!btn_desc) continue
132 | let txt_desc = btn_desc.text()
133 | let txt_topic = btn_topic.text()
134 | if (skip_reg != undefined && skip_reg.test(txt_topic)) continue
135 | if (reg.test(txt_desc) || reg.test(txt_topic)) {
136 | toast_console(txt_topic)
137 | let obj = new Object(); obj.x = list_x[i]; obj.txt = txt_topic;
138 | return obj
139 | }
140 | }
141 | return null
142 | }
143 |
144 | //淘金币获取奖励
145 | function get_rewards(reward) {
146 | if (reward) {
147 | sleep(500); btn_click(text('领取奖励').findOne(1000)); sleep(3000) //等待调整布局
148 | }
149 | }
150 |
151 | //确保任务按钮被单击,解决单击时布局发生改变的问题
152 | function assure_click_task(name) {
153 | let obj = null
154 | for (let i = 0; i < 3; i++) {
155 | obj = get_task(name)
156 | if (!obj) return false
157 | if (obj.x) break
158 | }
159 | if (!obj.x) {
160 | toast_console('无法找到[' + name + '任务],请确保其在未完成任务列表中'); return false
161 | }
162 | obj.x.click();
163 | return true
164 | }
165 |
166 | //保证返回到任务界面
167 | function assure_back(tag) {
168 | let num = 8
169 | while (num-- && !text(tag).findOne(1000)) {
170 | back()
171 | btn_click(textMatches("残忍离开|立即领取").findOne(200))
172 | }
173 | }
174 |
175 | //淘宝人生套装任务
176 | function suit_task() {
177 | toast_console('查看-淘宝人生套装任务')
178 | if (!assure_click_task('套装')) return
179 | sleep(5000); cs_click(6, '#fed362', 0.2, 0.05, 0.7, 0.4, true) //领取套装
180 | sleep(5000); assure_back('x500')
181 | }
182 |
183 | function do_baba_farm(all_task) {
184 | //金色获取肥料按钮
185 | btn_click(text('继续努力').findOne(1000))
186 | if (btn_click(text('立即领取').findOne(1000))) {
187 | btn_assure_click(text('肥料礼包').findOne(1000))
188 | btn_click(text('开心收下').findOne(1000))
189 | btn_click(text('去施肥').findOne(1000))
190 | }
191 | cs_click(6, '#fed362', 0.5, 0.45, 0.45, 0.25) //领取肥料
192 | sleep(500); btn_position_click(text('去施肥,赚更多肥料').findOne(1000)); sleep(500)
193 | //签到列表领肥料
194 | if (cs_click(3, '#9dbe77', 0.66, 0.66, 0.25, 0.25)) {
195 | console.log('打开签到列表领肥料'); sleep(1000)
196 | btn_click(text('去签到').findOne(1000)); btn_click(text('去领取').findOne(1000)); sleep(2000)
197 | if (all_task) {
198 | do_simple_task(16, 16, '浏览', 'x500', false)
199 | if (ui.ck_baba_suit_task.checked) {
200 | suit_task()
201 | }
202 | if (ui.ck_baba_xxl_task.checked) {
203 | xiaoxiaole_task()
204 | }
205 | if (ui.ck_baba_zhifubao_task.checked) {
206 | zhifubao_baba_farm_task()
207 | }
208 | }
209 | btn_click(text('去领取').findOne(1000))
210 | btn_click(text('关闭').findOne(1000)); sleep(1000)
211 | if (all_task && ui.ck_baba_friend_forest_task.checked) {
212 | friend_forest_task()
213 | }
214 | }
215 | }
216 |
217 | //芭芭农场任务
218 | function baba_farm_task() {
219 | toast_console('查看-芭芭农场任务')
220 | if (!assure_click_task(input_value(ui.txt_baba_farm_task_reg_str))) return
221 | sleep(6000)
222 | do_baba_farm()
223 | cs_click(3, '#fff39f', 0.45, 0.6, 0.25, 0.35) //金色施肥按钮
224 | sleep(500); assure_back(input_value(ui.txt_task_list_ui_reg)); get_rewards(true)
225 | }
226 |
227 | //淘宝成就签到
228 | function achievement_signin_task() {
229 | toast_console('查看-淘宝成就签到任务')
230 | if (!assure_click_task(input_value(ui.txt_achievement_task_reg_str))) return
231 | btn_click(text("成就礼包").findOne(3000))
232 | btn_click(text("我收下了").findOne(1000))
233 | let btn_x = text('成就签到').findOne(2000)
234 | if (btn_x) {
235 | btn_x.parent().child(3).click()
236 | }
237 | btn_click(text("我收下了").findOne(1000))
238 | sleep(1000); assure_back(input_value(ui.txt_task_list_ui_reg)); get_rewards(true)
239 | }
240 |
241 | //淘宝成就月账单任务
242 | function achievement_month_task() {
243 | toast_console('查看-淘宝成就月账单任务')
244 | if (!assure_click_task(input_value(ui.txt_achievement_month_reg_str))) return
245 | btn_assure_click(text('月度账单').findOne(3000)); sleep(2000)
246 | assure_back(input_value(ui.txt_task_list_ui_reg)); get_rewards(true)
247 |
248 | }
249 |
250 | //喂小鸡任务,可以直接返回
251 | function feed_chick_task() {
252 | toast_console('查看-蚂蚁庄园喂小鸡任务')
253 | if (!assure_click_task(input_value(ui.txt_feedchick_task_reg_str))) return
254 | sleep(1000); btn_click(text('取消').findOne(2000));
255 | assure_back(input_value(ui.txt_task_list_ui_reg)); get_rewards(true)
256 | }
257 |
258 | //蚂蚁森林偷取能量
259 | function steal_energy(num_find) {
260 | let num = 5
261 | while (num-- && !textMatches('.+动态').findOne(1000)) sleep(500);
262 | if (textMatches('.+动态').findOne(500)) {
263 | let point = null; num = 5
264 | while (num--) {
265 | let img = captureScreen();
266 | point = findColor(img, '#ff6e01', { region: [img.getWidth() * 0.7, img.getHeight() * 0.6, img.getWidth() * 0.25, img.getHeight() * 0.25], threshold: 8 })
267 | if (point) break
268 | sleep(1000)
269 | }
270 | if (!point) {
271 | toast('找能量按钮去哪了?'); exit()
272 | }
273 | for (let i = 1; i <= num_find; i++) {
274 | for (let j = 0; j < 12; j++) {
275 | if (!cs_click(1, '#b6ff00', 0.1, 0.2, 0.8, 0.4)) break
276 | sleep(400)
277 | }
278 | if (num_find == 1) return
279 | click(point.x, point.y); sleep(1500)
280 | if (!textMatches('.+动态').findOne(1000)) break
281 | toast('找能量/' + i)
282 | }
283 | }
284 | toast('找能量执行完毕')
285 | }
286 |
287 | //蚂蚁森林任务
288 | function ant_forest_task(num, back_reg) {
289 | toast_console('查看-蚂蚁森林任务')
290 | if (!assure_click_task(input_value(ui.txt_antforest_reg_str))) return
291 | btn_click(text('打开').findOne(1000))
292 | sleep(2000); console.hide(); steal_energy(num); console.show()
293 | assure_back(back_reg); get_rewards(true)
294 | }
295 |
296 | //逛好店领10金币
297 | function browse_goodshop_task(not_key_reg_str) {
298 | toast_console('查看-逛好店并领10金币任务')
299 | if (!assure_click_task(input_value(ui.txt_browse_goog_shop_reg_str))) return
300 | for (let i = 0; i < 11 && ui.ck_earn_10coin.checked; i++) {
301 | let btn_x = desc('逛10秒+10').findOne(2000)
302 | toast_console('逛10秒+10金币/' + (i + 1))
303 | if (!btn_x) break
304 | btn_x.parent().click(); sleep(13000);
305 | if (ui.ck_pat_shop.checked) {
306 | btn_x = textContains('+10').findOne(800)
307 | if (btn_x) {
308 | btn_click(btn_x.parent()); sleep(800)
309 | }
310 | }
311 | back(); sleep(800);
312 | }
313 | wait(wait_sec); assure_back(input_value(ui.txt_task_list_ui_reg)); get_rewards(true)
314 | }
315 |
316 | //去天猫红包任务
317 | function tianmao_task() {
318 | toast_console('查看-去天猫APP领红包任务')
319 | if (!assure_click_task(input_value(ui.txt_tianmao_task_reg_str))) return
320 | sleep(15000)
321 | if (text('攻略').findOne(4000)) {
322 | btn_click(textContains('继续逛逛').findOne(1000))
323 | wait(wait_sec)
324 | }
325 | assure_back(input_value(ui.txt_task_list_ui_reg)); get_rewards(true)
326 | }
327 |
328 | //掷骰子任务
329 | function dice_task() {
330 | toast_console('查看-淘宝人生掷骰子任务')
331 | if (!assure_click_task(input_value(ui.txt_dice_task_reg_str))) return
332 | console.hide(); sleep(15000);
333 |
334 | const close_btn_base64 = "data:image/jpeg;base64,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"
335 | var close_btn_pos = find_img_from_base64(3, close_btn_base64, 0, 0, 1, 1)
336 |
337 | if (close_btn_pos) {
338 | click(close_btn_pos.x, close_btn_pos.y)
339 | }
340 |
341 | //去他大爷的神秘礼物
342 | toast_console('掷骰子任务-查看是否有神秘礼物(QTM的神秘)', true)
343 | cs_click(5, '#ffffff', 0.3, 0.1, 0.7, 0.5, true);
344 |
345 | //单击礼包
346 | toast_console('掷骰子任务-查看是否有礼包(QTM的礼包)', true)
347 | cs_click(3, '#fee998', 0.2, 0.2, 0.7, 0.8);
348 |
349 | //橙色收下奖励按钮按钮
350 | toast_console('掷骰子任务-点击5次开心收下按钮(一点都不开心- -)', true)
351 | for (let i = 0; i < 5; i++) {
352 | cs_click(1, '#ff7d44', 0.1, 0.15, 0.2, 0.5, true); sleep(500)
353 | }
354 | sleep(1000)
355 |
356 | //金色前进按钮
357 | toast_console('掷骰子任务-尝试点击色子前进', true)
358 | cs_click(4, '#fff89d', 0.2, 0.5, 0.45, 0.3); sleep(3000)
359 |
360 | //橙色收下奖励按钮按钮
361 | cs_click(2, '#ff7d44', 0.1, 0.15, 0.2, 0.5, true);
362 | back(); sleep(1000)
363 |
364 | //橙色返回淘宝按钮
365 | cs_click(3, '#ff7d44', 0.1, 0.15, 0.2, 0.5, true)
366 | btn_click(text('立刻离开').findOne(1000)); get_rewards(true);
367 |
368 | console.show()
369 | }
370 |
371 |
372 | //消消乐任务
373 | function xiaoxiaole_task() {
374 | toast_console('查看-消消乐任务')
375 | if (!assure_click_task(input_value(ui.txt_xiaoxiaole_task_reg_str))) return
376 | console.hide(); sleep(20000)
377 | cs_click(3, '#11c6bf', 0.2, 0.6, 0.3, 0.3); //开心收下奖励
378 | cs_click(3, '#ffffff', 0.8, 0.05, 0.2, 0.2) //跳过
379 | sleep(2000)
380 | //回到主页
381 | for (let i = 0; i < 6; i++) {
382 | cs_click(1, '#8d5546', 0, 0, 0.1, 0.1); sleep(1000) //back();
383 | if (cs_click(1, '#ffbd29', 0.2, 0.5, 0.45, 0.45)) break //橙色返回
384 | if (cs_click(1, '#965417', 0.2, 0.2, 0.6, 0.6, true)) break //咖啡色暂时返回
385 | }
386 | toast("回到主页了么,您?");
387 | sleep(3000) //过渡动画
388 | //邮件领取 pass
389 | cs_click(3, '#ffffff', 0.65, 0.15, 0.3, 0.5); sleep(500)
390 | //滑到屏幕下方
391 | for (let i = 0; i < 8; i++)swipe(device.width / 2, device.height / 2, device.width / 2, device.height / 5, 500)
392 | //点击第一关 绿色圆圈
393 | sleep(1000); cs_click(3, '#63cbc4', 0.5, 0.3, 0.4, 0.4, true); sleep(2000)
394 | //开始 绿色方块
395 | cs_click(2, '#11c6bf', 0.3, 0.5, 0.3, 0.3); sleep(2000)
396 | cs_click(3, '#ffffff', 0.8, 0.05, 0.2, 0.2) //跳过
397 | sleep(2000)
398 | //消除方块,兼容不同机型
399 | let rgb = '#fff0e0'
400 | img = captureScreen()
401 | let point1 = findColor(img, rgb, { region: [img.getWidth() * 0.2, img.getHeight() * 0.3, img.getWidth() * 0.4, img.getHeight() * 0.4], threshold: 4 })
402 | img = images.rotate(img, 180)
403 | let point2 = findColor(img, rgb, { region: [img.getWidth() * 0.2, img.getHeight() * 0.3, img.getWidth() * 0.4, img.getHeight() * 0.4], threshold: 4 })
404 | if (point1 && point2) {
405 | let box_x = (img.getWidth() - point2.x - point1.x) / 5
406 | let box_y = (img.getHeight() - point2.y - point1.y) / 6
407 | list_xy = [[0, 1, 0, 2], [0, 5, 0, 4], [2, 2, 3, 2]]
408 | list_xy.forEach(xy => {
409 | x1 = (xy[0] + 0.5) * box_x + point1.x; x2 = (xy[2] + 0.5) * box_x + point1.x
410 | y1 = (xy[1] + 0.5) * box_y + point1.y; y2 = (xy[3] + 0.5) * box_y + point1.y
411 | swipe(x1, y1, x2, y2, 600); sleep(800)
412 | });
413 | }
414 | cs_click(2, '#8d5546', 0, 0, 0.1, 0.1); //back()
415 | sleep(1000);
416 | //回到主页1 灰色的暂时离开
417 | cs_click(2, '#9d6031', 0.2, 0.2, 0.4, 0.5, true)
418 | //回到主页2 金色的回到主页
419 | cs_click(2, '#ffbd29', 0.2, 0.5, 0.45, 0.45); sleep(2000);
420 | //再挑战?
421 | cs_click(5, '#ffffff', 0.6, 0.15, 0.35, 0.5); sleep(800)
422 | //返回淘宝按钮
423 | back(); sleep(1000);
424 | cs_click(3, '#ff6e09', 0.2, 0.2, 0.4, 0.4, true);
425 | console.show(); get_rewards(true)
426 | }
427 |
428 | //淘金币夺宝任务,需花费100淘金币
429 | function duobao_task(back_reg) {
430 | toast_console('查看-100淘金币夺宝任务')
431 | if (!assure_click_task(input_value(ui.txt_doubao_task_reg_str))) return
432 | if (btn_assure_click(text('去“我的奖品”查看').findOne(3000))) {
433 | swipe(device.width / 2, device.height * 0.8, device.width / 2, device.height * 0.2, 500)
434 | }
435 | btn_assure_click(textMatches('立即参与|立即夺宝').findOne(3000))
436 | btn_click(text('参与兑换抽奖号').findOne(3000))
437 | let num = 5
438 | while (num--) btn_click(text('-').findOne(1000))
439 | btn_click(text('确定兑换').findOne(1000)); sleep(200)
440 | btn_click(text('确认兑换').findOne(1000)); sleep(200)
441 | btn_click(text('我知道了').findOne(1000)); sleep(1000)
442 | back(); sleep(800); back(); sleep(800); back(); sleep(800); cs_click(4, '#ff7d44', 0.1, 0.2, 0.5, 0.5, true)
443 | get_rewards(true)
444 | }
445 |
446 | //执行简单的浏览任务
447 | function do_simple_task(epoch, sec, reg_str, back_reg, reward) {
448 | toast_console('查看-可执行的简单浏览任务')
449 | skip_reg = new RegExp(input_value(ui.txt_simple_skip_reg_str))
450 | for (let i = 0; i < epoch; i++) {
451 | let obj = get_task(reg_str, skip_reg)
452 | if (!obj) {
453 | console.log('简单浏览任务执行完毕'); break
454 | }
455 | if (!obj.x) {
456 | console.log('继续执行简单浏览任务'); continue
457 | }
458 | obj.x.click();
459 | if(textMatches("下滑浏览商品.+").findOne(2000)) {
460 | console.log('执行下滑浏览操作')
461 | do_simple_task_with_swipe()
462 | } else {
463 | console.log("等待"+sec+"秒")
464 | wait(sec)
465 | }
466 | let num = 8
467 | while (num-- && !text(back_reg).findOne(1000)) {
468 | if (obj.txt.indexOf('充值金') > -1) {
469 | btn_click(text('O1CN01NN8T8d1tBlBM5R7qG_!!6000000005864-1-tps-100-100').findOne(1000))
470 | sleep(500); btn_click(text('立即领取').findOne(1000)); sleep(500);
471 | }
472 | back(); btn_position_click(desc('继续退出').findOne(400))
473 | btn_click(textMatches('残忍离开|回到淘宝').findOne(400))
474 | if (obj.txt.indexOf('淘宝吃货') > -1) cs_click(1, '#ff4c55', 0.2, 0.2, 0.4, 0.4, true)
475 | }
476 | get_rewards(reward)
477 | }
478 | }
479 |
480 | function do_simple_task_with_swipe() {
481 | for (let i = 0; i < 10; i++) {
482 | swipe(device.width / 2, device.height * 0.8, device.width / 2, device.height * 0.2, 1000)
483 | sleep(2000)
484 | }
485 | }
486 |
487 | function daily_check() {
488 | toast_console("每日来访领能量点击")
489 | btn_click(textMatches('每日来访领能量.+').findOne(2000))
490 | }
491 |
492 | //进入到淘金币列表界面
493 | function get_into_taojinbi_task_list() {
494 | let task_list_ui_reg = input_value(ui.txt_task_list_ui_reg)
495 | toast_console('启动淘宝app')
496 | app.launch('com.taobao.taobao'); sleep(1500)
497 | if (!text(task_list_ui_reg).findOne(2000)) {
498 | let num = 8
499 | while (num-- && !desc('领淘金币').findOne(1000)) {
500 | console.log("没找到 领淘金币 按钮, 准备后退")
501 | back();
502 | }
503 | let btn_x = desc('领淘金币').findOne(500)
504 | if (!btn_x) {
505 | toast_console('无法返回到淘宝主界面,请手动回到淘宝主界面后重新运行'); exit()
506 | }
507 | btn_x.click(); toast_console('进入到淘金币主界面..'); sleep(2000)
508 | for (let i = 0; i < 6; i++) {
509 | btn_click(text('签到领金币').findOne(1000)); btn_click(text('领取奖励').findOne(1000))
510 | btn_x = text('赚金币').findOne(1000)
511 | if (btn_x) break
512 | }
513 | if (!btn_x) {
514 | toast_console('无法找到[赚金币]按钮,请重新运行程序'); exit()
515 | }
516 | btn_x.click()
517 | }
518 | toast_console('进入到淘金币列表界面..'); textMatches('每日来访领能量.+').findOne(6000);
519 | }
520 |
521 |
522 | function taojinbi_task() {
523 | let simple_task_reg_str = input_value(ui.txt_simple_task_reg_str)
524 | let task_list_ui_reg = input_value(ui.txt_task_list_ui_reg)
525 | for (let i = 0; i < MAX_ALL_TASK_EPOCH; i++) {
526 | toast_console("#第" + (i + 1) + "次执行全任务")
527 | get_into_taojinbi_task_list()
528 | // 每日签到
529 | daily_check()
530 | if (ui.ck_simple_task.checked) {
531 | do_simple_task(MAX_EPOCH, wait_sec, simple_task_reg_str, task_list_ui_reg, true)
532 | }
533 | if (ui.ck_feedchick_task.checked) {
534 | feed_chick_task()
535 | }
536 | if (ui.ck_dice_task.checked) {
537 | dice_task()
538 | }
539 | if (ui.ck_baba_farm_task.checked) {
540 | baba_farm_task()
541 | }
542 | if (ui.ck_antforest.checked) {
543 | ant_forest_task(8, input_value(ui.txt_task_list_ui_reg))
544 | }
545 | if (ui.ck_browse_goog_shop.checked) {
546 | browse_goodshop_task();
547 | }
548 | if (ui.ck_achievement_month_task) {
549 | achievement_month_task()
550 | }
551 | if (ui.ck_achievement_task.checked) {
552 | achievement_signin_task()
553 | }
554 | if (ui.ck_doubao_task.checked) {
555 | duobao_task(task_list_ui_reg)
556 | }
557 | if (ui.ck_tianmao_task.checked) {
558 | tianmao_task()
559 | }
560 | if (ui.ck_xiaoxiaole_task.checked) {
561 | xiaoxiaole_task()
562 | }
563 | get_rewards(true)
564 | }
565 | toast_console('*****淘金任务执行完毕*****')
566 | }
567 |
568 | function main() {
569 | requestScreenCapture(false);
570 | console.show();
571 | console.log("淘金币" + storage.get('taojinbi_version', '') + " 本APP完全免费,作者:Javis486,github下载地址:https://github.com/JavisPeng/taojinbi")
572 | taojinbi_task();
573 | toast_console('###***全部任务执行完毕***###')
574 | }
575 |
576 |
577 | //获取选择框列表
578 | function get_check_box_list() {
579 | return [ui.ck_simple_task, ui.ck_dice_task, ui.ck_baba_farm_task, ui.ck_antforest, ui.ck_tianmao_task,
580 | ui.ck_achievement_task, ui.ck_browse_goog_shop, ui.ck_earn_10coin, ui.ck_pat_shop,
581 | ui.ck_feedchick_task, ui.ck_doubao_task, ui.ck_xiaoxiaole_task, ui.ck_achievement_month_task,
582 | ui.ck_baba_suit_task, ui.ck_baba_xxl_task, ui.ck_baba_zhifubao_task, ui.ck_baba_friend_forest_task
583 | ];
584 | }
585 |
586 | //获取输入框列表
587 | function get_input_list() {
588 | return [ui.txt_btn_reg_str, ui.txt_task_list_ui_reg, ui.txt_simple_task_reg_str, ui.txt_feedchick_task_reg_str, ui.txt_browse_goog_shop_reg_str,
589 | ui.txt_baba_farm_task_reg_str, ui.txt_dice_task_reg_str, ui.txt_doubao_task_reg_str, ui.txt_achievement_task_reg_str,
590 | ui.txt_antforest_reg_str, ui.txt_tianmao_task_reg_str, ui.txt_xiaoxiaole_task_reg_str, ui.txt_achievement_month_reg_str, ui.txt_simple_skip_reg_str
591 | ];
592 | }
593 |
594 |
595 | function input_value(x) {
596 | return String(x.getText())
597 | }
598 |
599 | //保存选项
600 | function save_opt() {
601 | let list_ck = get_check_box_list().map(x => x.checked)
602 | let list_txt = get_input_list().map(x => input_value(x))
603 | storage.put("list_ck", list_ck)
604 | storage.put("list_txt", list_txt)
605 | toast_console('选项保存成功', true);
606 | }
607 |
608 | //加载选择项状态
609 | function load_opt() {
610 | let list_ck_v = storage.get("list_ck", null)
611 | let list_txt_v = storage.get("list_txt", null)
612 | if (list_ck_v) {
613 | let list_ck = get_check_box_list();
614 | for (let i = 0; i < list_ck_v.length; i++) {
615 | list_ck[i].checked = list_ck_v[i];
616 | }
617 | }
618 | if (list_txt_v) {
619 | let list_txt = get_input_list();
620 | for (let i = 0; i < list_txt_v.length; i++) {
621 | list_txt[i].setText(list_txt_v[i]);
622 | }
623 | }
624 | }
625 |
626 | //选择项开关
627 | function task_toggle() {
628 | list_ck = get_check_box_list();
629 | list_ck.forEach(x => {
630 | x.checked = !x.checked;
631 | })
632 | }
633 |
634 | //直接启动支付宝蚂蚁森林偷取好友能量,需添加蚂蚁森林到首页
635 | function zfb_antforest() {
636 | if (thread && thread.isAlive()) {
637 | toast_console('当前程序正在执行其他任务,请结束后再运行', true); return
638 | }
639 | thread = threads.start(function () {
640 | requestScreenCapture(false);
641 | app.launch('com.eg.android.AlipayGphone'); sleep(2000)
642 | let btn_ant = textContains('蚂蚁森林').findOne(5000)
643 | if (!btn_ant) {
644 | toast_console('无法找到蚂蚁森林,请先添加到支付宝首页', true); return
645 | }
646 | btn_position_click(btn_ant)
647 | steal_energy(64);
648 | });
649 | }
650 |
651 | //单独执行芭芭农场全任务
652 | function solo_baba_farm() {
653 | if (thread && thread.isAlive()) {
654 | toast_console('当前程序正在执行其他任务,请结束后再运行', true); return
655 | }
656 | thread = threads.start(function () {
657 | requestScreenCapture(false);
658 | app.launch('com.taobao.taobao');
659 | if (!text('亲密度').findOne(1000)) {
660 | //btn_assure_click(desc('我的淘宝').findOne(3000))
661 | let btn_x = desc('芭芭农场').findOne(3000)
662 | if (!btn_x) {
663 | toast_console('无法进入芭芭农场主界面,请手动回到淘宝主界面后重新运行'); exit()
664 | }
665 | btn_x.click(); toast_console('进入芭芭农场主界面..');
666 | sleep(6000)
667 | btn_click(text('立即去收').findOne(2000))
668 | if (text('兑换').findOne(3000)) {
669 | cs_click(2, '#984f2e', 0.05, 0.2, 0.1, 0.3); sleep(6000)
670 | }
671 | }
672 | console.show()
673 | do_baba_farm(true)
674 | toast_console('**芭芭农场任务完成**');
675 | });
676 | }
677 |
678 | //支付宝芭芭农场
679 | function zhifubao_baba_farm_task() {
680 | toast_console('查看-支付宝芭芭农场任务')
681 | //if (!assure_click_task('支付宝芭芭农场')) return
682 | btn_position_click(textContains('支付宝芭芭农场').findOne(1000))
683 | toast_console('等待农场主界面出现');
684 | btn_click(text('继续赚肥料').findOne(7000)); sleep(2000)
685 | toast_console('领取肥料');
686 | cs_click(4, '#fed362', 0.55, 0.65, 0.45, 0.15); sleep(1500); //领取肥料
687 | btn_click(text('去施肥').findOne(1000)); sleep(500)
688 | if (cs_click(2, '#fed362', 0.1, 0.2, 0.1, 0.2, true)) { //打开列表
689 | toast_console('开始领取'); sleep(1500)
690 | for (let i = 0; i < 4; i++) {
691 | btn_click(text('领取').findOne(500)); sleep(500)
692 | }
693 | let btn_water = textContains('浇水').findOne(1000)//蚂蚁森林任务
694 | if (btn_water) {
695 | click(btn_water.bounds().right + 10, btn_water.bounds().top)
696 | console.hide(); steal_energy(1, true); assure_back('队伍设置'); console.show()
697 | sleep(1000); btn_click(text('领取').findOne(1000));
698 | }
699 | if (btn_click(text('去逛逛').findOne(1000))) {
700 | sleep(4000); btn_click(textContains('继续赚').findOne(5000)); return
701 | }
702 | }
703 | assure_back('x500')
704 | }
705 |
706 | //芭芭农场中的好友林
707 | function friend_forest_task() {
708 | toast_console('前往芭芭农场中的好友林'); sleep(3000)
709 | btn_click(textContains('我知道啦').findOne(3500))
710 | console.hide()
711 | cs_click(3, '#fed362', 0.01, 0.5, 0.2, 0.3); sleep(2000)// 打开好友林
712 | if (cs_click(3, '#b63223', 0.4, 0.1, 0.2, 0.3)) { //中心领取
713 | btn_click(textMatches('继续加油|开心收下').findOne(1000))
714 | }
715 | //收取肥料
716 | let fu = images.fromBase64('/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wAARCAAOABEDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAMCBQb/xAAcEAACAwEBAQEAAAAAAAAAAAABAgADERITIQT/xAAXAQADAQAAAAAAAAAAAAAAAAAAAwQF/8QAGBEBAQADAAAAAAAAAAAAAAAAAAECERL/2gAMAwEAAhEDEQA/ALHn1f8AQQzau59khWE8LFZtY/RsQz2e1qVkAEndjK1ue2hWZeUOiZ8TY3dabmEX0YQP5f/Z')
717 | for (let i = 0; i < 8; i++) {
718 | let img = captureScreen()
719 | var point = findImage(img, fu, { region: [0.1 * device.width, 0.3 * device.height], threshold: 0.9 });
720 | if (point) {
721 | click(point.x, point.y); sleep(1000)
722 | }
723 | }
724 | if (btn_click(text('点我领肥料').findOne(1000))) {
725 | btn_click(text('立即去浇灌').findOne(1000)); console.show(); sleep(4000); return
726 | }
727 | if (btn_click(text('立即领取').findOne(1000))) {
728 | btn_click(text('开心收下').findOne(1000))
729 | }
730 | console.show(); back()
731 | }
732 |
733 | //取消关注的店铺
734 | function cancel_pat_shop() {
735 | if (thread && thread.isAlive()) {
736 | toast_console('当前程序正在执行其他任务,请结束后再运行', true); return
737 | }
738 | thread = threads.start(function () {
739 | app.launch('com.taobao.taobao');
740 | toast('单击我的淘宝'); btn_assure_click(desc('我的淘宝').findOne(6000))
741 | toast('点击关注店铺'); btn_assure_click(desc('订阅店铺').findOne(2000)); sleep(1000)
742 | btn_assure_click(desc('全部').findOne(2000));
743 | for (let i = 0; i < MAX_EPOCH; i++) {
744 | let list_x = className("ImageView").find()
745 | for (let i = 0; i < list_x.length; i++) {
746 | let btn_x = list_x[i]
747 | let h = btn_x.bounds().bottom - btn_x.bounds().top
748 | if (h < 10) { //hight较小的控件
749 | if (btn_x && btn_x.parent()) {
750 | btn_x.parent().click(); sleep(500)
751 | let bnt_cancel = desc('取消订阅').findOne(1000)
752 | if (bnt_cancel) {
753 | btn_click(bnt_cancel.parent()); sleep(500)
754 | }
755 | }
756 | }
757 | }
758 | }
759 | })
760 | }
761 |
762 | ui.layout(
763 |
764 |
765 |
766 |
767 |
768 |
769 |
831 |
832 |
833 | );
834 |
835 |
836 | //创建选项菜单(右上角)
837 | ui.emitter.on("create_options_menu", menu => {
838 | menu.add("关于");
839 | });
840 |
841 | //监听选项菜单点击
842 | ui.emitter.on("options_item_selected", (e, item) => {
843 | switch (item.getTitle()) {
844 | case "关于":
845 | alert("关于", "淘金币" + storage.get('taojinbi_version', '') + " 本APP完全免费,作者:Javis486,github下载地址:https://github.com/JavisPeng/taojinbi");
846 | break;
847 | }
848 | e.consumed = true;
849 | });
850 | activity.setSupportActionBar(ui.toolbar);
851 |
852 | //设置滑动页面的标题
853 | ui.viewpager.setTitles(["淘金币", '芭芭农场', "参数配置"]);
854 | //让滑动页面和标签栏联动
855 | ui.tabs.setupWithViewPager(ui.viewpager);
856 | //按钮单击事件
857 | ui.btn_toogle.click(task_toggle)
858 | ui.btn_save_opt.click(save_opt)
859 | ui.btn_antforest.click(zfb_antforest)
860 | ui.btn_load_opt.click(load_opt)
861 | ui.btn_cancel_pat_shop.click(cancel_pat_shop)
862 | ui.btn_exit.click(function () { ui.finish() })
863 | ui.btn_babafarm.click(solo_baba_farm)
864 | //运行选择项
865 | ui.btn_run_main.click(function () {
866 | if (thread && thread.isAlive()) {
867 | toast_console('当前程序正在执行其他任务,请结束后再运行', true); return
868 | }
869 | thread = threads.start(function () {
870 | main(); exit()
871 | })
872 | })
873 |
--------------------------------------------------------------------------------