├── 11.11
└── 淘宝.js
├── LICENSE
├── README.md
├── img
├── README.md
├── Snipaste_2020-05-24_21-51-14.png
├── Snipaste_2020-05-24_21-51-30.png
├── Snipaste_2020-05-29_15-34-16.png
├── Snipaste_2020-05-29_15-34-31.png
├── helper-618-beta.png
├── jd.png
├── jdhelper.png
├── logo.png
└── 淘宝618.png
└── src
├── 618助手.js
├── README.md
├── 京东.js
└── 淘宝.js
/11.11/淘宝.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 淘宝天猫双11喵喵喵赚喵币全自动
3 | * 作者:ZainCheung
4 | * 吾爱首发
5 | */
6 |
7 | var i = 0;
8 | var j = 0;
9 |
10 | var taskList = ['去浏览','去逛逛','去搜索','领取奖励'];
11 |
12 | var height = device.height;
13 | var width = device.width;
14 | setScreenMetrics(width, height);
15 |
16 | //速度
17 | var speed = 1;
18 |
19 | dialogs.alert("请确认无障碍和悬浮窗权限已开启,感谢使用,双11列车即将发车\n作者:ZainCheung\n仅供学习参考, 吾爱首发");
20 | menu: while (true) {
21 | var choose = dialogs.select("请根据你的手机性能(卡不卡)以及网速选择速度", "都挺好的,整个快速的", "一般吧,正常执行就好", "网速有点差,稍微慢点吧", "我手机很砖,整个最慢的吧");
22 | switch (choose) {
23 | case -1:
24 | toast("请选择");
25 | continue menu;
26 | case 0:
27 | toast("即将快速执行脚本");
28 | speed = 0.75;
29 | break menu;
30 | case 1:
31 | toast("即将一般速度执行脚本");
32 | speed = 1;
33 | break menu;
34 | case 2:
35 | toast("即将低速执行脚本");
36 | speed = 1.25;
37 | break menu;
38 | case 3:
39 | toast("即将缓慢执行脚本");
40 | speed = 1.5;
41 | break menu;
42 | default:
43 | break;
44 | }
45 | }
46 |
47 | console.show();
48 | sleep(10);
49 | console.setSize(device.width / 2, device.height / 3);
50 | auto.waitFor();
51 |
52 | sleep(random(1001, 1021) * speed);
53 | //打开活动页面
54 | log("正在打开淘宝");
55 | launch("com.taobao.taobao");
56 | sleep(random(1001, 1021) * speed);
57 | log("正在等待进入天猫双11喵喵喵活动页面\n如果没有反应请手动点击搜索框");
58 | className("android.view.View").desc("搜索").waitFor()
59 | let search = className("android.view.View").desc("搜索").depth(12).findOne().bounds()
60 | click(search.centerX(),search.centerY())
61 | desc("搜索发现").findOne()
62 | sleep(random(5, 10) * speed);
63 | setText("喵币")
64 | sleep(random(5, 10) * speed);
65 | id("searchbtn").findOne().click()
66 | className("android.widget.Button").text("赚喵币").waitFor()
67 |
68 | sleep(random(1001, 1021) * speed);
69 | className("android.widget.Button").text("赚喵币").findOne().click()
70 |
71 | className("android.view.View").text("累计任务奖励").waitFor()
72 | sleep(random(1501, 1521) * speed);
73 |
74 | taskList.forEach(task => {
75 | while (textContains(task).exists()) {
76 | log((i+1) + "------任务开始");
77 | var a = text(task).findOnce(j);
78 | switch (task) {
79 | // case '去完成':
80 | // var name = a.parent().child(0).child(0).text();
81 | // if(name.indexOf("签到") != -1){
82 | // a.click();
83 | // log('签到成功')
84 | // break;
85 | // }else if((name.indexOf("邀请") != -1) || (name.indexOf("淘宝特价版") != -1)){
86 | // j++;
87 | // log('跳过该任务');
88 | // break;
89 | // }
90 | // sleep(random(501, 515) * speed);
91 | case '去逛逛':
92 | case '去搜索':
93 | case '去浏览':
94 | sleep(random(501, 515) * speed);
95 | a.click();
96 | sleep(random(1501, 1515) * speed);
97 | swipe(width / 2, height - 500, width / 2, 0, random(801, 818)* speed);
98 | sleep(random(2501, 2601) * speed);
99 | swipe(width / 2, height - 500, width / 2, 0, random(801, 818) * speed);
100 | sleep(random(8001, 8042) * speed);
101 | swipe(width / 2, height - 500, width / 2, 0, random(801, 818) * speed);
102 | textContains("完成").findOne(random(10001, 10018) * speed);
103 | i++;
104 | log(i+ "------任务结束")
105 | sleep(random(601, 615) * speed);
106 | back();
107 | break;
108 | case '领取奖励':
109 | sleep(random(501, 515) * speed);
110 | a.click();
111 | log('奖励领取成功');
112 | break;
113 | default:
114 | log("default")
115 | break;
116 | }
117 | sleep(random(2001, 2101) * speed);
118 | }
119 | });
120 |
121 | log("任务貌似已经做完了\n如未完成,请重新运行");
122 | exit();
123 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 ZainCheung
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | [💡 快速开始](#快速开始)
13 |
14 | [📚 功能](#功能)
15 |
16 | [🎁 下载地址](#下载地址)
17 |
18 | [📷 运行截图](#运行截图)
19 |
20 | [🔔 注意事项](#注意事项)
21 |
22 | [🔒 安全性](#安全性)
23 |
24 | [📋 常见问题](#常见问题)
25 |
26 | [🐛 版本历史与更新日志](#版本历史与更新日志)
27 |
28 | [👻 责任说明](#责任说明)
29 |
30 | # 快速开始
31 | 1. 下载并安装app;
32 | 2. 安装成功先不要打开,去设置->应用->权限->找到“叠蛋糕全自动”,然后进去把悬浮窗权限打开;
33 | 3. 回到桌面,打开app;
34 | 4. 根据app弹窗提示选择适合的速度;
35 | 5. app会自动跳到无障碍服务,你需要在里面找到这个app,并且打开它的无障碍开关;
36 | 6. 静等一到两秒,悬浮窗里会出现“正在进入个人中心”,然后app将会自动打开京东并跳转到指定的活动页面;
37 | 7. 等待app将任务做完。
38 |
39 | # 功能
40 | ## 京东
41 | 1. 可以选择执行速度,避免脚本执行出错;
42 | 2. 自动打开京东进入活动任务页面;
43 | 3. 自动完成签到;
44 | 4. 自动完成快速浏览商品任务;
45 | 5. 自动完成8秒浏览任务;
46 | 6. 自动完成加购;
47 | 7. 自动检查运行出错并纠正。
48 |
49 | ## 淘宝
50 | 1. 可以选择执行速度,避免脚本执行出错;
51 | 2. 自动打开淘宝进入活动任务页面(暂时还需要手动点击);
52 | 3. 自动完成签到;
53 | 4. 自动完成兑换喵币任务;
54 | 5. 自动完成15秒浏览任务。
55 |
56 | # 下载地址
57 | ## 淘宝双11全自动app所有发布版
58 | 蓝奏云地址:https://zaincheung.lanzoui.com/b00txr84h
59 | 密码:73ij
60 |
61 | ## 京东叠蛋糕全自动app所有发布版本以及源码
62 | 蓝奏云地址:https://zaincheung.lanzous.com/b00tkff6b
63 | 密码:hcm1
64 |
65 | 天翼云地址:https://cloud.189.cn/t/QJ3mQvBRFJBz
66 | 访问码:bi7l
67 |
68 | ## 淘宝列车全自动app所有发布版本以及源码
69 | 蓝奏云地址:https://zaincheung.lanzous.com/b00tkz0vg
70 | 密码:3fod
71 |
72 | 天翼云地址:https://cloud.189.cn/t/E3mMBjmYJRF3
73 | 访问码:un2b
74 |
75 | ## 脚本运行环境--Auto.js
76 | 蓝奏云地址:https://zaincheung.lanzous.com/id4pe9a
77 |
78 | 天翼云地址:https://cloud.189.cn/t/YJF7na7faM7n
79 | 访问码:8yjy
80 |
81 | ## 淘宝+京东集成尝鲜版脚本
82 | 蓝奏云地址:https://zaincheung.lanzous.com/b00tl6x1g
83 | 密码:bed2
84 |
85 | 天翼云地址:https://cloud.189.cn/t/3aYnEb3qAb2m
86 | 访问码:ara3
87 |
88 | # 运行截图
89 |
90 | 
91 |
92 | 
93 |
94 | 
95 |
96 | 
97 |
98 | # 注意事项
99 |
100 | 1. app会自动帮你打开京东和淘宝,但是淘宝打开后你需要手动点进活动页面,就是瓜分10亿那个入口;
101 | 2. 如果淘宝app是第一次使用,还需要先进去给你的列车升级到2级以上,不然每次进去都有弹窗;
102 | 3. 如果你选择快速模式而出现了问题,可以重新启动脚本,选择较慢的速度执行;
103 | 4. 运行前需要给软件打开无障碍服务以及悬浮窗权限;
104 | 5. 有时候打开app没有反应的话可以关掉重新打开一次;
105 | 6. 收菜的任务还是没有找到解决办法,有了解的方便的话可以告知一下,非常感谢;
106 | 7. 如果拿到脚本运行出错,请检查一下自己所用的Autojs版本,如有不同可以下载本项目提供的安装包。
107 |
108 | # 安全性
109 | 删除了APP不需要的权限,只保留了提示框权限和访问设置权限(帮助打开无障碍服务),加了安全签名(为了不让手机误报病毒)并且通过了32个杀毒引擎的测毒。
110 |
111 |
112 | # 常见问题
113 | **1. 为什么app在打开京东后就没有反应了咋回事?**
114 |
115 | 答:在使用之前你需要先关掉京东的后台,确保app打开时是从首页进去的,而不是你的购物车页面或者商品页面。
116 |
117 |
118 | **2. 纠正功能为什么没有让我回到正确的页面?**
119 |
120 | 答:纠正功能主要是为了防止弹出窗口,以及浏览8秒商品的长时间等待期间误触而新增的,脚本正在加购或者快速浏览时请不要干扰它,它干起活来很专注(滑稽)。
121 |
122 |
123 | **3. 加购任务为什么执行完一次就回到桌面了?**
124 |
125 | 答:因为任务完成后执行了返回操作,然而系统给它指向了桌面,不过这些问题已经在新版本里解决了,新增的纠正功能可以自动回到活动页面继续刷任务。需要注意的是回到桌面后大约会等待5秒左右才可以回去,这是因为在第二次纠正前还有五次第一次纠正,所以还烦请稍稍耐心等待一下,不要见没有回去以为出问题就草草关掉了。
126 |
127 |
128 | **4. 单靠这个app可以完成所有的任务吗?**
129 |
130 | 答:除了邀请好友助力以及AR游戏等任务无法帮你完成,其他已经全部覆盖,目前可以做到一次打开,刷完所有非主观任务,本人测试可以做完50次不断开(2020.05.26)。
131 |
132 |
133 | **5. 为什么要用app而不是去调用接口一键完成所有任务?**
134 |
135 | 答:app运行的原理就是模拟你对屏幕的操作,这样JD查不到任何违规行为,如果是要通过调用接口挂多个号,,有黑号的风险,我觉得为了这个活动没必要冒这个风险。
136 |
137 |
138 | **6. 可以给多个jd号刷任务么?**
139 |
140 | 答:如果有应用分身可以借助分身,然后app启动时会弹出选择分身。如果不用分身,在上一个账号做完所有任务后,切换到下一个账号,多个账号轮流切换,虽然稍有些麻烦,但比较保险。
141 |
142 | **7. 导入脚本后运行总是报错怎么回事?**
143 |
144 | 答:请确保使用的是本项目推荐的Autojs版本,即4.1.0Alpha5版本,如果不是,还请转至下载地址处下载。
145 |
146 | **更多问题欢迎提出issues,或者前往首发论坛查看**
147 |
148 | 淘宝列车:https://www.52pojie.cn/thread-1189363-1-1.html
149 |
150 | 京东叠蛋糕:https://www.52pojie.cn/thread-1186000-1-1.html
151 |
152 | 淘宝+京东集成尝鲜版:https://www.52pojie.cn/thread-1190625-1-1.html
153 |
154 | # 版本历史与更新日志
155 | ## 淘宝
156 | ### v1.1.0
157 | > 2020.06.01
158 | 1. 完全随机时间模拟,操作更隐匿更安全;
159 | 2. 去掉了兑换模块,防止部分人因为没有淘金币卡住的情况;
160 | 3. 更改了速度控制机制,调整了整体速度的平衡性
161 |
162 | ## 京东
163 | ### v1.3.0
164 | > 2020.05.29
165 | 1. 修复了快速浏览五个商品返回总是要纠正的BUG;
166 | 2. 更改了速度调节机制,速度更合适;
167 | 3. 优化了代码结构,模块进一步解耦。
168 |
169 | ### v1.2.0
170 | > 2020.05.29
171 | 1. 修复了更新导致的加购BUG
172 |
173 | ### v1.1.0
174 | > 2020.05.25
175 | 1. 新增了脚本纠正,当你误触了屏幕后脚本会自动纠正回到正确的页面
176 | 2. 优化了代码结构
177 | 3. 上传了源代码
178 |
179 | ## 淘宝+京东集成尝鲜版
180 | ### v2.2.0
181 | > 2020.06.03
182 | 1. 修复了京东加购返回桌面异常问题;
183 | 2. 优化了悬浮窗控制台;
184 | 3. 优化了执行完毕后的流程;
185 | 4. 添加了版本号查看。
186 |
187 | ### v2.1.0
188 | > 2020.06.02
189 | 1. 修复了淘宝不能使用的问题;
190 | 2. 优化代码
191 |
192 | # 责任说明
193 | 本项目的所有脚本以及软件仅用于个人学习开发测试,勿用于商业及非法用途,如产生法律纠纷与本人无关。
194 |
--------------------------------------------------------------------------------
/img/README.md:
--------------------------------------------------------------------------------
1 | ## 软件测试截图
2 |
--------------------------------------------------------------------------------
/img/Snipaste_2020-05-24_21-51-14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZainCheung/helper-618/cdba3f77dd8768ec7501aafe277fef10bee48f66/img/Snipaste_2020-05-24_21-51-14.png
--------------------------------------------------------------------------------
/img/Snipaste_2020-05-24_21-51-30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZainCheung/helper-618/cdba3f77dd8768ec7501aafe277fef10bee48f66/img/Snipaste_2020-05-24_21-51-30.png
--------------------------------------------------------------------------------
/img/Snipaste_2020-05-29_15-34-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZainCheung/helper-618/cdba3f77dd8768ec7501aafe277fef10bee48f66/img/Snipaste_2020-05-29_15-34-16.png
--------------------------------------------------------------------------------
/img/Snipaste_2020-05-29_15-34-31.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZainCheung/helper-618/cdba3f77dd8768ec7501aafe277fef10bee48f66/img/Snipaste_2020-05-29_15-34-31.png
--------------------------------------------------------------------------------
/img/helper-618-beta.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZainCheung/helper-618/cdba3f77dd8768ec7501aafe277fef10bee48f66/img/helper-618-beta.png
--------------------------------------------------------------------------------
/img/jd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZainCheung/helper-618/cdba3f77dd8768ec7501aafe277fef10bee48f66/img/jd.png
--------------------------------------------------------------------------------
/img/jdhelper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZainCheung/helper-618/cdba3f77dd8768ec7501aafe277fef10bee48f66/img/jdhelper.png
--------------------------------------------------------------------------------
/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZainCheung/helper-618/cdba3f77dd8768ec7501aafe277fef10bee48f66/img/logo.png
--------------------------------------------------------------------------------
/img/淘宝618.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZainCheung/helper-618/cdba3f77dd8768ec7501aafe277fef10bee48f66/img/淘宝618.png
--------------------------------------------------------------------------------
/src/618助手.js:
--------------------------------------------------------------------------------
1 | "ui";
2 |
3 | var color = "#009688";
4 |
5 | main();
6 |
7 | function main() {
8 |
9 | ui.layout(
10 |
11 |
12 |
13 |
14 |
15 |
16 |
128 |
129 |
130 |
131 |
137 |
138 |
139 | );
140 |
141 | // storages.remove("config");
142 | var config = storages.create("config");
143 | var taobao = config.get("taobao", {
144 | speed: 50,
145 | list: [
146 | {
147 | id: "duihuan",
148 | title: "是否开启兑换",
149 | task: "去兑换",
150 | color: "#e91e63",
151 | done: true
152 | },
153 | {
154 | id: "search",
155 | title: "是否开启搜索",
156 | task: "去搜索",
157 | color: "#ab47bc",
158 | done: true
159 | },
160 | {
161 | id: "weiguan",
162 | title: "是否开启围观",
163 | task: "去围观",
164 | color: "#5c6bc0",
165 | done: true
166 | },
167 | {
168 | id: "liulan",
169 | title: "是否开启浏览",
170 | task: "去浏览",
171 | color: "#7e57c2",
172 | done: true
173 | }
174 | ]
175 | });
176 | var jd = config.get("jd", {
177 | speed: 50,
178 | goldTime: 20,
179 | gold: false,
180 | list: [
181 | {
182 | id: "jiagou",
183 | title: "是否开启加购",
184 | color: "#5c6bc0",
185 | done: true
186 | },
187 | {
188 | id: "auto",
189 | title: "是否开启全自动",
190 | color: "#7e57c2",
191 | done: true
192 | }
193 | ]
194 | })
195 |
196 | var helpText = '按下音量键上键即可关闭正在运行的脚本。\n\n手机性能以及网络情况错综复杂,自定义最适合自己的运行速度(1-100),作者建议一般情况使用50的增幅即可。\n\n勾选你需要的功能开关即可使用对应的自动化服务。\n\n淘宝目前需要手动打开活动页面。\n\n京东默认自带纠正,如果试用体验不好可以及时前往吾爱帖子下反馈。\n\n如果悬浮窗不显示可以检查是否给予app悬浮窗权限或者重启app。\n\n最后欢迎前往吾爱破解论坛搜索ZainCheung或者superBoyJack,在帖子下留言反馈。';
197 | var questionText = '1.为什么app在打开京东后就没有反应了咋回事?\n答:在使用之前你需要先关掉京东的后台,确保app打开时是从首页进去的,而不是你的购物车页面或者商品页面。\n\n2.纠正功能为什么没有让我回到正确的页面?\n答:纠正功能主要是为了防止弹出窗口,以及浏览8秒商品的长时间等待期间误触而新增的,脚本正在加购或者快速浏览时请不要干扰它,它干起活来很专注(滑稽)。\n\n3.加购任务为什么执行完一次就回到桌面了?\n答:因为任务完成后执行了返回操作,然而系统给它指向了桌面,不过这些问题已经在新版本里解决了,纠正功能可以自动回到活动页面继续刷任务。需要注意的是回到桌面后大约会等待5秒左右才可以回去,这是因为在第二次纠正前还有五次第一次纠正,所以还烦请稍稍耐心等待一下,不要见没有回去以为出问题就草草关掉了。如果实在忍受不了加购的可以选择不勾选它的框框。\n\n4.单靠这个app可以完成所有的任务吗?\n答:除了京东的邀请好友助力,AR游戏以及淘宝的收菜等任务无法帮你完成,其他已经全部覆盖,目前京东可以做到一次打开,刷完所有非主观任务,最高可以做完50次不断开。\n\n5.为什么要用app而不是去调用接口一键完成所有任务?\n答:app运行的原理就是模拟你对屏幕的操作,这样JD和淘宝不能认为这是违规行为,如果是要通过调用接口挂多个号,,有黑号的风险,我觉得为了这个活动没必要冒这个风险。\n\n6.可以给多个账号刷任务么?\n答:可以。如果有应用分身可以不开启全自动,借助分身,然后app启动时会弹出选择分身。如果不用分身,在上一个账号做完所有任务后,切换到下一个账号,多个账号轮流切换,虽然稍有些麻烦,但比较保险。';
198 | var aboutText = '618助手 v2.0.0\n\n软件仅供学习参考使用,切勿用于非法操作。\n\n软件代码全部免费开源,如有通过网上购买此软件可以要求退款。\n\n作者ZainCheung享有代码以及软件的最终解释权。';
199 | ui.help.setText(helpText);
200 | ui.question.setText(questionText);
201 | ui.about.setText(aboutText);
202 |
203 | // 淘宝配置项
204 | ui.taobaoSpeed.setText(taobao.speed.toString());
205 | ui.taobaoList.setDataSource(taobao.list);
206 | ui.taobaoSpeed.addTextChangedListener({
207 | afterTextChanged: (text) => {
208 | var tbSpeed = Number(text);
209 | if ((tbSpeed >= 1) && (tbSpeed <= 100)) {
210 | taobao.speed = tbSpeed;
211 | } else {
212 | ui.taobaoSpeed.setError("请填写1-100的数字")
213 | }
214 |
215 | }
216 | })
217 | ui.taobaoList.on("item_bind", function (itemView, itemHolder) {
218 | //绑定勾选框事件
219 | itemView.done.on("check", function (checked) {
220 | let item = itemHolder.item;
221 | item.done = checked;
222 | let paint = itemView.title.paint;
223 | itemView.title.invalidate();
224 | });
225 | });
226 | ui.taobaoList.on("item_click", function (item, i, itemView, listView) {
227 | itemView.done.checked = !itemView.done.checked;
228 | });
229 |
230 | // 京东配置项
231 | ui.jdSpeed.setText(jd.speed.toString());
232 | ui.goldTime.setText(jd.goldTime.toString());
233 | ui.jdList.setDataSource(jd.list);
234 | ui.jdSpeed.addTextChangedListener({
235 | afterTextChanged: (text) => {
236 | var jdSpeed = Number(text);
237 | if ((jdSpeed >= 1) && (jdSpeed <= 100)) {
238 | jd.speed = jdSpeed;
239 | } else {
240 | ui.jdSpeed.setError("请填写1-100的数字")
241 | }
242 |
243 | }
244 | })
245 | ui.goldTime.addTextChangedListener({
246 | afterTextChanged: (text) => {
247 | var time = Number(text);
248 | if ((time >= 1) && (time <= 50)) {
249 | jd.goldTime = time;
250 | } else {
251 | ui.goldTime.setError("请填写1-50的数字")
252 | }
253 |
254 | }
255 | })
256 | ui.jdList.on("item_bind", function (itemView, itemHolder) {
257 | //绑定勾选框事件
258 | itemView.done.on("check", function (checked) {
259 | let item = itemHolder.item;
260 | item.done = checked;
261 | let paint = itemView.title.paint;
262 | itemView.title.invalidate();
263 | });
264 | });
265 | ui.jdList.on("item_click", function (item, i, itemView, listView) {
266 | itemView.done.checked = !itemView.done.checked;
267 | });
268 |
269 |
270 |
271 | //当离开本界面时保存
272 | ui.emitter.on("pause", () => {
273 | config.put("taobao", taobao);
274 | config.put("jd", jd);
275 | });
276 |
277 | //创建选项菜单(右上角)
278 | // ui.emitter.on("create_options_menu", menu => {
279 | // menu.add("关于");
280 | // });
281 | //监听选项菜单点击
282 | // ui.emitter.on("options_item_selected", (e, item) => {
283 | // switch (item.getTitle()) {
284 | // case "关于":
285 | // alert("关于", "欢迎使用618助手v2.0.0");
286 | // break;
287 | // }
288 | // e.consumed = true;
289 | // });
290 | activity.setSupportActionBar(ui.toolbar);
291 |
292 | //设置滑动页面的标题
293 | ui.viewpager.setTitles(["淘宝", "京东", "更多"]);
294 | //让滑动页面和标签栏联动
295 | ui.tabs.setupWithViewPager(ui.viewpager);
296 |
297 | //让工具栏左上角可以打开侧拉菜单
298 | ui.toolbar.setupWithDrawer(ui.drawer);
299 |
300 | ui.menu.setDataSource([
301 | {
302 | title: "喜欢软件",
303 | icon: "@drawable/ic_favorite_black_48dp"
304 | },
305 | {
306 | title: "作者",
307 | icon: "@drawable/ic_android_black_48dp"
308 | },
309 | {
310 | title: "版本",
311 | icon: "@drawable/ic_settings_black_48dp"
312 | },
313 | {
314 | title: "退出",
315 | icon: "@drawable/ic_exit_to_app_black_48dp"
316 | }
317 | ]);
318 |
319 | ui.menu.on("item_click", item => {
320 | switch (item.title) {
321 | case "喜欢软件":
322 | app.openUrl('https://www.52pojie.cn/thread-1186000-1-1.html');
323 | break;
324 | case "作者":
325 | alert("作者", "ZainCheung");
326 | break;
327 | case "版本":
328 | alert("版本", "尝鲜版 v2.2.0");
329 | break;
330 | case "退出":
331 | ui.finish();
332 | break;
333 | }
334 | });
335 |
336 | ui.gototb.click(function () {
337 | threads.start(function () {
338 | var i = 0;
339 | var j = 0;
340 | // 暂时去掉,'去收菜'
341 | // var taskList = ['去兑换', '去搜索', '去围观', '去浏览'];
342 | var taskList = [];
343 | taobao.list.forEach(element => {
344 | if(element.done){
345 | taskList.push(element.task);
346 | }
347 | });
348 | var speed = 100 - taobao.speed;
349 |
350 | var height = device.height;
351 | var width = device.width;
352 | setScreenMetrics(width, height);
353 |
354 | console.show();
355 | sleep(10);
356 | console.setSize(device.width / 2, device.height / 3);
357 | auto.waitFor();
358 |
359 | sleep(random(21, 31) * speed);
360 | //打开活动页面
361 | log("正在打开淘宝");
362 | launch("com.taobao.taobao");
363 | sleep(random(21, 31) * speed);
364 | log("正在等待进入列车活动页面");
365 | log("请手动点进列车活动页面")
366 | // sleep(5000);
367 | className("android.widget.Button").text("做任务,领喵币").waitFor()
368 |
369 | sleep(random(21, 31) * speed);
370 | if (!textContains("淘宝成就点").exists()) {
371 | className("android.widget.Button").text("做任务,领喵币").findOne().click()
372 | log("点击成功");
373 | }
374 | sleep(random(31, 41) * speed);
375 | if (className("android.widget.Button").text("签到").exists()) {
376 | className("android.widget.Button").text("签到").click()
377 | sleep(random(201, 211));
378 | log("签到成功");
379 | } else { log("已签到"); }
380 | sleep(random(31, 41) * speed);
381 |
382 | taskList.forEach(task => {
383 | while (textContains(task).exists()) {
384 | log("开始做第" + (i + 1) + "次任务!");
385 | var a = text(task).findOnce(j);
386 | switch (task) {
387 | case '去兑换':
388 | log("开始兑换喵币");
389 | sleep(random(11, 21) * speed);
390 | a.click();
391 | sleep(random(11, 21) * speed);
392 | i++;
393 | log("已完成兑换");
394 | log("已完成第" + i + "次任务!");
395 | break;
396 | case '去收菜':
397 | log("开始去收菜");
398 | sleep(random(11, 21) * speed);
399 | a.click();
400 | sleep(random(11, 21) * speed);
401 | textStartsWith("收3次作物").findOne(5000);
402 | sleep(random(11, 21) * speed);
403 | if (text("立即去收").exists()) {
404 | text("立即去收").findOne().click();
405 | }
406 | sleep(random(11, 21) * speed);
407 | for (var t = 0; t < 5; t++) {
408 | try {
409 | textContains("万").findOnce(t).click();
410 | sleep(random(21, 41) * speed)
411 | } catch (error) {
412 | log("收菜出错了")
413 | continue;
414 | }
415 | }
416 | sleep(random(31, 41) * speed);
417 | i++;
418 | log("收完菜准备回去了")
419 | log("已完成第" + i + "次任务!")
420 | back();
421 | break;
422 | case '去搜索':
423 | case '去围观':
424 | case '去浏览':
425 | sleep(random(11, 21) * speed);
426 | a.click();
427 | sleep(random(31, 41) * speed);
428 | swipe(width / 2, height - 500, width / 2, 0, random(16, 18) * speed);
429 | sleep(random(51, 61) * speed);
430 | swipe(width / 2, height - 500, width / 2, 0, random(16, 18) * speed);
431 | sleep(random(121, 131) * speed);
432 | swipe(width / 2, height - 500, width / 2, 0, random(16, 18) * speed);
433 | textContains("完成").findOne(random(201, 211) * speed);
434 | i++;
435 | log("已完成第" + i + "次任务!")
436 | back();
437 | break;
438 | default:
439 | log("default")
440 | break;
441 | }
442 | sleep(random(41, 51) * speed);
443 | }
444 | });
445 |
446 | console.info("任务貌似已经做完了\n如未完成,请重新运行");
447 | threads.shutDownAll();
448 | });
449 | });
450 |
451 | ui.gotojd.click(function () {
452 | threads.start(function () {
453 | console.show();
454 | sleep(10);
455 | console.setSize(device.width / 2, device.height / 3);
456 | auto.waitFor();
457 |
458 | var jdAuto;
459 | var taskList = ['8秒', '浏览5个', '浏览可得'];
460 | var speed = 100 - jd.speed;
461 | var i = 0;
462 | var j = 0;
463 |
464 | jd.list.forEach(element => {
465 | switch (element.id) {
466 | case 'jiagou':
467 | if (element.done) {
468 | taskList.push('去加购');
469 | }
470 | break;
471 | case 'auto':
472 | jdAuto = element.done;
473 | break;
474 | default:
475 | break;
476 | }
477 | });
478 | sleep(random(11, 21) * speed);
479 |
480 | if (jdAuto) {
481 | //打开活动页面
482 | log("正在进入个人中心");
483 | gotoJd(speed);
484 | log("到达任务中心");
485 | } else {
486 | console.warn("请手动打开活动的任务列表")
487 | textContains("任务每日0点刷新").waitFor()
488 | sleep(random(21, 31) * speed);
489 | log("到达任务中心");
490 | }
491 | //签到
492 | sleep(random(11, 21) * speed);
493 | if (text("去签到").exists()) {
494 | text("去签到").findOne().click();
495 | sleep(random(4, 9) * speed);
496 | log("签到成功")
497 | }
498 | if (text("已签到").exists()) {
499 | sleep(random(11, 21) * speed);
500 | log("已签到")
501 | } else {
502 | text("签到").findOne().click();
503 | sleep(random(11, 21) * speed);
504 | log("签到成功")
505 | }
506 | sleep(random(31, 31) * speed);
507 |
508 | while (1) {
509 | var next = false;
510 | var a = text("去完成").findOnce(j);
511 | if (a != null) {
512 | //获取父控件
513 | var b = a.parent().parent().parent();
514 | //获取第一个子控件
515 | var c = b.child(0).child(1).text();
516 | taskList.forEach(task => {
517 | switch (task) {
518 | case '8秒':
519 | if (c.search(task) != -1) {
520 | i++;
521 | next = true;
522 | log("开始执行8秒任务");
523 | sleep(random(11, 15) * speed);
524 | a.click();
525 | sleep(random(151, 161) * speed);
526 | textStartsWith("恭喜完成").findOne(8000);
527 | sleep(random(4, 11) * speed);
528 | back();
529 | log("已完成第" + i + "次任务!");
530 | sleep(random(41, 21) * speed);
531 | j = 0;
532 | }
533 | break;
534 | case '浏览5个':
535 | if (c.search(task) != -1) {
536 | i++;
537 | next = true;
538 | log("开始执行浏览5个商品任务");
539 | sleep(random(11, 15) * speed);
540 | a.click();
541 | sleep(random(25, 31) * speed);
542 | for (var t = 0; t < 5; t++) {
543 | if (textContains("浏览以下").findOnce()) {
544 | while (idContains("view_") == null || idContains("view_").findOnce(t) == null);
545 | log("正在浏览第" + (t + 1) + "个商品!");
546 | idContains("view_").findOnce(t).click();
547 | sleep(random(32, 35) * speed)
548 | back()
549 | sleep(random(32, 35) * speed)
550 | } else { }
551 | }
552 | textStartsWith("已完成").findOne(8000);
553 | sleep(random(21, 31) * speed);
554 | try {
555 | // 点击左上角的返回键
556 | id("fe").findOne().click();
557 | } catch (error) {
558 | back();
559 | }
560 | log("已完成第" + i + "次任务!");
561 | sleep(random(41, 51) * speed);
562 | j = 0;
563 | }
564 | break;
565 | case '去加购':
566 | if (c.search(task) != -1) {
567 | i++;
568 | next = true;
569 | a.click();
570 | log("开始执行加购任务");
571 | sleep(random(21, 31) * speed);
572 | for (var t = 0; t < 5; t++) {
573 | //修复加购问题,删掉了.child(2)子节点
574 | while (idContains("cart_") == null || idContains("cart_").findOnce(t) == null);
575 | idContains("cart_").findOnce(t).click();
576 | sleep(random(21, 31) * speed)
577 | }
578 | try {
579 | // 点击左上角的返回键
580 | id("fe").findOne().click();
581 | } catch (error) {
582 | back();
583 | }
584 | log("已完成第" + i + "次任务!");
585 | sleep(random(41, 51) * speed);
586 | j = 0;
587 | }
588 | break;
589 | case '浏览可得':
590 | if (c.search(task) != -1) {
591 | i++;
592 | next = true;
593 | a.click();
594 | log("开始执行快速浏览任务");
595 | sleep(random(21, 31) * speed);
596 | sleep(random(11, 15) * speed);
597 | back();
598 | log("已完成第" + i + "次任务!");
599 | sleep(random(41, 51) * speed);
600 | j = 0;
601 | }
602 | break;
603 | default:
604 | break;
605 | }
606 | });
607 | if (next) { j = 0; }
608 | else { j++; }
609 | } else {
610 | correct();
611 | }
612 | }
613 | // }
614 |
615 | /**
616 | * 纠正方法
617 | */
618 | function correct() {
619 | log("可能出了点问题,正在尝试第一次纠正");
620 |
621 | log("尝鲜版将直接进入第二次纠正");
622 |
623 | log("正在尝试第二次纠正");
624 | app.startActivity({
625 | data: "openApp.jdMobile://virtual?params=%7B%22des%22%3A%22m%22%2C%22url%22%3A%22https%3A%2F%2Fbunearth.m.jd.com%2FbabelDiy%2FZeus%2F3xAU77DgiPoDvHdbXUZb95a7u71X%2Findex.html%22%2C%22category%22%3A%22jump%22%2C%22sourceType%22%3A%22JSHOP_SOURCE_TYPE%22%2C%22sourceValue%22%3A%22JSHOP_SOURCE_VALUE%22%2C%22M_sourceFrom%22%3A%22lkyl%22%2C%22msf_type%22%3A%22click%22%2C%22m_param%22%3A%7B%22m_source%22%3A%220%22%2C%22event_series%22%3A%7B%7D%2C%22jda%22%3A%22177095863.1664140455.1538579865.1572975960.1572979455.472%22%2C%22usc%22%3A%22androidapp%22%2C%22ucp%22%3A%22t_335139774%22%2C%22umd%22%3A%22appshare%22%2C%22utr%22%3A%22CopyURL%22%2C%22jdv%22%3A%22177095863%7Candroidapp%7Ct_335139774%7Cappshare%7CCopyURL%7C1572882675599%22%2C%22ref%22%3A%22https%3A%2F%2Fbunearth.m.jd.com%2FbabelDiy%2FZeus%2F3xAU77DgiPoDvHdbXUZb95a7u71X%2Findex.html%22%2C%22psn%22%3A%221664140455%7C472%22%2C%22psq%22%3A5%2C%22pc_source%22%3A%22%22%2C%22mba_muid%22%3A%221664140455%22%2C%22mba_sid%22%3A%221572979455588510925986537476%22%2C%22std%22%3A%22MO-J2011-1%22%2C%22par%22%3A%22%22%2C%22event_id%22%3A%22Mnpm_ComponentApplied%22%2C%22mt_xid%22%3A%22%22%2C%22mt_subsite%22%3A%22%22%7D%2C%22SE%22%3A%7B%22mt_subsite%22%3A%22%22%2C%22__jdv%22%3A%22177095863%7Candroidapp%7Ct_335139774%7Cappshare%7CCopyURL%7C1572882675599%22%2C%22__jda%22%3A%22177095863.1664140455.1538579865.1572975960.1572979455.472%22%7D%7D",
626 | });
627 | log("进入个人中心");
628 | sleep(random(21, 31) * speed);
629 |
630 | className("android.view.View").text("做任务领金币").waitFor();
631 |
632 | sleep(random(21, 31) * speed);
633 | if (!textContains("任务每日0点刷新").exists()) {
634 | className("android.view.View").text("做任务领金币").findOne().parent().click()
635 |
636 | }
637 |
638 | textContains("任务每日0点刷新").waitFor()
639 | sleep(random(21, 31) * speed);
640 | var e = text("去完成").findOnce(j);
641 | if (e == null) {
642 | console.info("貌似没有任务了,脚本退出\n如未完成,请重新运行");
643 | threads.shutDownAll();
644 | }
645 | }
646 |
647 | /**
648 | * 打开京东App并跳转到任务栏
649 | */
650 | function gotoJd() {
651 |
652 | app.startActivity({
653 | data: "openApp.jdMobile://virtual?params=%7B%22des%22%3A%22m%22%2C%22url%22%3A%22https%3A%2F%2Fbunearth.m.jd.com%2FbabelDiy%2FZeus%2F3xAU77DgiPoDvHdbXUZb95a7u71X%2Findex.html%22%2C%22category%22%3A%22jump%22%2C%22sourceType%22%3A%22JSHOP_SOURCE_TYPE%22%2C%22sourceValue%22%3A%22JSHOP_SOURCE_VALUE%22%2C%22M_sourceFrom%22%3A%22lkyl%22%2C%22msf_type%22%3A%22click%22%2C%22m_param%22%3A%7B%22m_source%22%3A%220%22%2C%22event_series%22%3A%7B%7D%2C%22jda%22%3A%22177095863.1664140455.1538579865.1572975960.1572979455.472%22%2C%22usc%22%3A%22androidapp%22%2C%22ucp%22%3A%22t_335139774%22%2C%22umd%22%3A%22appshare%22%2C%22utr%22%3A%22CopyURL%22%2C%22jdv%22%3A%22177095863%7Candroidapp%7Ct_335139774%7Cappshare%7CCopyURL%7C1572882675599%22%2C%22ref%22%3A%22https%3A%2F%2Fbunearth.m.jd.com%2FbabelDiy%2FZeus%2F3xAU77DgiPoDvHdbXUZb95a7u71X%2Findex.html%22%2C%22psn%22%3A%221664140455%7C472%22%2C%22psq%22%3A5%2C%22pc_source%22%3A%22%22%2C%22mba_muid%22%3A%221664140455%22%2C%22mba_sid%22%3A%221572979455588510925986537476%22%2C%22std%22%3A%22MO-J2011-1%22%2C%22par%22%3A%22%22%2C%22event_id%22%3A%22Mnpm_ComponentApplied%22%2C%22mt_xid%22%3A%22%22%2C%22mt_subsite%22%3A%22%22%7D%2C%22SE%22%3A%7B%22mt_subsite%22%3A%22%22%2C%22__jdv%22%3A%22177095863%7Candroidapp%7Ct_335139774%7Cappshare%7CCopyURL%7C1572882675599%22%2C%22__jda%22%3A%22177095863.1664140455.1538579865.1572975960.1572979455.472%22%7D%7D",
654 | });
655 |
656 | sleep(random(21, 31) * speed);
657 |
658 | className("android.view.View").text("做任务领金币").waitFor();
659 | sleep(random(21, 31) * speed);
660 | if (!textContains("任务每日0点刷新").exists()) {
661 | className("android.view.View").text("做任务领金币").findOne().parent().click()
662 | }
663 |
664 | textContains("任务每日0点刷新").waitFor()
665 | sleep(random(21, 31) * speed);
666 | }
667 | });
668 | });
669 |
670 | ui.gotojdGold.click(function () {
671 | threads.start(function () {
672 |
673 | console.show();
674 | sleep(10);
675 | console.setSize(device.width / 2, device.height / 3);
676 | auto.waitFor();
677 | var jdAuto = true;
678 | var speed = 100 - jd.speed;
679 |
680 | jd.list.forEach(element => {
681 | switch (element.id) {
682 | case 'auto':
683 | jdAuto = element.done;
684 | break;
685 | default:
686 | break;
687 | }
688 | });
689 |
690 | if(jdAuto){
691 | //打开活动页面
692 | log("正在进入个人中心");
693 |
694 | app.startActivity({
695 | data: "openApp.jdMobile://virtual?params=%7B%22des%22%3A%22m%22%2C%22url%22%3A%22https%3A%2F%2Fbunearth.m.jd.com%2FbabelDiy%2FZeus%2F3xAU77DgiPoDvHdbXUZb95a7u71X%2Findex.html%22%2C%22category%22%3A%22jump%22%2C%22sourceType%22%3A%22JSHOP_SOURCE_TYPE%22%2C%22sourceValue%22%3A%22JSHOP_SOURCE_VALUE%22%2C%22M_sourceFrom%22%3A%22lkyl%22%2C%22msf_type%22%3A%22click%22%2C%22m_param%22%3A%7B%22m_source%22%3A%220%22%2C%22event_series%22%3A%7B%7D%2C%22jda%22%3A%22177095863.1664140455.1538579865.1572975960.1572979455.472%22%2C%22usc%22%3A%22androidapp%22%2C%22ucp%22%3A%22t_335139774%22%2C%22umd%22%3A%22appshare%22%2C%22utr%22%3A%22CopyURL%22%2C%22jdv%22%3A%22177095863%7Candroidapp%7Ct_335139774%7Cappshare%7CCopyURL%7C1572882675599%22%2C%22ref%22%3A%22https%3A%2F%2Fbunearth.m.jd.com%2FbabelDiy%2FZeus%2F3xAU77DgiPoDvHdbXUZb95a7u71X%2Findex.html%22%2C%22psn%22%3A%221664140455%7C472%22%2C%22psq%22%3A5%2C%22pc_source%22%3A%22%22%2C%22mba_muid%22%3A%221664140455%22%2C%22mba_sid%22%3A%221572979455588510925986537476%22%2C%22std%22%3A%22MO-J2011-1%22%2C%22par%22%3A%22%22%2C%22event_id%22%3A%22Mnpm_ComponentApplied%22%2C%22mt_xid%22%3A%22%22%2C%22mt_subsite%22%3A%22%22%7D%2C%22SE%22%3A%7B%22mt_subsite%22%3A%22%22%2C%22__jdv%22%3A%22177095863%7Candroidapp%7Ct_335139774%7Cappshare%7CCopyURL%7C1572882675599%22%2C%22__jda%22%3A%22177095863.1664140455.1538579865.1572975960.1572979455.472%22%7D%7D",
696 | });
697 | sleep(1000);
698 | }else{console.warn("请手动打开活动的小金人页面")}
699 | className("android.view.View").text("做任务领金币").waitFor();
700 | log("到达个人中心");
701 | sleep(1000);
702 |
703 | var x;
704 | var y;
705 | var count = 1;
706 |
707 | if (!textContains("点我得金币").exists()) {
708 | console.warn("请确保页面上存在小金人且有'点我得金币'等字样!!")
709 | textContains("点我得金币").waitFor();
710 | }
711 | var g = textContains("点我得金币").findOne();
712 | x = g.bounds().centerX();
713 | y = g.bounds().centerY();
714 | log("小金人位置获取成功!");
715 |
716 | while(count <= jd.goldTime){
717 | for(var i = 0;i<5;i++){
718 | click(x,y);
719 | sleep(200);
720 | }
721 | log("第" + count + "次任务已完成");
722 | sleep(random(121, 131) * speed);
723 | count ++;
724 | }
725 | log("小金人任务成功!");
726 | return
727 | });
728 | });
729 |
730 | }
731 |
732 | //启用按键监听
733 | events.observeKey();
734 | //监听音量上键按下
735 | events.onKeyDown("volume_up", function (event) {
736 | threads.shutDownAll();
737 | console.clear();
738 | console.hide();
739 | toast("任务停止");
740 | });
741 |
--------------------------------------------------------------------------------
/src/README.md:
--------------------------------------------------------------------------------
1 | ## 源码文件夹
2 |
--------------------------------------------------------------------------------
/src/京东.js:
--------------------------------------------------------------------------------
1 | //京东618叠蛋糕js脚本0521
2 | /**
3 | * 作者:ZainCheung
4 | * 吾爱首发,地址:https://www.52pojie.cn/home.php?mod=space&uid=1304399&do=thread&view=me&from=space
5 | * 代码参考并感谢:Mr.Lih,以及没有找到出处的一位大佬
6 | */
7 |
8 |
9 | //速度
10 | var speed = 1;
11 | var taskList = ['去加购','8秒', '浏览5个', '浏览可得'];
12 |
13 | dialogs.alert("请确认无障碍和悬浮窗权限已开启,感谢使用\n作者:ZainCheung\n仅供学习参考\n吾爱首发");
14 | menu: while (true) {
15 | var choose = dialogs.select("请根据你的手机性能(卡不卡)以及网速选择速度", "都挺好的,整个快速的", "一般吧,正常执行就好", "网速有点差,稍微慢点吧", "我手机很砖,整个最慢的吧");
16 | switch (choose) {
17 | case -1:
18 | toast("请选择");
19 | continue menu;
20 | case 0:
21 | toast("即将快速执行脚本");
22 | speed = 0.75;
23 | break menu;
24 | case 1:
25 | toast("即将一般速度执行脚本");
26 | speed = 1;
27 | break menu;
28 | case 2:
29 | toast("即将低速执行脚本");
30 | speed = 1.25;
31 | break menu;
32 | case 3:
33 | toast("即将缓慢执行脚本");
34 | speed = 1.5;
35 | break menu;
36 |
37 | default:
38 | break;
39 | }
40 | }
41 | console.show();
42 | auto.waitFor();
43 |
44 | var i = 0;
45 | var j = 0;
46 | sleep(1000);
47 | //打开活动页面
48 | log("正在进入个人中心");
49 | gotoJd();
50 | log("到达任务中心");
51 |
52 |
53 | //签到
54 | sleep(1000 * speed);
55 | if (text("去签到").exists()) {
56 | text("去签到").findOne().click();
57 | sleep(200 * speed);
58 | log("签到成功")
59 | }
60 | if (text("已签到").exists()) {
61 | sleep(1000 * speed);
62 | log("已签到")
63 | } else {
64 | text("签到").findOne().click();
65 | sleep(1000 * speed);
66 | log("签到成功")
67 | }
68 | sleep(2000 * speed);
69 |
70 | while (1) {
71 | var next = false;
72 | var a = text("去完成").findOnce(j);
73 | if (a != null) {
74 | //获取父控件
75 | var b = a.parent().parent().parent();
76 | //获取第一个子控件
77 | var c = b.child(0).child(1).text();
78 | taskList.forEach(task => {
79 | switch (task) {
80 | case '8秒':
81 | if (c.search(task) != -1) {
82 | i++;
83 | next = true;
84 | log("开始执行8秒任务");
85 | sleep(random(501, 515) * speed);
86 | a.click();
87 | sleep(random(5001, 5011) * speed);
88 | textStartsWith("恭喜完成").findOne(8000);
89 | sleep(random(201, 211) * speed);
90 | back();
91 | log("已完成第" + i + "次任务!");
92 | sleep(random(201, 211) * speed);
93 | j = 0;
94 | }
95 | break;
96 | case '浏览5个':
97 | if (c.search(task) != -1) {
98 | i++;
99 | next = true;
100 | log("开始执行浏览5个商品任务");
101 | sleep(random(501, 515) * speed);
102 | a.click();
103 | sleep(random(1001, 1031) * speed);
104 | for (var t = 0; t < 5; t++) {
105 | if (textContains("浏览以下").findOnce()) {
106 | log("正在浏览第" + (t + 1) + "个商品!");
107 | idContains("view_").findOnce(t).click();
108 | sleep(random(1501, 1535) * speed)
109 | back()
110 | sleep(random(1501, 1535) * speed)
111 | } else { }
112 | }
113 | textStartsWith("已完成").findOne(8000);
114 | sleep(random(1001, 1031) * speed);
115 | try {
116 | // 点击左上角的返回键
117 | id("fe").findOne().click();
118 | } catch (error) {
119 | back();
120 | }
121 | log("已完成第" + i + "次任务!");
122 | sleep(random(2001, 2051) * speed);
123 | j = 0;
124 | }
125 | break;
126 | case '去加购':
127 | if (c.search(task) != -1) {
128 | i++;
129 | next = true;
130 | a.click();
131 | log("开始执行加购任务");
132 | sleep(random(1001, 1031) * speed);
133 | for (var t = 0; t < 5; t++) {
134 | while (idContains("cart_") == null || idContains("cart_").findOnce(t) == null);
135 | //修复加购问题,删掉了.child(2)子节点
136 | idContains("cart_").findOnce(t).click();
137 | sleep(random(1001, 1031) * speed)
138 | }
139 | try {
140 | id("fe").findOne().click();
141 | } catch (error) {
142 | back();
143 | }
144 | log("已完成第" + i + "次任务!");
145 | sleep(random(2001, 2051) * speed);
146 | j = 0;
147 | }
148 | break;
149 | case '浏览可得':
150 | if (c.search(task) != -1) {
151 | i++;
152 | next = true;
153 | a.click();
154 | log("开始执行快速浏览任务");
155 | sleep(random(1001, 1031) * speed);
156 | back();
157 | log("已完成第" + i + "次任务!");
158 | sleep(random(2001, 2051) * speed);
159 | j = 0;
160 | }
161 | break;
162 | default:
163 | break;
164 | }
165 | });
166 | if (next) { j = 0; }
167 | else { j++; }
168 | } else {
169 | correct();
170 | }
171 | }
172 |
173 | /**
174 | * 纠正方法
175 | */
176 | function correct() {
177 | log("可能出了点问题,正在尝试第一次纠正");
178 | for (let index = 0; index < 5; index++) {
179 | back();
180 | sleep(1000 * speed);
181 | var d = text("去完成").findOnce(j);
182 | if (d != null) {
183 | return
184 | }
185 | }
186 |
187 | if (d == null) {
188 | log("正在尝试第二次纠正");
189 | app.startActivity({
190 | data: "openApp.jdMobile://virtual?params=%7B%22des%22%3A%22m%22%2C%22url%22%3A%22https%3A%2F%2Fbunearth.m.jd.com%2FbabelDiy%2FZeus%2F3xAU77DgiPoDvHdbXUZb95a7u71X%2Findex.html%22%2C%22category%22%3A%22jump%22%2C%22sourceType%22%3A%22JSHOP_SOURCE_TYPE%22%2C%22sourceValue%22%3A%22JSHOP_SOURCE_VALUE%22%2C%22M_sourceFrom%22%3A%22lkyl%22%2C%22msf_type%22%3A%22click%22%2C%22m_param%22%3A%7B%22m_source%22%3A%220%22%2C%22event_series%22%3A%7B%7D%2C%22jda%22%3A%22177095863.1664140455.1538579865.1572975960.1572979455.472%22%2C%22usc%22%3A%22androidapp%22%2C%22ucp%22%3A%22t_335139774%22%2C%22umd%22%3A%22appshare%22%2C%22utr%22%3A%22CopyURL%22%2C%22jdv%22%3A%22177095863%7Candroidapp%7Ct_335139774%7Cappshare%7CCopyURL%7C1572882675599%22%2C%22ref%22%3A%22https%3A%2F%2Fbunearth.m.jd.com%2FbabelDiy%2FZeus%2F3xAU77DgiPoDvHdbXUZb95a7u71X%2Findex.html%22%2C%22psn%22%3A%221664140455%7C472%22%2C%22psq%22%3A5%2C%22pc_source%22%3A%22%22%2C%22mba_muid%22%3A%221664140455%22%2C%22mba_sid%22%3A%221572979455588510925986537476%22%2C%22std%22%3A%22MO-J2011-1%22%2C%22par%22%3A%22%22%2C%22event_id%22%3A%22Mnpm_ComponentApplied%22%2C%22mt_xid%22%3A%22%22%2C%22mt_subsite%22%3A%22%22%7D%2C%22SE%22%3A%7B%22mt_subsite%22%3A%22%22%2C%22__jdv%22%3A%22177095863%7Candroidapp%7Ct_335139774%7Cappshare%7CCopyURL%7C1572882675599%22%2C%22__jda%22%3A%22177095863.1664140455.1538579865.1572975960.1572979455.472%22%7D%7D",
191 | });
192 | log("进入个人中心");
193 | sleep(1000 * speed);
194 |
195 | className("android.view.View").text("做任务领金币").waitFor();
196 |
197 | sleep(1000 * speed);
198 | if (!textContains("任务每日0点刷新").exists()) {
199 | className("android.view.View").text("做任务领金币").findOne().parent().click()
200 |
201 | }
202 |
203 | textContains("任务每日0点刷新").waitFor()
204 | sleep(1000 * speed);
205 | var e = text("去完成").findOnce(j);
206 | if (e == null) {
207 | log("貌似没有任务了,脚本退出\n如未完成,请重新运行");
208 | exit();
209 | }
210 | }
211 | }
212 |
213 | /**
214 | * 打开京东App并跳转到任务栏
215 | */
216 | function gotoJd() {
217 |
218 | app.startActivity({
219 | data: "openApp.jdMobile://virtual?params=%7B%22des%22%3A%22m%22%2C%22url%22%3A%22https%3A%2F%2Fbunearth.m.jd.com%2FbabelDiy%2FZeus%2F3xAU77DgiPoDvHdbXUZb95a7u71X%2Findex.html%22%2C%22category%22%3A%22jump%22%2C%22sourceType%22%3A%22JSHOP_SOURCE_TYPE%22%2C%22sourceValue%22%3A%22JSHOP_SOURCE_VALUE%22%2C%22M_sourceFrom%22%3A%22lkyl%22%2C%22msf_type%22%3A%22click%22%2C%22m_param%22%3A%7B%22m_source%22%3A%220%22%2C%22event_series%22%3A%7B%7D%2C%22jda%22%3A%22177095863.1664140455.1538579865.1572975960.1572979455.472%22%2C%22usc%22%3A%22androidapp%22%2C%22ucp%22%3A%22t_335139774%22%2C%22umd%22%3A%22appshare%22%2C%22utr%22%3A%22CopyURL%22%2C%22jdv%22%3A%22177095863%7Candroidapp%7Ct_335139774%7Cappshare%7CCopyURL%7C1572882675599%22%2C%22ref%22%3A%22https%3A%2F%2Fbunearth.m.jd.com%2FbabelDiy%2FZeus%2F3xAU77DgiPoDvHdbXUZb95a7u71X%2Findex.html%22%2C%22psn%22%3A%221664140455%7C472%22%2C%22psq%22%3A5%2C%22pc_source%22%3A%22%22%2C%22mba_muid%22%3A%221664140455%22%2C%22mba_sid%22%3A%221572979455588510925986537476%22%2C%22std%22%3A%22MO-J2011-1%22%2C%22par%22%3A%22%22%2C%22event_id%22%3A%22Mnpm_ComponentApplied%22%2C%22mt_xid%22%3A%22%22%2C%22mt_subsite%22%3A%22%22%7D%2C%22SE%22%3A%7B%22mt_subsite%22%3A%22%22%2C%22__jdv%22%3A%22177095863%7Candroidapp%7Ct_335139774%7Cappshare%7CCopyURL%7C1572882675599%22%2C%22__jda%22%3A%22177095863.1664140455.1538579865.1572975960.1572979455.472%22%7D%7D",
220 | });
221 |
222 | sleep(1000 * speed);
223 |
224 | className("android.view.View").text("做任务领金币").waitFor();
225 |
226 |
227 |
228 | sleep(1000 * speed);
229 | if (!textContains("任务每日0点刷新").exists()) {
230 | className("android.view.View").text("做任务领金币").findOne().parent().click()
231 |
232 | }
233 |
234 | textContains("任务每日0点刷新").waitFor()
235 | sleep(1000 * speed);
236 | }
237 |
--------------------------------------------------------------------------------
/src/淘宝.js:
--------------------------------------------------------------------------------
1 | //京东618叠蛋糕js脚本0521
2 | /**
3 | * 作者:ZainCheung
4 | * 吾爱首发,地址:https://www.52pojie.cn/home.php?mod=space&uid=1304399&do=thread&view=me&from=space
5 | */
6 |
7 | var i = 0;
8 | var j = 0;
9 | // 暂时去掉,'去收菜','去兑换',
10 | var taskList = ['去搜索', '去围观', '去浏览'];
11 |
12 | var height = device.height;
13 | var width = device.width;
14 | setScreenMetrics(width, height);
15 |
16 | //速度
17 | var speed = 1;
18 |
19 | dialogs.alert("请确认无障碍和悬浮窗权限已开启,感谢使用,618列车即将发车\n作者:ZainCheung\n仅供学习参考, 吾爱首发");
20 | menu: while (true) {
21 | var choose = dialogs.select("请根据你的手机性能(卡不卡)以及网速选择速度", "都挺好的,整个快速的", "一般吧,正常执行就好", "网速有点差,稍微慢点吧", "我手机很砖,整个最慢的吧");
22 | switch (choose) {
23 | case -1:
24 | toast("请选择");
25 | continue menu;
26 | case 0:
27 | toast("即将快速执行脚本");
28 | speed = 0.75;
29 | break menu;
30 | case 1:
31 | toast("即将一般速度执行脚本");
32 | speed = 1;
33 | break menu;
34 | case 2:
35 | toast("即将低速执行脚本");
36 | speed = 1.25;
37 | break menu;
38 | case 3:
39 | toast("即将缓慢执行脚本");
40 | speed = 1.5;
41 | break menu;
42 | default:
43 | break;
44 | }
45 | }
46 |
47 | console.show();
48 | auto.waitFor();
49 |
50 | sleep(random(1001, 1021) * speed);
51 | //打开活动页面
52 | log("正在打开淘宝");
53 | launch("com.taobao.taobao");
54 | sleep(random(1001, 1021) * speed);
55 | log("正在等待进入列车活动页面");
56 | desc("搜索").findOne().click();
57 | sleep(random(1001, 1021) * speed);
58 | idContains("searchEdit").setText("618列车");
59 | desc("搜索").findOne().click();
60 | sleep(random(1001, 1021) * speed);
61 | log("进入淘宝618列车活动界面");
62 | sleep(random(1001, 1021) * speed);
63 | //log("请手动点进列车活动页面")
64 | // sleep(5000);
65 | className("android.widget.Button").text("做任务,领喵币").waitFor()
66 |
67 | sleep(random(1001, 1021) * speed);
68 | if (!textContains("淘宝成就点").exists()) {
69 | className("android.widget.Button").text("做任务,领喵币").findOne().click()
70 | log("点击成功");
71 | }
72 | sleep(random(1501, 1521) * speed);
73 | if (className("android.widget.Button").text("签到").exists()) {
74 | className("android.widget.Button").text("签到").click()
75 | sleep(random(200, 210));
76 | log("签到成功");
77 | } else { log("已签到"); }
78 | sleep(random(1501, 1521) * speed);
79 |
80 | taskList.forEach(task => {
81 | while (textContains(task).exists()) {
82 | log("开始做第" + (i+1) + "次任务!");
83 | var a = text(task).findOnce(j);
84 | switch (task) {
85 | case '去搜索':
86 | case '去围观':
87 | case '去浏览':
88 | sleep(random(501, 515) * speed);
89 | a.click();
90 | sleep(random(1501, 1515) * speed);
91 | swipe(width / 2, height - 500, width / 2, 0, random(801, 818)* speed);
92 | sleep(random(2501, 2601) * speed);
93 | swipe(width / 2, height - 500, width / 2, 0, random(801, 818) * speed);
94 | sleep(random(8001, 8042) * speed);
95 | swipe(width / 2, height - 500, width / 2, 0, random(801, 818) * speed);
96 | textContains("完成").findOne(random(10001, 10018) * speed);
97 | i++;
98 | log("已完成第" + i + "次任务!")
99 | back();
100 | break;
101 | default:
102 | log("default")
103 | break;
104 | }
105 | sleep(random(2001, 2101) * speed);
106 | }
107 | });
108 |
109 | log("任务貌似已经做完了\n收菜任务暂时还不支持的哈\n如未完成,请重新运行");
110 | exit();
--------------------------------------------------------------------------------