python+adb+orc实现安卓模拟器脚本编写
最近在玩一个手游,一个功能操作十分繁琐耗时,所以想用py写一个手游脚本。
1.采用py调用adb来实现控制安卓模拟器点击,截图,滑动等操作。
import os
os.system('adb devices')
os.popen('adb devices')
order=127.0.0.1:5555
p=(100,100)
str=f'adb -s {order} shell input tap {p[0]} {p[1]}'
os.system(str)
p1=(100,100),p2=(200,200)
time=500
str=f'adb -s {order} shell input swipe {p1[0]} {p1[1]} {p2[0]} {p2[1]} {time}'
os.system(str)
order=127.0.0.1:5555
android_path=r'/storage/emulated/0/Pictures/Screenshots/'
img='py01.png'
str=f"adb -s {order} shell screencap -p {android_path}{img}"
os.system(str)
2.py通过与安卓互通目录拿到截图然后再进行识图或者orc识别或其他处理。
@tryagin
def baiduorc(image):
appid='xxx'
aipkey='xxx'
secretkey='xxx'
client=AipOcr(appid,aipkey,secretkey)
""" 读取图片 """
""" 调用通用文字识别, 图片参数为本地图片 """
result=client.basicGeneral(image)
word=result['words_result']
try:
list1=list(map(lambda x:x['words'],word))
str=''.join(list1)
except:
raise Exception(f'文字识别错误,response:{result}')
try:
k = re.findall('[\u4e00-\u9fa5]+', str)[0]
v = re.findall('\d+', str)[0]
return (k,int(v))
except:
raise Exception(f'文字识别错误,word_str:{str}')
def tryagin(fun):
num_=0
def inner(*args,**kwargs):
nonlocal num_
try:
result=fun(*args,**kwargs)
num_ = 0
except Exception as e:
num_ += 1
if num_ <= 3:
print(f'文字识别出现错误,正在尝试第{num_}次')
result=inner(*args,**kwargs)
else:
raise Exception(f'文字识别失败,已尝试{num_}次')
return result
return inner
from PIL import Image
![在这里插入图片描述](https://img-blog.csdnimg.cn/202102161751378.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4MzgxMDQ1,size_16,color_FFFFFF,t_70)
pc_path=r'..\leidian\Pictures\Screenshots'
image=Image.open(pc_path).convert('L')
boxlist=[
image.crop(p1 + p5),
image.crop(p2 + p6),
image.crop(p4 + p8),
image.crop(p5 + p9),
image.crop(p7 + p11),
image.crop(p8 + p12),
image.crop(p10 + p14),
image.crop(p11 + p15),
]
dic={
}
for box in boxlist:
fake_file = io.BytesIO()
box.save(fake_file,format='png')
k,v=baiduocr(fake_file.getvalue())
dic.setdefault(k,v)