-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAutoServer.py
More file actions
193 lines (172 loc) · 6.9 KB
/
AutoServer.py
File metadata and controls
193 lines (172 loc) · 6.9 KB
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
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
# -*- coding: utf-8 -*-
import requests
import os,json,re,time
#Author: nobodyknowsme
#unfinishing
class AutoServer:
def __init__(self, address,timeout=5):
if "http://" not in address:
address = "http://"+address
else:
pass
if address[-1] == "/":
pass
else:
address = address + "/"
self.address = address
self.timeout = timeout
try:
# i dont know why timeout is not working.
checkisonoroff = requests.get(self.address + "root", timeout=3)
print("device " + self.address.replace("http://","").replace("/","") + " is online")
except:
print("device " + self.address.replace("http://","").replace("/","") + " is off\nplease download the apk from github, run it on your rooted device and open it")
exit()
#function for use
def requestdata(self,url):
return json.loads(requests.get(url).text)["data"]
#funtion for control device
def tsleep(self,t):
time.sleep(t)
def tap(self,x,y):
result = requests.get(self.address+"shell?cmd="+"input tap "+ str(x)+" "+str(y) ).text
print(result)
return result
def tapbound(self,b):
result = requests.get(self.address+"shell?cmd="+"input tap "+ str(b[0])+" "+str(b[1]) ).text
print(result)
return result
def swipe(self,x1,y1,x2,y2):
result = requests.get(self.address+"shell?cmd="+"input swipe "+ str(x1)+" "+str(y1)+ " "+str(x2)+" "+str(y2) ).text
print(result)
return result
def input(self,text):
result = requests.get(self.address+"shell?cmd="+"input text '"+str(text)+"'" ).text
print(result)
return result
def inputu(self,text):
result = requests.get(self.address+"input?str='"+str(text)+"'" ).text
print(result)
return result
#basic control
def wakeup(self):
result = requests.get(self.address+"shell?cmd="+"adb shell input keyevent 26" ).text
print(result)
return result
def sleep(self):
result = requests.get(self.address+"shell?cmd="+"adb shell input keyevent 82" ).text
print(result)
return result
def keyevent(self,keyevent):
result = requests.get(self.address+"shell?cmd="+"input keyevent "+ keyevent).text
print(result)
return result
def shell(self,code):
result = requests.get(self.address+"shell?cmd="+code).text
print(result)
return result
#function for filtering
def findsame(self,jsonlist):
returnlist = []
#print(jsonlist[0])
for i in jsonlist[0]:
for li in jsonlist:
if i in li:
returnlist.append(i)
#print(returnlist)
for i in jsonlist[0]:
t = 1
while t < len(jsonlist):
t = t + 1
try:
returnlist.remove(i)
except:
pass
#print(returnlist)
return returnlist
def bounds2center(self,bounds):
b1 = bounds.split(",")[0]
b2 = bounds.split(",")[1]
b3 = bounds.split(",")[2]
b4 = bounds.split(",")[3]
centerx = str( (int(b1) + int(b3))/2 )
centery = str( (int(b2) + int(b4))/2 )
return [centerx,centery]
def KeyValueNodeList(self,key,value):
result = json.loads(requests.get(self.address + "getnodelistbykeyvalue?key=" + key + "&value=" + value).text)
return result
def KeyValueMultiple(self,dicdata,action="tap"):
NodeListList = []
for k, v in dicdata.items():
NodeListList.append(self.KeyValueNodeList(k,v))
return self.findsame(NodeListList)
#return simple bound/get simple bound and tap
def KeyValue(self,key,value,action="tap"):
if action == "tap":
bound = self.requestdata(self.address + "getboundbykeyvalue?key=" + key + "&value=" + value)
#print(bound)
x = self.bounds2center(bound)[0]
y = self.bounds2center(bound)[1]
result = self.tap(x, y)
elif action == "null":
result = self.requestdata(self.address + "getboundbykeyvalue?key=" + key + "&value=" + value)
#print(result)
result = result
else:
result = 'action argument is incorrect'
return result
def Text(self,v,action="tap"):
if action == "tap":
result = self.KeyValue("text",v)
elif action == "null":
result = self.KeyValue("text",v,action="null")
else:
result = 'your argument is incorrect'
return result
def Desc(self,v,action="tap"):
if action == "tap":
result = self.KeyValue("content-desc",v)
elif action == "null":
result = self.KeyValue("content-desc",v,action="null")
else:
result = 'your argument is incorrect'
return result
def Id(self,v,action="tap"):
if action == "tap":
result = self.KeyValue("resource-id",v)
elif action == "null":
result = self.KeyValue("resource-id",v,action="null")
else:
result = 'your argument is incorrect'
return result
#return bound list
def KeyValueBounds(self,key,value):
result = self.requestdata(self.address + "getboundsbykeyvalue?key=" + key + "&value=" + value)
return result
def TextBounds(self,v):
result = self.requestdata(self.address + "getboundsbykeyvalue?key=text&value=" + v)
return result
def IdBounds(self,v):
result = self.requestdata(self.address + "getboundsbykeyvalue?key=resource-id&value=" + v)
return result
def DescBounds(self,v):
result = self.requestdata(self.address + "getboundsbykeyvalue?key=content-desc&value=" + v)
return result
def TextNodeList(self, v):
result = self.requestdata(self.address + "getnodelistbykeyvalue?key=text&value=" + v)
return result
def IdNodeList(self, v):
result = self.requestdata(self.address + "getnodelistbykeyvalue?key=resource-id&value=" + v)
return result
def DescNodeList(self, v):
result = self.requestdata(self.address + "getnodelistbykeyvalue?key=content-desc&value=" + v)
return result
def TextNode(self, v):
result = self.requestdata(self.address + "getnodebykeyvalue?key=text&value=" + v)
return result
def IdNode(self, v):
result = self.requestdata(self.address + "getnodebykeyvalue?key=resource-id&value=" + v)
return result
def DescNode(self, v):
result = self.requestdata(self.address + "getnodebykeyvalue?key=content-desc&value=" + v)
return result