From dca93a4d503204d5aaec459f7ed9590e8781271a Mon Sep 17 00:00:00 2001
From: czj <624278325@qq.com>
Date: Tue, 24 May 2022 02:54:18 +0800
Subject: [PATCH] JD618 1.0.0
---
README.md | 44 +++---
auto_20220618/jd/main.js | 275 ++++++++++++++++++++++++++++++++++
auto_20220618/jd/project.json | 10 ++
3 files changed, 310 insertions(+), 19 deletions(-)
create mode 100644 auto_20220618/jd/main.js
create mode 100644 auto_20220618/jd/project.json
diff --git a/README.md b/README.md
index 94715e8..8e2bf4d 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-# 618||双十一||淘宝||京东||赚喵糖||赚汪汪币||炸年兽任务自动完成脚本
-基于AutoJs编写的618||双十一||淘宝||京东||赚喵糖||赚汪汪币||炸年兽任务自动完成脚本
+# 618||双十一||淘宝||京东||赚喵糖||赚汪汪币||赚金币自动完成脚本
+基于AutoJs编写的618||双十一||淘宝||京东||赚喵糖||赚汪汪币||赚金币自动完成脚本
# 重要说明
@@ -11,18 +11,32 @@
- JD有个别活动是跳过的,比如需要开会员的,比如分享的,还有下单的
-- JD目前有个任务没时间去做,参与城城领钱的,建议手动完成
+- ~~JD目前有个任务没时间去做,参与城城领钱的,建议手动完成~~
-- TB要先做好新手教程
+- 要先做好新手教程
-- TB个别活动是跳过的,比如施肥,比如喂鸡,具体看代码的这里忽略的任务
+- ~~TB个别活动是跳过的,比如施肥,比如喂鸡,具体看代码的这里忽略的任务~~
- ```js
- var IGNORE_LIST = ['农场', '芭芭农场', '下单', '蚂蚁森林', '淘特', '点淘', '充话费', '参与合伙', '喂小鸡', '斗地主', '续卡', '88VIP'];
- ```
+- 版本说明:JD(11.0.2)
+
+- 测试手机型号:Redmi K40,Redmi Note 4X
+
+- 暂时还没打包成apk,可自行打包,或者把代码放到autoJS使用
+
+
# 更新
+2022年5月24日
+
+1.[JD]一大晚上看到催更的了,第一版,将就用吧,JD改了很多东西,去年那版用不了了
+
+------
+
+------
+
+------
+
2022年1月19日
1.[JD]修复品牌墙任务
@@ -113,19 +127,11 @@
-# 其他
-
-1.测试手机型号:Redmi K40,Redmi Note 4X
-
-2.JD版本:9.2.0,TB版本:10.5.0
-
-3.apk下载地址
-
- TB
+# ~~其他~~
- JD
+~~1.测试手机型号:Redmi K40,Redmi Note 4X~~
- releases
+~~2.JD版本:9.2.0,TB版本:10.5.0~~
# ~~重要说明~~
diff --git a/auto_20220618/jd/main.js b/auto_20220618/jd/main.js
new file mode 100644
index 0000000..9e575c4
--- /dev/null
+++ b/auto_20220618/jd/main.js
@@ -0,0 +1,275 @@
+/**
+ * JD618
+ *
+ * Author: czj
+ * Date: 2022/05/24
+ * Versions: 1.0.0
+ * Github: https://github.com/czj2369/jd_tb_auto
+ */
+const sleepTime = 500;
+const speed = 2;
+
+// 点击之后返回的任务
+const BACK_LIST = ['浏览并关注可得', '逛店可得', '成功浏览可得1000金币', '浏览可得2000', '浏览可得3000'];
+// 去完成按钮
+const NEED_FININSH_TASK_LIST = [/去.+\)/, /领点点券.+\)/, /签到领.+\)/, /逛众筹.+\)/];
+// 需要做的任务
+const FINISHED_TASK = ['您所访问的页面不存在', '全部完成啦', /获得\w+金币/, '已浏览', '已达上限'];
+
+// 判断停留时间
+var JUDGE_TIME = 0;
+// 当前浏览的按钮位置
+var currentTask = 0;
+// 定时器
+var interval;
+init();
+
+function init() {
+ start();
+
+ // 子线程开启计时
+ threads.start(function () {
+ if (interval == null) {
+ // 开启计时器,进行卡顿计时
+ // 启动定时器前,将计数器归为0
+ JUDGE_TIME = 0;
+ log("开启定时器");
+ interval = setInterval(function () {
+ JUDGE_TIME = JUDGE_TIME + 1;
+ }, 1000);
+ }
+ });
+
+ while (true) {
+
+ enterActivity();
+
+ viewTask();
+
+ recoverApp();
+ }
+
+
+}
+
+// 启动京东
+function start() {
+ auto.waitFor()
+ var appName = "com.jingdong.app.mall";
+ app.launchPackage(appName);
+ log("启动JD成功");
+ console.show();
+}
+
+// 进入活动中心 JD这里需要手动进入下活动中心,故没有写代码
+function enterActivity() {
+
+ sleep(sleepTime * speed);
+}
+
+/**
+ * 去浏览任务
+ */
+function viewTask() {
+ NEED_FININSH_TASK_LIST.forEach(item => {
+ var taskCount = textMatches(item).find();
+ for (var i = 0; i <= taskCount.length; i++) {
+ sleep(sleepTime * speed);
+ goTask(taskCount[i]);
+ }
+ });
+}
+
+function goTask(parent) {
+ var par = parent;
+
+ // 找到去完成按钮
+ if (par != null && par.parent() != null && par.parent().childCount() >= 3) {
+ par = par.parent();
+ // 先判断需要执行几次这个任务
+ var finshAndCount = par.children()[1].text().split('(')[1].split(')')[0].split('/');
+ var execCount = finshAndCount[1];
+ var currentFininshNum = finshAndCount[0];
+ // 获取去完成按钮
+ var button = par.children()[3];
+ while (currentFininshNum < execCount && par.children()[2] != null) {
+ sleep(sleepTime);
+ var buttonText = par.children()[2].text();
+ button.click();
+ // 点击任务 重置计时
+ JUDGE_TIME = 0;
+
+ log("正在进行任务: " + buttonText + ",目前进度(" + currentFininshNum + "/" + execCount + ")");
+ sleep(sleepTime * speed * 4);
+ while (true) {
+
+ if (textContains("确认授权").exists() || buttonText.indexOf("成功入会") >= 0) {
+ while (!textContains("做任务 赚金币").exists() && back()) {
+ sleep(sleepTime * speed);
+ currentFininshNum = execCount;
+ }
+ break;
+ }
+
+ var isViewAndFollow = false;
+ for (i = 0; i < BACK_LIST.length; i++) {
+ if (buttonText.indexOf(BACK_LIST[i]) >= 0) {
+ isViewAndFollow = true;
+ break;
+ }
+ }
+
+ if (isViewAndFollow) {
+ while (!textContains("做任务 赚金币").exists() && back()) {
+ sleep(sleepTime * speed);
+ }
+ currentFininshNum++;
+ sleep(sleepTime * speed);
+ break;
+ }
+
+ if (textContains("当前页点击浏览").exists() && textStartsWith("¥").find().length > 0) {
+ var product = textStartsWith("¥").find()[0].parent().parent().parent().childCount();
+ if (product >= 4) {
+ log("进入浏览任务")
+ for (var i = 0; i <= 3; i++) {
+ if (textStartsWith("¥").find()[i].parent().parent().children()[4].click()) {
+ sleep(sleepTime * speed);
+ log("加购并返回");
+ while (!textContains("当前页点击浏览").exists() && back()) {
+ sleep(sleepTime * speed * 2);
+ }
+ }
+ }
+ if (back()) {
+ sleep(sleepTime * speed);
+ currentFininshNum++;
+ break;
+ }
+ }
+ }
+
+ if (isFinshed(FINISHED_TASK)) {
+ while (!textContains("做任务 赚金币").exists() && back()) {
+ sleep(sleepTime * speed);
+ currentFininshNum = execCount;
+ }
+ break;
+ }
+
+ if (buttonText.indexOf("去参与小程序") >= 0) {
+ while (!textContains("做任务 赚金币").exists() && back()) {
+ launchPackage("com.jingdong.app.mall")
+ sleep(sleepTime * speed);
+ currentFininshNum++;
+ break;
+ }
+ }
+
+ if (textContains("当前页浏览加购").exists() && textStartsWith("¥").find().length > 0) {
+ addMarketCar();
+ while (!textContains("做任务 赚金币").exists() && back()) {
+ sleep(sleepTime * speed);
+ currentFininshNum = execCount;
+ break;
+ }
+ }
+
+ if (textContains("品牌种草城").exists()) {
+ for (var j = 0; j < 4; j++) {
+ if (textContains("喜欢").exists() && textContains("喜欢").click()) {
+ while(!textContains("喜欢").click() && back()) {
+ sleep(sleepTime * speed);
+ }
+
+ }
+ }
+ currentFininshNum++;
+ break;
+ }
+
+ if (JUDGE_TIME > 30) {
+ currentFininshNum = execCount;
+ JUDGE_TIME = 0;
+ break;
+ }
+ }
+
+ }
+ }
+}
+
+// 判断是不是完成任务
+function isFinshed(uiName) {
+ for (i = 0; i < uiName.length; i++) {
+ if (textMatches(uiName[i]).exists() || descMatches(uiName[i]).exists()) {
+ return true;
+ }
+ }
+ return false;
+
+}
+
+/**
+ * 加入购物车
+ */
+function addMarketCar() {
+ var product = textStartsWith("¥").find()[0].parent().parent().parent().childCount();
+ if (product >= 4) {
+ log("进入加入购物车任务")
+ for (var i = 0; i <= 3; i++) {
+ if (textStartsWith("¥").find()[i].parent().parent().children()[4].click()) {
+ sleep(sleepTime * speed);
+ log("加购并返回");
+ while (!textContains("当前页浏览加购").exists() && back()) {
+ sleep(sleepTime * speed * 2);
+ }
+ }
+ }
+ }
+}
+
+// 返回
+function viewAndFollow() {
+ sleep(1000);
+ back();
+ sleep(1000);
+}
+
+// 递归遍历控件是否包含忽略的关键词
+function recursionControl(parentControl) {
+ var retFlag = false;
+ // 遍历子控件是否包含忽略关键词
+ parentControl.children().forEach(element => {
+ for (ignoreIndex = 0; ignoreIndex < IGNORE_LIST.length; ignoreIndex++) {
+ if (element.text().indexOf(IGNORE_LIST[ignoreIndex]) >= 0) {
+ retFlag = true;
+ }
+ }
+ });
+ return retFlag;
+}
+
+function addJudgeTime() {
+
+}
+
+// 自动判断程序是否卡顿,恢复方法
+// 判断依据:1.不在活动界面 2.停留某个界面长达30s
+function recoverApp() {
+ if (JUDGE_TIME > 30) {
+ if (back()) {
+ // 计时器重置
+ JUDGE_TIME = 0;
+ log("停留某个页面超过30s,自动返回,关闭定时器。");
+ }
+ }
+}
+/**
+ * JD618
+ *
+ * Author: czj
+ * Date: 2022/05/24
+ * Versions: 1.0.0
+ * Github: https://github.com/czj2369/jd_tb_auto
+ */
diff --git a/auto_20220618/jd/project.json b/auto_20220618/jd/project.json
new file mode 100644
index 0000000..8f1c1a1
--- /dev/null
+++ b/auto_20220618/jd/project.json
@@ -0,0 +1,10 @@
+{
+ "name": "jd618",
+ "main": "main.js",
+ "ignore": [
+ "build"
+ ],
+ "packageName": "com.anjian.jd618",
+ "versionName": "1.0.0",
+ "versionCode": 1
+}
\ No newline at end of file