deeke-script-app 1.6.1 → 1.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/@deekeScript/@type/Class/Global.d.ts +1 -1
- package/@deekeScript/@type/Class/Rect.d.ts +16 -16
- package/@deekeScript/@type/Class/UiSelector.d.ts +201 -201
- package/@deekeScript/@type/Class/WebSocket.d.ts +49 -49
- package/@deekeScript/@type/interface/Access.d.ts +71 -71
- package/@deekeScript/@type/interface/Device.d.ts +88 -88
- package/@deekeScript/@type/interface/Encrypt.d.ts +58 -58
- package/@deekeScript/@type/interface/Engines.d.ts +39 -34
- package/@deekeScript/@type/interface/FloatDialogs.d.ts +10 -0
- package/@deekeScript/@type/interface/ForegroundServiceBridge.d.ts +31 -31
- package/@deekeScript/@type/interface/Hid.d.ts +342 -342
- package/@deekeScript/@type/interface/Http.d.ts +41 -41
- package/@deekeScript/@type/interface/Images.d.ts +71 -71
- package/@deekeScript/@type/interface/Java.d.ts +7 -7
- package/@deekeScript/@type/interface/KeyBoards.d.ts +27 -27
- package/@deekeScript/@type/interface/Log.d.ts +16 -16
- package/@deekeScript/@type/interface/NotificationBridge.d.ts +28 -28
- package/@deekeScript/@type/interface/{SocketIoClient.d.ts → SocketIOClient.d.ts} +76 -76
- package/@deekeScript/@type/interface/System.d.ts +3 -2
- package/@deekeScript/@type/interface/UiObject.d.ts +290 -290
- package/README.md +67 -67
- package/deekeScript.json +669 -611
- package/deekeScriptZipBuild +48 -48
- package/gulpfile +17 -17
- package/images/test/statistics.png +0 -0
- package/init +32 -32
- package/jsconfig.json +11 -11
- package/package.json +42 -42
- package/script/9/common/util.js +20 -0
- package/script/9/dy/common/common.js +10 -0
- package/script/9/dy/common/version.js +4 -0
- package/script/9/dy/common/video.js +8 -0
- package/script/9/dy/task/taskOne.js +7 -0
- package/script/9/dy/version/310701.js +7 -0
- package/script/index.js +0 -1
- package/script/statistics/statistics.js +120 -120
- package/script/task/douyin_zan.js +38 -0
- package/script/task/dy.js +7 -14
- package/script/task/dyApp.js +7 -7
- package/script/task/dyCity.js +1 -1
- package/script/task/tool.js +10 -19
- package/script/task.html +4 -4
- package/script/test/2.js +1 -0
- package/script/test/5.js +3 -0
- package/script/test/8.js +17 -0
- package/src/12/main.js +40 -0
- package/src/12/task.js +10 -0
- package/src/9/common/util.js +28 -0
- package/src/9/dy/common/common.js +13 -0
- package/src/9/dy/common/version.js +12 -0
- package/src/9/dy/common/video.js +14 -0
- package/src/9/dy/task/taskOne.js +13 -0
- package/src/9/dy/version/310701.js +7 -0
- package/src/statistics/statistics.js +120 -120
- package/src/task/douyin_zan.js +89 -0
- package/src/task/dy.js +14 -14
- package/src/task/dyApp.js +7 -7
- package/src/task/tool.js +19 -19
- package/src/task.html +4 -4
- package/src/test/2.js +2 -0
- package/src/test/5.js +4 -0
- package/src/test/8.js +36 -0
- package/test/2.0/engines/enginesSimple.js +72 -72
- package/test/2.js +6 -6
- package/test/Access.js +9 -9
- package/test/SocketIOClient.js +39 -39
- package/test/SocketIOServer.js +49 -49
- package/test/Storage.js +3 -3
- package/test/console.js +5 -5
- package/test/deekeScriptJson.js +5 -5
- package/test/device.js +11 -11
- package/test/encrypt.js +3 -3
- package/test/engines/1.js +4 -4
- package/test/engines/eng/1.js +8 -8
- package/test/engines/engines.js +6 -6
- package/test/engines/relative.dir.js +8 -8
- package/test/engines/relative.js +1 -1
- package/test/engines/test.js +6 -6
- package/test/engines.js +5 -5
- package/test/extension.js +27 -27
- package/test/files.js +7 -7
- package/test/foreground.js +23 -23
- package/test/http.js +19 -19
- package/test/images/findColor.js +15 -15
- package/test/java.js +28 -28
- package/test/log.js +10 -10
- package/test/module/module.js +4 -4
- package/test/notification.js +26 -26
- package/test/package.js +3 -3
- package/test/permise.js +29 -29
- package/test/thread.js +11 -11
- package/test/timer.close.js +27 -27
- package/test/timer.js +25 -25
- package/test/timer.stop.js +28 -28
- package/test/webSocket.js +22 -22
- package/uglify-config.json +15 -15
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
let e = {
|
|
2
|
+
log() {
|
|
3
|
+
Log.log(arguments), console.log(arguments);
|
|
4
|
+
},
|
|
5
|
+
comment() {
|
|
6
|
+
var e = UiSelector().id("com.ss.android.ugc.aweme:id/comment_container").isVisibleToUser(!0).findOne(), e = (console.log(e),
|
|
7
|
+
Gesture.click(e.bounds().left + Math.random() * e.bounds().width(), e.bounds().centerY()),
|
|
8
|
+
console.log("打开评论窗口"), System.sleep(1200), UiSelector().className("android.widget.EditText").editable(!0).findOne()), e = (console.log(e),
|
|
9
|
+
Gesture.click(e.bounds().left + Math.random() * e.bounds().width(), e.bounds().centerY()),
|
|
10
|
+
console.log("开始输入评论"), System.sleep(500), UiSelector().className("android.widget.EditText").editable(!0).findOne()), e = (console.log(e),
|
|
11
|
+
Log.log(e), e.setText("太棒了"), System.sleep(500), UiSelector().id("com.ss.android.ugc.aweme:id/dqq").text("发送").findOne());
|
|
12
|
+
console.log(e), Gesture.click(e.bounds().centerX(), e.bounds().centerY()),
|
|
13
|
+
System.sleep(500), Gesture.back(), System.sleep(500);
|
|
14
|
+
},
|
|
15
|
+
backHome() {
|
|
16
|
+
var e;
|
|
17
|
+
console.log("开始返回主页");
|
|
18
|
+
let o = 5;
|
|
19
|
+
for (;(e = UiSelector().id("com.ss.android.ugc.aweme:id/x_t").isVisibleToUser(!0).findOne()) && console.log("在首页"),
|
|
20
|
+
Gesture.back(), console.log("返回"), System.sleep(1e3), !e && 0 <= --o; );
|
|
21
|
+
},
|
|
22
|
+
run() {
|
|
23
|
+
console.log("开始进入应用"), App.launch("com.ss.android.ugc.aweme"), System.sleep(2e3);
|
|
24
|
+
let e = Storage.getInteger("task_douyin_zan_count"), o = Storage.getInteger("task_douyin_zan_comment");
|
|
25
|
+
for (console.log("配置:" + e + " 赞," + o + " 评论"); 0 < e || 0 < o; ) try {
|
|
26
|
+
var s;
|
|
27
|
+
console.log("zanCount: " + e + " commentCount: " + o), 0 <= --e && (s = UiSelector().id("com.ss.android.ugc.aweme:id/fd9").isVisibleToUser(!0).findOne(),
|
|
28
|
+
console.log("点赞tag", s), Gesture.click(s.bounds().left + Math.random() * s.bounds().width(), s.bounds().centerY()),
|
|
29
|
+
System.sleep(1e3), console.log("点赞完成")), 0 <= --o && (this.comment(),
|
|
30
|
+
System.sleep(1e3)), UiSelector().id("com.ss.android.ugc.aweme:id/viewpager").desc("视频").scrollable(!0).findOne().scrollForward(),
|
|
31
|
+
System.sleep(3e3);
|
|
32
|
+
} catch (e) {
|
|
33
|
+
console.log(e), this.backHome();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
Log.setFile("douyin_zan.js.log"), e.run(), FloatDialogs.show("抖音任务完成");
|
package/script/task/dy.js
CHANGED
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
let
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
toker_view_video_second: Storage.getInteger('toker_view_video_second'),
|
|
9
|
-
toker_run_sex: Storage.getArray('toker_run_sex'),
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
console.log(config, dyApp.getName());//获取json文件中的配置参数
|
|
13
|
-
|
|
14
|
-
FloatDialogs.show('提示', '请编写业务代码');
|
|
1
|
+
let e = require("./dyApp"), o = UiSelector().id("name").findOne(), r = {
|
|
2
|
+
toker_view_video_keywords: Storage.get("toker_view_video_keywords"),
|
|
3
|
+
toker_view_video_second: Storage.getInteger("toker_view_video_second"),
|
|
4
|
+
toker_run_sex: Storage.getArray("toker_run_sex")
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
console.log(r, e.getName()), FloatDialogs.show("提示", "请编写业务代码");
|
package/script/task/dyApp.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
getName(){
|
|
3
|
-
return "appName";
|
|
4
|
-
}
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
module.exports =
|
|
1
|
+
let e = {
|
|
2
|
+
getName() {
|
|
3
|
+
return "appName";
|
|
4
|
+
}
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
module.exports = e;
|
package/script/task/dyCity.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
FloatDialogs.show(
|
|
1
|
+
FloatDialogs.show("提示", "请编写业务代码");
|
package/script/task/tool.js
CHANGED
|
@@ -1,19 +1,10 @@
|
|
|
1
|
-
let
|
|
2
|
-
intoApp() {
|
|
3
|
-
|
|
4
|
-
},
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
//任务代码
|
|
12
|
-
},
|
|
13
|
-
|
|
14
|
-
run() {
|
|
15
|
-
FloatDialogs.show('提示', '请编写业务代码');
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
myTask.run();
|
|
1
|
+
let a = {
|
|
2
|
+
intoApp() {},
|
|
3
|
+
backApp() {},
|
|
4
|
+
task() {},
|
|
5
|
+
run() {
|
|
6
|
+
FloatDialogs.show("提示", "请编写业务代码");
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
a.run();
|
package/script/task.html
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<h1>功能说明</h1>
|
|
2
|
-
|
|
3
|
-
<h3>一、功能一</h3>
|
|
4
|
-
功能说明:XXXXX
|
|
1
|
+
<h1>功能说明</h1>
|
|
2
|
+
|
|
3
|
+
<h3>一、功能一</h3>
|
|
4
|
+
功能说明:XXXXX
|
package/script/test/2.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
System.sleep(2e3), Engines.executeScriptStr("engines", "setInterval(function (){console.log('engines任务');}, 1000);");
|
package/script/test/5.js
ADDED
package/script/test/8.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
function n() {
|
|
2
|
+
console.log("任务1");
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
function e(n) {
|
|
6
|
+
console.log("任务2", "i=" + n);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
let o = 0, a = (setInterval(function() {
|
|
10
|
+
n(), o++;
|
|
11
|
+
}, 1e3), {
|
|
12
|
+
run: function() {
|
|
13
|
+
for (;;) e(o), System.sleep(3e3);
|
|
14
|
+
}
|
|
15
|
+
}), l = new java.lang.Thread(new java.lang.Runnable(a));
|
|
16
|
+
|
|
17
|
+
l.start();
|
package/src/12/main.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
|
|
2
|
+
let res = {
|
|
3
|
+
code: 0,
|
|
4
|
+
data: {
|
|
5
|
+
action: 'task'
|
|
6
|
+
}
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
let index = 0;
|
|
10
|
+
|
|
11
|
+
setInterval(function () {
|
|
12
|
+
index++;
|
|
13
|
+
if (index > 5) {
|
|
14
|
+
console.log('关闭通知');
|
|
15
|
+
res.data.action = 'exit';
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
if (index > 6) {
|
|
19
|
+
res.data.action = "";
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (res.code == 0 && res.data.action != "") {
|
|
23
|
+
let taskName = res.data.action;
|
|
24
|
+
if (taskName == 'exit') {
|
|
25
|
+
console.log('关闭除了当前脚本外的其他脚本');
|
|
26
|
+
Engines.closeOther();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (Engines.childScriptCount() > 0) {
|
|
31
|
+
console.log('正在运行中');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
console.log('开始执行任务:' + taskName + ".js");
|
|
36
|
+
Engines.executeScript("./" + taskName + ".js");
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Http.get("xxx.com/heard?isRunning=" + (Engines.childScriptCount() > 0 ? true : false));
|
|
40
|
+
}, 3000);
|
package/src/12/task.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
let util = {
|
|
2
|
+
setLog(file) {
|
|
3
|
+
Log.setFile(file);
|
|
4
|
+
},
|
|
5
|
+
log() {
|
|
6
|
+
Log.log(arguments);
|
|
7
|
+
console.log(arguments);
|
|
8
|
+
},
|
|
9
|
+
|
|
10
|
+
click(tag) {
|
|
11
|
+
this.log('点击了控件:', tag);
|
|
12
|
+
Gesture.click(tag.bounds().left + Math.random() * tag.bounds().width(), tag.bounds().top + Math.random() * tag.bounds().height());
|
|
13
|
+
},
|
|
14
|
+
|
|
15
|
+
input(tag, text) {
|
|
16
|
+
tag.setText(text);
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
swipe() {
|
|
20
|
+
let bottom = Device.height() * (0.6 + Math.random() * 0.2);
|
|
21
|
+
let top = Device.height() * (0.2 + Math.random() * 0.2);
|
|
22
|
+
let left = Math.random() * Device.width() * 0.6 + Device.width() * 0.2;
|
|
23
|
+
|
|
24
|
+
Gesture.swipe(left, bottom, left + Device.width() * 0.1, top, 200 + 100 * Math.random());
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
module.exports = util;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
let util = require('../../common/util');
|
|
2
|
+
let common = require('./common');
|
|
3
|
+
let ids = require('./version');
|
|
4
|
+
|
|
5
|
+
let video = {
|
|
6
|
+
zan(){
|
|
7
|
+
let zanTag = common.id(ids.video.zan).isVisibleToUser(true).findOne();
|
|
8
|
+
if(zanTag){
|
|
9
|
+
util.click(zanTag);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
module.exports = video;
|
|
@@ -1,120 +1,120 @@
|
|
|
1
|
-
var deekeStatistics = {
|
|
2
|
-
getDate() {
|
|
3
|
-
let d = new Date();
|
|
4
|
-
let m = d.getMonth() + 1;
|
|
5
|
-
let date = d.getDate();
|
|
6
|
-
return (m >= 10 ? m : ('0' + m)) + '.' + (date >= 10 ? date : ('0' + date));
|
|
7
|
-
},
|
|
8
|
-
getData(time) {
|
|
9
|
-
time = time || this.getDate();
|
|
10
|
-
return {
|
|
11
|
-
s_viewVideo: Storage.getInteger('s_viewVideo' + time) || 0,
|
|
12
|
-
s_viewTargetVideo: Storage.getInteger('s_viewTargetVideo' + time) || 0,
|
|
13
|
-
s_zan: Storage.getInteger('s_zan' + time) || 0,
|
|
14
|
-
s_comment: Storage.getInteger('s_comment' + time) || 0,
|
|
15
|
-
s_zanComment: Storage.getInteger('s_zanComment' + time) || 0,
|
|
16
|
-
s_privateMsg: Storage.getInteger('s_privateMsg' + time) || 0,
|
|
17
|
-
s_focus: Storage.getInteger('s_focus' + time) || 0,
|
|
18
|
-
s_viewUser: Storage.getInteger('s_viewUser' + time) || 0,
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
getWeekDate() {
|
|
22
|
-
let dates = [];
|
|
23
|
-
// 获取当前日期
|
|
24
|
-
let now = new Date();
|
|
25
|
-
// 循环获取最近 7 天的日期
|
|
26
|
-
for (let i = 1; i <= 7; i++) {
|
|
27
|
-
// 获取当前日期的时间戳
|
|
28
|
-
let timestamp = now.getTime();
|
|
29
|
-
// 计算 i 天前的时间戳
|
|
30
|
-
let dayTimestamp = 24 * 60 * 60 * 1000; // 一天的毫秒数
|
|
31
|
-
let iDayAgoTimestamp = timestamp - i * dayTimestamp;
|
|
32
|
-
// 转换为日期对象
|
|
33
|
-
let date = new Date(iDayAgoTimestamp);
|
|
34
|
-
// 格式化日期为 "yyyy-MM-dd" 的字符串并存入数组
|
|
35
|
-
//let year = date.getFullYear();
|
|
36
|
-
let month = ("0" + (date.getMonth() + 1)).slice(-2);
|
|
37
|
-
let day = ("0" + date.getDate()).slice(-2);
|
|
38
|
-
dates.push(month + "." + day);
|
|
39
|
-
}
|
|
40
|
-
return dates;
|
|
41
|
-
},
|
|
42
|
-
|
|
43
|
-
getWeekData() {
|
|
44
|
-
let dates = this.getWeekDate();
|
|
45
|
-
let data = [];
|
|
46
|
-
for (let i in dates) {
|
|
47
|
-
data.push([dates[i], this.getData(dates[i])]);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
//数据整理
|
|
51
|
-
let res = [];
|
|
52
|
-
let ids = ['s_viewVideo', 's_viewTargetVideo', 's_zan', 's_comment', 's_zanComment', 's_privateMsg', 's_focus', 's_viewUser'];
|
|
53
|
-
for (let i in ids) {
|
|
54
|
-
res[ids[i]] = [];
|
|
55
|
-
for (let j = data.length - 1; j >= 0; j--) {
|
|
56
|
-
res[ids[i]].push([data[j][0], data[j][1][ids[i]]]);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return res;
|
|
60
|
-
},
|
|
61
|
-
|
|
62
|
-
dataList() {
|
|
63
|
-
let data = this.getData(this.getDate());
|
|
64
|
-
let weekData = this.getWeekData();
|
|
65
|
-
//weight最大24
|
|
66
|
-
return [
|
|
67
|
-
{
|
|
68
|
-
'title': '今日累计视频',
|
|
69
|
-
'weight': 12,
|
|
70
|
-
'checked': true,
|
|
71
|
-
'value': data['s_viewVideo'],
|
|
72
|
-
'data': weekData['s_viewVideo'],
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
'title': '今日目标视频',
|
|
76
|
-
'weight': 12,
|
|
77
|
-
'value': data['s_viewTargetVideo'],
|
|
78
|
-
'data': weekData['s_viewTargetVideo'],
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
'title': '今日点赞',
|
|
82
|
-
'weight': 8,
|
|
83
|
-
'value': data['s_zan'],
|
|
84
|
-
'data': weekData['s_zan'],
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
'title': '今日评论',
|
|
88
|
-
'count': 1,
|
|
89
|
-
'weight': 8,
|
|
90
|
-
'value': data['s_comment'],
|
|
91
|
-
'data': weekData['s_comment'],
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
'title': '今日赞评论',
|
|
95
|
-
'weight': 8,
|
|
96
|
-
'value': data['s_zanComment'],
|
|
97
|
-
'data': weekData['s_zanComment'],
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
'title': '今日私信',
|
|
101
|
-
'weight': 8,
|
|
102
|
-
'value': data['s_privateMsg'],
|
|
103
|
-
'data': weekData['s_privateMsg'],
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
'title': '今日关注',
|
|
107
|
-
'count': 1,
|
|
108
|
-
'weight': 8,
|
|
109
|
-
'value': data['s_focus'],
|
|
110
|
-
'data': weekData['s_focus'],
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
'title': '今日访问',
|
|
114
|
-
'weight': 8,
|
|
115
|
-
'value': data['s_viewUser'],
|
|
116
|
-
'data': weekData['s_viewUser'],
|
|
117
|
-
},
|
|
118
|
-
];
|
|
119
|
-
}
|
|
120
|
-
}
|
|
1
|
+
var deekeStatistics = {
|
|
2
|
+
getDate() {
|
|
3
|
+
let d = new Date();
|
|
4
|
+
let m = d.getMonth() + 1;
|
|
5
|
+
let date = d.getDate();
|
|
6
|
+
return (m >= 10 ? m : ('0' + m)) + '.' + (date >= 10 ? date : ('0' + date));
|
|
7
|
+
},
|
|
8
|
+
getData(time) {
|
|
9
|
+
time = time || this.getDate();
|
|
10
|
+
return {
|
|
11
|
+
s_viewVideo: Storage.getInteger('s_viewVideo' + time) || 0,
|
|
12
|
+
s_viewTargetVideo: Storage.getInteger('s_viewTargetVideo' + time) || 0,
|
|
13
|
+
s_zan: Storage.getInteger('s_zan' + time) || 0,
|
|
14
|
+
s_comment: Storage.getInteger('s_comment' + time) || 0,
|
|
15
|
+
s_zanComment: Storage.getInteger('s_zanComment' + time) || 0,
|
|
16
|
+
s_privateMsg: Storage.getInteger('s_privateMsg' + time) || 0,
|
|
17
|
+
s_focus: Storage.getInteger('s_focus' + time) || 0,
|
|
18
|
+
s_viewUser: Storage.getInteger('s_viewUser' + time) || 0,
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
getWeekDate() {
|
|
22
|
+
let dates = [];
|
|
23
|
+
// 获取当前日期
|
|
24
|
+
let now = new Date();
|
|
25
|
+
// 循环获取最近 7 天的日期
|
|
26
|
+
for (let i = 1; i <= 7; i++) {
|
|
27
|
+
// 获取当前日期的时间戳
|
|
28
|
+
let timestamp = now.getTime();
|
|
29
|
+
// 计算 i 天前的时间戳
|
|
30
|
+
let dayTimestamp = 24 * 60 * 60 * 1000; // 一天的毫秒数
|
|
31
|
+
let iDayAgoTimestamp = timestamp - i * dayTimestamp;
|
|
32
|
+
// 转换为日期对象
|
|
33
|
+
let date = new Date(iDayAgoTimestamp);
|
|
34
|
+
// 格式化日期为 "yyyy-MM-dd" 的字符串并存入数组
|
|
35
|
+
//let year = date.getFullYear();
|
|
36
|
+
let month = ("0" + (date.getMonth() + 1)).slice(-2);
|
|
37
|
+
let day = ("0" + date.getDate()).slice(-2);
|
|
38
|
+
dates.push(month + "." + day);
|
|
39
|
+
}
|
|
40
|
+
return dates;
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
getWeekData() {
|
|
44
|
+
let dates = this.getWeekDate();
|
|
45
|
+
let data = [];
|
|
46
|
+
for (let i in dates) {
|
|
47
|
+
data.push([dates[i], this.getData(dates[i])]);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
//数据整理
|
|
51
|
+
let res = [];
|
|
52
|
+
let ids = ['s_viewVideo', 's_viewTargetVideo', 's_zan', 's_comment', 's_zanComment', 's_privateMsg', 's_focus', 's_viewUser'];
|
|
53
|
+
for (let i in ids) {
|
|
54
|
+
res[ids[i]] = [];
|
|
55
|
+
for (let j = data.length - 1; j >= 0; j--) {
|
|
56
|
+
res[ids[i]].push([data[j][0], data[j][1][ids[i]]]);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return res;
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
dataList() {
|
|
63
|
+
let data = this.getData(this.getDate());
|
|
64
|
+
let weekData = this.getWeekData();
|
|
65
|
+
//weight最大24
|
|
66
|
+
return [
|
|
67
|
+
{
|
|
68
|
+
'title': '今日累计视频',
|
|
69
|
+
'weight': 12,
|
|
70
|
+
'checked': true,
|
|
71
|
+
'value': data['s_viewVideo'],
|
|
72
|
+
'data': weekData['s_viewVideo'],
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
'title': '今日目标视频',
|
|
76
|
+
'weight': 12,
|
|
77
|
+
'value': data['s_viewTargetVideo'],
|
|
78
|
+
'data': weekData['s_viewTargetVideo'],
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
'title': '今日点赞',
|
|
82
|
+
'weight': 8,
|
|
83
|
+
'value': data['s_zan'],
|
|
84
|
+
'data': weekData['s_zan'],
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
'title': '今日评论',
|
|
88
|
+
'count': 1,
|
|
89
|
+
'weight': 8,
|
|
90
|
+
'value': data['s_comment'],
|
|
91
|
+
'data': weekData['s_comment'],
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
'title': '今日赞评论',
|
|
95
|
+
'weight': 8,
|
|
96
|
+
'value': data['s_zanComment'],
|
|
97
|
+
'data': weekData['s_zanComment'],
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
'title': '今日私信',
|
|
101
|
+
'weight': 8,
|
|
102
|
+
'value': data['s_privateMsg'],
|
|
103
|
+
'data': weekData['s_privateMsg'],
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
'title': '今日关注',
|
|
107
|
+
'count': 1,
|
|
108
|
+
'weight': 8,
|
|
109
|
+
'value': data['s_focus'],
|
|
110
|
+
'data': weekData['s_focus'],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
'title': '今日访问',
|
|
114
|
+
'weight': 8,
|
|
115
|
+
'value': data['s_viewUser'],
|
|
116
|
+
'data': weekData['s_viewUser'],
|
|
117
|
+
},
|
|
118
|
+
];
|
|
119
|
+
}
|
|
120
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
|
|
2
|
+
let newTask = {
|
|
3
|
+
log(){
|
|
4
|
+
Log.log(arguments);
|
|
5
|
+
console.log(arguments);
|
|
6
|
+
},
|
|
7
|
+
comment() {
|
|
8
|
+
//注释
|
|
9
|
+
let tag = UiSelector().id('com.ss.android.ugc.aweme:id/comment_container').isVisibleToUser(true).findOne();
|
|
10
|
+
console.log(tag);
|
|
11
|
+
Gesture.click(tag.bounds().left + Math.random() * tag.bounds().width(), tag.bounds().centerY());
|
|
12
|
+
console.log('打开评论窗口');
|
|
13
|
+
System.sleep(1200);
|
|
14
|
+
|
|
15
|
+
let inputTag = UiSelector().className('android.widget.EditText').editable(true).findOne();
|
|
16
|
+
console.log(inputTag);
|
|
17
|
+
Gesture.click(inputTag.bounds().left + Math.random() * inputTag.bounds().width(), inputTag.bounds().centerY());
|
|
18
|
+
console.log('开始输入评论');
|
|
19
|
+
System.sleep(500);
|
|
20
|
+
|
|
21
|
+
let iptTag = UiSelector().className('android.widget.EditText').editable(true).findOne();
|
|
22
|
+
console.log(iptTag);
|
|
23
|
+
Log.log(iptTag);
|
|
24
|
+
iptTag.setText('太棒了');
|
|
25
|
+
System.sleep(500);
|
|
26
|
+
|
|
27
|
+
let sendTag = UiSelector().id('com.ss.android.ugc.aweme:id/dqq').text('发送').findOne();
|
|
28
|
+
console.log(sendTag);
|
|
29
|
+
|
|
30
|
+
Gesture.click(sendTag.bounds().centerX(), sendTag.bounds().centerY());
|
|
31
|
+
System.sleep(500);
|
|
32
|
+
Gesture.back();
|
|
33
|
+
System.sleep(500);
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
backHome() {
|
|
37
|
+
console.log('开始返回主页');
|
|
38
|
+
let homeTag;
|
|
39
|
+
let backMaxCount = 5;
|
|
40
|
+
do {
|
|
41
|
+
homeTag = UiSelector().id('com.ss.android.ugc.aweme:id/x_t').isVisibleToUser(true).findOne();
|
|
42
|
+
if (homeTag) {
|
|
43
|
+
console.log('在首页');
|
|
44
|
+
}
|
|
45
|
+
Gesture.back();
|
|
46
|
+
console.log('返回');
|
|
47
|
+
System.sleep(1000);
|
|
48
|
+
} while (!homeTag && --backMaxCount >= 0);
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
run() {
|
|
52
|
+
console.log('开始进入应用');
|
|
53
|
+
App.launch('com.ss.android.ugc.aweme');
|
|
54
|
+
System.sleep(2000);
|
|
55
|
+
let zanCount = Storage.getInteger('task_douyin_zan_count');
|
|
56
|
+
let commentCount = Storage.getInteger('task_douyin_zan_comment');
|
|
57
|
+
|
|
58
|
+
console.log('配置:' + zanCount + ' 赞,' + commentCount + ' 评论');
|
|
59
|
+
while (zanCount > 0 || commentCount > 0) {
|
|
60
|
+
try {
|
|
61
|
+
console.log('zanCount: ' + zanCount + ' commentCount: ' + commentCount);
|
|
62
|
+
if (--zanCount >= 0) {
|
|
63
|
+
let tag = UiSelector().id('com.ss.android.ugc.aweme:id/fd9').isVisibleToUser(true).findOne();
|
|
64
|
+
console.log('点赞tag', tag);
|
|
65
|
+
Gesture.click(tag.bounds().left + Math.random() * tag.bounds().width(), tag.bounds().centerY());
|
|
66
|
+
System.sleep(1000);
|
|
67
|
+
console.log('点赞完成');
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (--commentCount >= 0) {
|
|
71
|
+
this.comment();
|
|
72
|
+
System.sleep(1000);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
let tag = UiSelector().id('com.ss.android.ugc.aweme:id/viewpager').desc('视频').scrollable(true).findOne();
|
|
77
|
+
tag.scrollForward();
|
|
78
|
+
System.sleep(3000);
|
|
79
|
+
} catch (e) {
|
|
80
|
+
console.log(e);
|
|
81
|
+
this.backHome();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
Log.setFile("douyin_zan.js.log");
|
|
88
|
+
newTask.run();
|
|
89
|
+
FloatDialogs.show('抖音任务完成');
|
package/src/task/dy.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
let dyApp = require("./dyApp");
|
|
2
|
-
|
|
3
|
-
let tag = UiSelector().id('name').findOne();
|
|
4
|
-
|
|
5
|
-
// console.log(tag.click());
|
|
6
|
-
let config = {
|
|
7
|
-
toker_view_video_keywords: Storage.get('toker_view_video_keywords'),
|
|
8
|
-
toker_view_video_second: Storage.getInteger('toker_view_video_second'),
|
|
9
|
-
toker_run_sex: Storage.getArray('toker_run_sex'),
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
console.log(config, dyApp.getName());//获取json文件中的配置参数
|
|
13
|
-
|
|
14
|
-
FloatDialogs.show('提示', '请编写业务代码');
|
|
1
|
+
let dyApp = require("./dyApp");
|
|
2
|
+
|
|
3
|
+
let tag = UiSelector().id('name').findOne();
|
|
4
|
+
|
|
5
|
+
// console.log(tag.click());
|
|
6
|
+
let config = {
|
|
7
|
+
toker_view_video_keywords: Storage.get('toker_view_video_keywords'),
|
|
8
|
+
toker_view_video_second: Storage.getInteger('toker_view_video_second'),
|
|
9
|
+
toker_run_sex: Storage.getArray('toker_run_sex'),
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
console.log(config, dyApp.getName());//获取json文件中的配置参数
|
|
13
|
+
|
|
14
|
+
FloatDialogs.show('提示', '请编写业务代码');
|