-
Notifications
You must be signed in to change notification settings - Fork 0
/
app_alicloud.py
177 lines (169 loc) · 7.05 KB
/
app_alicloud.py
1
2
3
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
##################################
# Author : cndaqiang #
# Update : 2024-08-29 #
# Build : 2024-08-29 #
# What : 阿里云盘签到 #
##################################
try:
from airtest_mobileauto.control import *
except ImportError:
print("模块[airtest_mobileauto]不存在, 尝试安装")
import pip
try:
pip.main(['install', 'airtest_mobileauto', '-i', 'https://pypi.tuna.tsinghua.edu.cn/simple'])
except:
print("安装失败")
exit(1)
import sys
class app_alicloud():
def __init__(self):
self.prefix = self.__class__.__name__ # 类的名字
# device
self.mynode = Settings.mynode
self.totalnode = Settings.totalnode
self.LINK = Settings.LINK_dict[Settings.mynode]
self.移动端 = deviceOB(mynode=self.mynode, totalnode=self.totalnode, LINK=self.LINK)
self.设备类型 = self.移动端.设备类型
self.APPID = "com.alicloud.databox"
self.APPOB = appOB(APPID=self.APPID, big=True, device=self.移动端)
self.Tool = DQWheel(var_dict_file=f"{self.移动端.设备类型}.var_dict_{self.prefix}.yaml",
mynode=self.mynode, totalnode=self.totalnode)
#
self.dayFILE = f"{self.prefix}.txt"
self.timelimit = 60*10
self.运行时间 = [3.0, 4.0]
self.today = self.Tool.time_getweek()
self.yesterday = (self.today-1) % 7
self.APPOB.big = False
#
self.looptime = 1
self.成功次数 = 0
#
def stop(self):
self.APPOB.关闭APP()
#
def run(self, times=0):
if not connect_status():
self.移动端.连接设备()
if times == 0:
self.today = self.Tool.time_getweek()
self.yesterday = (self.today-1) % 7
try:
self.yesterday = int(self.Tool.readfile(self.dayFILE)[0].strip())
except:
TimeECHO(f"未能从{self.dayFILE}中获取到上次运行时间")
self.Tool.timelimit(timekey="RUN", limit=self.timelimit, init=True)
#
if self.Tool.timelimit(timekey="RUN", limit=self.timelimit, init=False):
TimeECHO(f"{self.prefix}.运行超时")
self.Tool.touchfile(self.dayFILE, content=str(self.yesterday))
return
#
if times > 8:
TimeECHO("失败次数太多,停止")
self.Tool.touchfile(self.dayFILE, content=str(self.yesterday))
return
#
times = times + 1
# 重新打开程序
self.APPOB.重启APP()
#
# ------------------------------------------------------------------------------
# 不存在对应图片则设置为None
开屏广告 = Template(r"tpl1730443076289.png", record_pos=(0.167, -0.224), resolution=(960, 540))
二级入口 = None
主页元素 = []
主页元素.append(Template(r"tpl1725544480761.png", record_pos=(0.226, 0.013), resolution=(960, 540)))
if 二级入口:
主页元素.append(二级入口)
#
三级入口 = None
#
领取按钮 = Template(r"tpl1725544488815.png", record_pos=(-0.214, -0.087), resolution=(960, 540))
领取成功 = Template(r"tpl1725544509798.png", record_pos=(-0.217, -0.085), resolution=(960, 540))
领取界面 = []
领取界面.append(领取按钮)
领取界面.append(领取成功)
# ------------------------------------------------------------------------------
if times %3 == 2:
# 强制点击开屏广告
sleep(2)
self.Tool.touch_record_pos(record_pos=开屏广告.record_pos, resolution=self.移动端.resolution, keystr=self.prefix+"开屏广告")
sleep(2)
# 打开程序
for i in range(10):
存在, 主页元素 = self.Tool.存在任一张图(主页元素, self.prefix+"主页元素")
if 存在:
break
sleep(5)
self.APPOB.打开APP()
# 开屏广告
if 开屏广告:
self.Tool.existsTHENtouch(开屏广告, self.prefix+"开屏广告", savepos=False)
#
存在, 主页元素 = self.Tool.存在任一张图(主页元素, self.prefix+"主页元素")
# 寻找入口
if 二级入口:
self.Tool.存在任一张图([二级入口], self.prefix+"二级入口", savepos=True)
self.Tool.existsTHENtouch(二级入口, self.prefix+"二级入口", savepos=True)
#
if 三级入口:
self.Tool.存在任一张图([三级入口], self.prefix+"三级入口", savepos=True)
self.Tool.existsTHENtouch(三级入口, self.prefix+"三级入口", savepos=True)
#
存在, 领取界面 = self.Tool.存在任一张图(领取界面, self.prefix+"领取界面")
if not 存在:
TimeECHO(f"{self.prefix}检测不到领取界面")
return self.run(times)
#
self.Tool.存在任一张图([领取按钮], self.prefix+"领取按钮", savepos=True)
# ------------------------------------------------------------------------------
# 下面是特色部分
# 检测是否有领取按钮,有的话,领取之后再循环一次检测是否有领取成功按钮
if self.Tool.existsTHENtouch(领取按钮, self.prefix+"领取按钮", savepos=True):
self.成功次数 = self.成功次数 + 1
TimeECHO(f"{self.prefix}.....成功次数{self.成功次数}....")
self.yesterday = self.today
if self.成功次数 < self.looptime:
return self.run(times=0)
else:
TimeECHO(f"{self.prefix}检测不到领取按钮")
if exists(领取成功):
self.yesterday = self.today
TimeECHO(f"{self.prefix}领取成功")
else:
if self.yesterday == self.today:
TimeECHO("找不到[领取成功],应该签到过了")
else:
TimeECHO("找不到[领取成功],再次尝试签到")
return self.run(times)
#
self.Tool.touchfile(self.dayFILE, content=str(self.yesterday))
self.APPOB.关闭APP()
return True
#
def looprun(self, times=0):
times = times + 1
startclock = self.运行时间[0]
endclock = self.运行时间[1]
while True:
leftmin = self.Tool.hour_in_span(startclock, endclock)*60.0
if leftmin > 0:
TimeECHO("剩余%d分钟进入新的一天" % (leftmin))
self.APPOB.关闭APP()
self.移动端.重启重连设备(leftmin*60)
continue
times = times+1
TimeECHO("="*10)
self.成功次数 = 0
self.run()
if __name__ == "__main__":
config_file = ""
if len(sys.argv) > 1:
config_file = str(sys.argv[1])
Settings.Config(config_file)
ce = app_alicloud()
ce.run()
exit()