Python 引擎API(由sphinx生成)
实用工具函数
yyds.util.format_time()
获取格式化的时间, 格式样式如:2024.02.04 12:56:31
yyds.util.log_d(*objs)
打印标准日志, 在Yyds.Auto开发插件中一般日志显示为灰色
yyds.util.log_e(*objs)
打印错误日志, 在Yyds.Auto开发插件中一般日志显示为红色
自动化相关类
class yyds.auto_entity.Color(r: int, g: int, b: int)
RGB颜色
similarity_to(color2)
使用 HS 欧拉距离计算算法, 计算与另一个颜色的相似度
- 参数:color2 – 另一个Color
- 返回: 0-1之间的浮点数, 数字越大, 两个颜色越相似
class yyds.auto_entity.DeviceForegroundResponse(package: str, activity: str, pid: int)
设备前台运行的应用信息
class yyds.auto_entity.EngineResultParser
引擎颜色字符串转化解析
static parse_color(rgb_text: str)
从类似 255,255,125 这样的字符串解析获取实例
static parse_match_result(text)
解析引擎的图片匹配结果
static parse_multi_color(rgb_text: str) -> (<class yyds.auto_entity.Color>)
从以空格为分隔的多个颜色中解析获取实例数组
static parse_point(text: str)
解析引擎的坐标字符串
class yyds.auto_entity.MatchImageResult(x: int, y: int, w: int, h: int, prob: float)
引擎匹配图片返回结果
class yyds.auto_entity.Node(node_obj: dict)
控件元素
property center_point : (<class int>, <class int>)
返回节点的中间坐标点, 方便用于点击
- 返回: 中间坐标的x, y轴数值
class yyds.auto_entity.Point(x: int, y: int)
坐标
class yyds.auto_entity.RequestFindImage(name: str, path: str, min_prob: float)
引擎查找图片请求参数
class yyds.auto_entity.ResFindImage(name: str, path: str, prob: float, width: int, height: int, x: int, y: int)
自动化引擎 封装高级查找图片(模版匹配算法)请求参数 所有坐标均为屏幕绝对坐标
class yyds.auto_entity.ResOcr(prob: float, text: str, x1: int, y1: int, x2: int, y2: int, x3: int, y3: int, x4: int, y4: int)
自动化引擎 封装OCR识别返回结果 所有坐标均为绝对坐标
property cx
- 返回: 中间坐标 x
property cy
- 返回: 中间坐标 y
property h
- 返回: 高
property w
- 返回: 宽
class yyds.auto_entity.ResYolo(label: str, cx: int, cy: int, x: float, y: float, w: float, h: float, prob: float)
自动化引擎 封装高级查找图片(Yolo算法)返回结果 所有坐标均为屏幕绝对坐标
基础的自动化功能实现
class yyds.auto_api.Config
可视作一个小型的配置存储类, 并与设备的ui的配置共享同一个存储位置 所有配置序列化为将配置保存为json格式, 如需读写大量数据, 请使用 👉`sqlite`
classmethod read_config_value(config_name: str, read_load=False)
可同时获取ui配置键值,其中 select(字符串值配置)、edit(字符串值配置)、check(布尔值配置)为配置值与非ui配置键值。
edit-user: : title: “账号”
value: “输入您的账号”
如 ui 配置如上,则使用 read_config_value(“edit-user”) 进行获取。
如果不存在config_name或config_name不可配置,则返回 None.
- 参数:
- config_name – ui名字
- read_load – 是否重新读取配置
- 返回:
返回值的解释⚠️
- bool: 如果用户未进入ui界面进行配置,则返回None,脚本需要判断并设置某些默认的值
- str: 返回字符串类型值
- int: 返回整数类型值
- 返回类型: Union[bool, str, int, None]
classmethod read_ui_value(config_name: str)
直接从工程目录下的 ui.yml 文件读取 value, 利用这个读取函数, 我们可以在ui.yml中配置默认值 :returns: 读取到的配置值
classmethod write_config_value(config_name: str, value)
利用代码保存配置 (一般比较少用)
- 参数:
- config_name – ui名字
- value – 值
- 返回: 无
class yyds.auto_api.ProjectEnvironment
当前工程的运行环境, 工程级的全局变量
classmethod current_project()
返回当前正在运行的工程目录名(目录名不一定与工程名字相同, 目录名具有唯一性) 在引擎内部, 将工程目录名视为唯一ID
classmethod current_project_dir()
返回当前手机上正在运行的工程目录
yyds.auto_api.cancel_kernel_click()
设置引擎 取消内核点击 重启引擎后生效
- 返回: 当前是否使用内核点击
yyds.auto_api.click(x: str | int, y: str | int)
点击坐标点
- 参数:
- x – 屏幕绝对坐标,不支持小数
- y – 屏幕绝对坐标,不支持小数
yyds.auto_api.engine_api(uri: str, options=None)
🫶自动化引擎底层RPC调用接口, 如果在安卓中, 则进行反射调用; 如果在电脑上调用, 则使用http调用
- 参数:
- uri – 远程接口
- options – 参数,字典类型,所有键值都应为str类型
- 返回: 引擎返回的结果, 所有结果均由字符串进行表示, 一般后续需要进行一定的序列化处理
yyds.auto_api.engine_set_debug(is_debug: bool)
项目级别的调试标志
- 参数:is_debug – 是否打印与自动化引擎通讯的日志
yyds.auto_api.ensure_kernel_click()
设置引擎 使用内核点击 重启引擎后生效
- 返回: 当前是否使用内核点击
yyds.auto_api.find_color(base_rgb: str, bias_points: [<class str>] = [], max_fuzzy: int = 3, step_x: int = 5, step_y: int = 5, image=None, x=None, y=None, w=None, h=None, max_counts: int = 1)
单(多)点找色, 返回匹配颜色的到的坐标
- 参数:
- base_rgb – 基点RGB字符串, 格式为R,G,B
- bias_points – 偏移点的偏移坐标与RGB字符串 如果这个数组不为空, 则只匹配基点颜色, 数组的字符串格式为”偏移X,偏移Y|R,G,B”, 如[“-313,0|243,46,14”], 若格式不当, 将会被忽略! 如果要使用反色, 即偏移点不为该颜色, 则在RGB颜色前添加~符号 “-313,0|~243,46,14”
- max_fuzzy – 找色时颜色相似度的临界值,范围为0 ~ 255(越小越相似,0为颜色相等,255为任何颜色都能匹配)
- step_x – 在寻找到一个目标点之后, 应该在横向偏离多少个像素继续寻找
- step_y – 在寻找到一个目标点之后, 应该在竖向偏离多少个像素继续寻找
- image – image 如image == None, 则进行截图作为识别图片
- max_counts – 最大成功匹配坐标点数, 即限制最多返回多少个结果, 可以提高扫描速度
- 返回: 找到符合颜色的屏幕坐标点
yyds.auto_api.get_color(x: int, y: int, image=None)
获取图片指定坐标的颜色
- 参数:
- x – 整数坐标, 应少于等于目标图像的宽
- y – 整数坐标, 应少于等于目标图像的高
- image – 如image == None, 则进行截图作为识别图片
- 返回: RGB颜色
yyds.auto_api.get_multi_color(points: [(<class int>, <class int>)], image=None) -> (<class yyds.auto_entity.Color>,)
获取图片多个坐标的颜色 V80版本新增
- 参数:
- points – 如[(100, 255), [45, 588]], 则依次返回坐标100,255以及坐标45, 588的坐标颜色
- image – 如image == None, 则进行截图作为识别图片
- 返回: RGB颜色数组
yyds.auto_api.match_images(template_image: str, prob: float, threshold=0, image=None, x=None, y=None, w=None, h=None)
对图片在指定范围内进行多次匹配
- 参数:
- image – 如image == None, 则进行截图作为识别图片
- template_image – 匹配模版
- prob – 限制最低相似度, 数字越大, 匹配精确度越高, 数值范围0-1.0
- threshold – 图片预处理, 请参考 screen_find_image
yyds.auto_api.md5_file(path)
计算文件MD5
- 参数:path – 文件路径
- 返回: 32位md5计算结果
yyds.auto_api.md5_str(text)
计算文本MD5
- 参数:text – 文本内容
- 返回: 文本MD5
yyds.auto_api.ocr(image=None, x=None, y=None, w=None, h=None, use_gpu=False)
[底层接口] 使用引擎识别当前屏幕的文字, 可指定识别范围
- 参数:
- image – 若image==None, 则截取屏幕进行识别; 若image为文件路径, 则
- x – 识别起始点 可以使用相对坐标(0-1)
- y – 识别起始点 可以使用相对坐标(0-1)
- w – 宽
- h – 高
- use_gpu – 是否使用Gpu运算, 性能差的手机不建议, 会导致手机掉帧
- 返回: 引擎返回识别文本
yyds.auto_api.post_file(local: str, remote_dir: str = '/sdcard')
在电脑运行脚本上拉取手机对文件到本地
- 参数:
- local – 本地文件绝对路径
- remote_dir – 远程手机目录, 默认为/sdcard
- 返回: 是否操作成功
yyds.auto_api.pull_file(remote: str, local: str)
在电脑运行脚本上拉取手机对文件到本地
- 参数:
- remote – 远程手机文件路径
- local – 本地文件路径
- 返回: 是否操作成功
yyds.auto_api.random_click(x: int, y: int, w: int, h: int)
在指定区域内 随机点击 做到模拟人工操作
- 参数:
- x – X坐标
- y – Y坐标
- w – 在x坐标上, 可以横向偏移多少
- h – 在y坐标上, 可以纵向偏移多少
yyds.auto_api.screen_find_image(*img, x=None, y=None, w=None, h=None, threshold: int = -1)
[底层接口] 在屏幕上同时寻找多张图片, 可以指定范围
使用例子:
# 从屏幕中间往下(1920*0.2)高度, 左边100像素开始寻找, 若分辨率 h=1920
screen_find_images("/sdcard/1.png;/sdcard/2.png", y=960, h=0.2, x=100)
参数:
img – 图片路径, 建议使用相对路径, 以兼容电脑运行脚本
x – 识别起始点 可以使用相对坐标(0-1)或绝对像素值, 可以想象是从屏幕左边拉条线出来, 线左边区域不要去查找
y – 识别起始点 可以使用相对坐标(0-1)或绝对像素值, 可以想象是从屏幕顶部拉条线出来, 线以上区域不要去查找
w – 宽 可以使用相对坐标(0-1)或绝对像素值, 从左边起始初区域延伸多长距离, 如为空, 则查找到屏幕右边
h – 高 可以使用相对坐标(0-1)或绝对像素值, 从顶部起始区域域延伸多长距离, 如为空, 则查找到屏幕底部
threshold –
若 threshold < 0, 则图片保持彩色查找匹配(转换到luv颜色空间), threshold的取值在该范围下无意义;
若 threshold == 0, 对图片进行灰度并反相;
若 threshold > 0, 对图片进行反相并二值化处理(THRESH_BINARY的方式进行二值化), threshold取值范围应为1-255;
yyds.auto_api.screen_yolo_locate(x=None, y=None, w=None, h=None, use_gpu=True)
[底层接口] 底层接口 使用yolo查找目标
- 参数:
- x – 识别起始点 可以使用相对坐标(0-1)
- y – 识别起始点 可以使用相对坐标(0-1)
- w – 宽 可以使用相对坐标(0-1)
- h – 高 可以使用相对坐标(0-1)
- use_gpu – 是否使用gpu运行,建议处理器较差的机器不要使用gpu运算,会卡顿
- 返回: 引擎返回识别文本
yyds.auto_api.screenshot(path=None)
屏幕截图, 注意横屏截图与竖屏对截图对像素是不一样的
- 参数:path – 截图保存路径, 此接口无需申请任何权限
- 返回: 截图对最终保存路径
yyds.auto_api.toast(content: str)
- 参数:content – 提示内容
提示:某些机型需要打开 应用后台窗口弹出权限
yyds.auto_api.ui_dump_xml(path=None)
[底层接口] 扫描控件布局xml到本地, 一般来说, 在脚本上自行解析xml文件比较复杂, 建议直接使用`ui_match`函数
- 参数:path – 保存到本地路径
- 返回: 保存的路径
次要的自动化功能实现
yyds.auto_api_aux.app_apk_backup(pkg: str, path: str)
提取备份应用安装包(apk), 保存到设备指定位置
- 参数:
- pkg – 应用包名
- path – 备份到手机路径
- 返回: 是否成功
yyds.auto_api_aux.app_apk_install(path: str)
进行 apk 安装
- 参数:path – APK文件路径
- 返回: 是否安装成功
yyds.auto_api_aux.app_data_backup(pkg: str, path: str)
备份应用数据到指定的路径
- 参数:
- pkg – 应用包名
- path – 备份路径, 备份文件为tar格式
- 返回: 是否成功
yyds.auto_api_aux.app_data_recovery(pkg: str, path: str)
从指定的文件还原应用数据
- 参数:
- pkg – 应用包名
- path – 备份路径, 备份文件为tar格式, 如/sdcard/1.tar.gz
- 返回: 是否成功
yyds.auto_api_aux.bring_app_to_top(pkg: str)
将后台运行的应用带回前台
- 返回: 是否操作成功
yyds.auto_api_aux.click_double(x: str | int, y: str | int)
双击坐标点
yyds.auto_api_aux.device_code()
应用imei码, 可作为应用唯一硬件码, 如获取失败则获取meid或者cpu序列号
- 返回: 唯一设备硬件码
yyds.auto_api_aux.device_foreground()
获取当前设备前台运行信息
- 返回: 前台运行信息, 包含有当前进程pid, 活动名, 应用包名信息
yyds.auto_api_aux.device_foreground_activity()
比device_foreground 更快
- 返回: 当前活动界面名
yyds.auto_api_aux.device_foreground_package()
比device_foreground 更快
- 返回: 当前前台包名
yyds.auto_api_aux.device_get_screen_size() -> (<class int>, <class int>)
获取屏幕分辨率大小
⚠️ 注意:竖屏与横屏返回的数值在屏幕发生旋转时候不一样, 比如竖屏时候, 返回(1080, 1920); 在横屏时候, 返回(1920, 1080), 我们在使用百分比坐标系统时候尤其需要注意这一点 :returns: 宽, 高
yyds.auto_api_aux.device_model()
获取当前手机型号
学习指南:类似命令可以自定义很多, 比如获取当前设备代号 shell("getprop ro.product.device")
- 返回: 手机型号
yyds.auto_api_aux.get_clipboard()
获取粘贴板文本, 在安卓9以上被限制, 需要启用YY输入法进行获取
- 返回: 粘贴板文本
yyds.auto_api_aux.image_similarity(img1: str, img2: str, flags: int = 0)
计算两张的图片相似度, 注意需要两张图片的尺寸一致
- 参数:
- img1 – 图片1的路径
- img2 – 图片2的路径
- flags – 若为0则使用直方图计算; 未来会增加更多的对比算法
- 返回: 返回0-100的浮点数
yyds.auto_api_aux.input_text(text: str)
注入文本, 受安卓系统限制, 不支持中文
- 参数:text – 文本, (ascii)进允许包含英文数字以及符号
- 返回: 注入成功的字符个数
yyds.auto_api_aux.is_app_running(pkg: str)
- 返回: app是否在后台运行
yyds.auto_api_aux.is_in_app(pkg: str)
当前是否在某应用界面内
- 参数:pkg – 应用包名
- 返回: 当前当前是否在某应用界面内
yyds.auto_api_aux.is_net_online()
通过请求指定链接测试当前网络是否畅通
- 返回: 当前设备网络是否连通
yyds.auto_api_aux.key_back()
注入返回键
yyds.auto_api_aux.key_code(code)
注入键值码, 键值码数值, 请参考yydsxx.com, 参考文章Android KeyCode 键码对照表)
- 参数:code – 键值码
yyds.auto_api_aux.key_confirm()
确认键,一般用于编辑框确实搜索,确认提交
yyds.auto_api_aux.key_home()
注入home键
yyds.auto_api_aux.key_menu()
注入菜单键
yyds.auto_api_aux.model_ocr_reload(ncnn_bin_path, ncnn_param_path)
自定义你的pp ocr模型, 需要转换为ncnn模型, 若已经加载过模型, 则进行重新加载
提示: 引擎已内置OCR模型, 一般不用自己训练, 如需要艺术字识别等场景可以自行训练
- 参数:
- ncnn_bin_path – bin文件路径
- ncnn_param_path – param文件路径
- 返回: 无
yyds.auto_api_aux.model_yolo_reload(ncnn_bin_path, ncnn_param_path)
自定义你的yolo模型, 需要转换为ncnn模型 默认加载 /data/local/tmp/yyds.bin 默认加载 /data/local/tmp/yyds.param
- 参数:
- ncnn_bin_path – bin文件路径
- ncnn_param_path – param文件路径
- 返回: 无
yyds.auto_api_aux.open_app(pkg)
根据包名打开应用
- Params: 应用包名, 如系统不便查看应用包名, 可通过如”设备信息”等三方应用进行查看
- 返回: 无
yyds.auto_api_aux.open_url(url)
通过匹配intent打开网页, 电话等页面, 会使用系统默认应用进行打开
如果 url为 http 链接, 即使用系统默认的浏览器应用, 也能打开其它系统链接 比如电话tel:21113336
成功返回:Starting: Intent { act=android.intent.action.VIEW dat=tel:xxxxxxxxxx }
错误返回:Starting: Intent { act=android.intent.action.VIEW dat=asdfs } Error: Activity not started, unable to resolve Intent { act=android.intent.action.VIEW dat=asdfs flg=0x10000000 }
- 返回: intent 命令的输出
yyds.auto_api_aux.screen_find_image_first_x(fd_images: Tuple[str | RequestFindImage], min_prob: float = 0.9, x=None, y=None, w=None, h=None, threshold: int = -1)
屏幕查找图片, 仅返回第一张查找结果
- 参数:
- fd_images – 需要查找的图片
- min_prob – 最低置信率
- x – 识别起始点 可以使用相对坐标(0-1)
- y – 识别起始点 可以使用相对坐标(0-1)
- w – 宽 可以使用相对坐标(0-1)
- h – 高 可以使用相对坐标(0-1)
- threshold – 图片预处理方式 参考`screen_find_image()`
- 返回: 第一张查找到到图片
yyds.auto_api_aux.screen_find_image_x(fd_images: Tuple[str, ...] | Tuple[RequestFindImage, ...], min_prob: float = 0.5, x=None, y=None, w=None, h=None, threshold: int = -1)
对于同时查找多张图片的封装
- 参数:
- fd_images – 需要查找的图片, 图片数组或元祖, 需要一个可迭代的对象
- min_prob – float 最低置信率
- x – 识别起始点 可以使用相对坐标(0-1)
- y – 识别起始点 可以使用相对坐标(0-1)
- w – 宽 可以使用相对坐标(0-1)
- h – 高 可以使用相对坐标(0-1)
- threshold – 图片预处理方式 参考`screen_find_image()`
- 返回类型: Tuple[ResFindImage]
- 返回: 找图结果
yyds.auto_api_aux.screen_ocr_first_x(specific_texts=typing.Union[list, tuple], x=None, y=None, w=None, h=None, use_gpu=False)
使用内置ocr模型 对当前屏幕进行 OCR 识别, 但只获取第一个返回结果
- 返回: 可参考screen_ocr_x , 返回第一个结果
yyds.auto_api_aux.screen_ocr_x(specific_texts: list | tuple | None = None, x=None, y=None, w=None, h=None, use_gpu=False)
使用内置ocr模型 对当前屏幕进行 OCR 识别
- 参数:
- x – 识别起始点 可以使用相对坐标(0-1)
- y – 识别起始点 可以使用相对坐标(0-1)
- w – 宽 可以使用相对坐标(0-1)
- h – 高 可以使用相对坐标(0-1)
- use_gpu – 是否使用Gpu运算, 性能差的手机不建议, 会导致手机掉帧
- specific_texts – 指定查找文本, 支持 python正则表达式匹配
- 返回: OCR识别结果列表
yyds.auto_api_aux.screen_yolo_find_first_x(labels=None, prob: float = 0.9, x=None, y=None, w=None, h=None, use_gpu=False)
- 返回: 请参考yolo_find_x, 返回第一个结果
yyds.auto_api_aux.screen_yolo_find_x(specify_labels=None, min_prob: float = 0.9, x=None, y=None, w=None, h=None, use_gpu=False)
通过yolo算法识别当前屏幕内容, 注意使用model_yolo_reload函数正确加载自定义模型, 否则加载默认的目录下模型
- 参数:
- x – 识别起始点 可以使用相对坐标(0-1)
- y – 识别起始点 可以使用相对坐标(0-1)
- w – 宽 可以使用相对坐标(0-1)
- h – 高 可以使用相对坐标(0-1)
- use_gpu – 是否使用Gpu运算, 性能差的手机不建议, 会导致手机掉帧
- specify_labels – 是否寻找指定label内容
- min_prob – 最低置信率
- use_gpu – 是否使用gpu运算
- 返回: 识别结果列表
yyds.auto_api_aux.set_clipboard(text: str)
复制文本到粘贴板, 在高级的安卓版本可能被受到限制, 注意自行测试, 在高版本安卓中, 应启用YY输入法方可进行稳定的获取
- 参数:text – 要复制粘贴到文本
- 返回: 无
yyds.auto_api_aux.set_yy_input_enable(enable: bool)
启用或禁用YY输入
- 参数:enable – 设置为False 若当前为YY输入法, 退出并切换回上个输入法
- 返回: 是否已启用
yyds.auto_api_aux.shell(*cmd)
自动化引擎 执行shell脚本, 返回shell字符串, 可执行多条
注意引擎内置busybox, PATH的优先级在最前面的是:/data/local/tmp/BB
- 返回: 返回shell执行输出 包括错误流!
yyds.auto_api_aux.stop_app(pkg)
停止应用运行, 相当于从任务栏划掉app
- 返回: 无
yyds.auto_api_aux.swipe(x1, y1, x2, y2, duration, is_random: bool = False)
滑动
- 参数:
- x1 – 起始坐标 x
- y1 – 起始坐标 y
- x2 – 目标坐标 x
- y2 – 目标坐标 y
- duration – 滑动耗时(毫秒) 越小滑动越快
- is_random – 是否随机进行滑动(会画出一条锯齿一样的线, 而不是纯直线)
yyds.auto_api_aux.ui_child(node: Node)
获取一个节点的子节点
- 返回: 匹配到的节点数组, 如匹配失败, 返回空数组
yyds.auto_api_aux.ui_exist(match_from_cache=False, **match_params)
检查符合条件的控件是否存在
- 参数:match_from_cache – 是否从引擎缓存中拉取控件, 而不是从系统从新获取控件; 适合于确保当前画面没有变化的界面, 提高运行效率
- 返回: ui是否存在
yyds.auto_api_aux.ui_match(match_from_cache=False, **match_params)
扫描当前屏幕所有ui控件并进行匹配
注意因为python中变量命名无法包含横杠-, 所以使用代替, class用class代替
python
ui_match(context_desc="资讯", drawing_order="2")
支持以下匹配规则
- 使用正则(适用java正则)
- 使用范围限定(可使用大于小于号进行数值限定)
- 结合父子兄关系进行定位
: - 所有父节点 以par_开头
- 所有兄节点 以sib_开头
- 所有子节点 以chi_开头
- 使用控件尺寸进行定位, 支持 > 与 < 符号进行范围指定
: - width 宽
- height 高
- 限制控件屏幕方位
: - top 上
- bottom 下
- left 左
- right 右
匹配例子:
# 结合位置, 大于进行定位, top=0.5意思是从屏幕中间往下开始找, width>10 意思是控件的宽大于10
ui_match(text="我的", top=0.5, width=">10")
- 参数:
- match_params – 匹配参数, 有多个匹配参数就需要匹配全部参数
- match_from_cache – 是否从引擎缓存中拉取控件, 而不是从系统从新获取控件; 适合于确保当前画面没有变化的界面, 提高运行效率
- 返回: 识别结果, 匹配到的节点数组, 如匹配失败, 返回空数组
yyds.auto_api_aux.ui_parent(node: Node)
获取一个节点的父节点 注意父节点是往上遍历的, 即结果数组后面的元素是前面元素的父节点
- 返回: 匹配到的节点数组, 如匹配失败, 返回空数组
yyds.auto_api_aux.ui_sib(node: Node)
获取一个节点的旁系节点(兄弟节点), 结果不包含自己
- 返回: 匹配到的节点数组, 如匹配失败, 返回空数组
yyds.auto_api_aux.x_input_clear()
通过内置 YY 自动输入法清空编辑框文本, 需要手动到系统设置启动输入法并切换输入法(或在root下从Yyds.Auto菜单中一键启动)
- 返回: 仅代表是否发送成功到引擎, 不代表是否执行成功
yyds.auto_api_aux.x_input_text(text: str)
通过内置 YY 自动输入法输入文本, 需要手动到系统设置启动输入法并切换输入法(或在root下从Yyds.Auto菜单中一键启动)
- 返回: 仅代表是否发送成功到引擎, 不代表是否执行成功
拓展的自动化功能实现
yyds.auto_plus.click_target(t: [<class yyds.auto_entity.ResOcr>, <class yyds.auto_entity.ResYolo>, <class yyds.auto_entity.ResFindImage>])
点击对象
- 参数:t – 点击对象, 可为OCR识别结果,Yolo识别识别, 找图结果
- 返回: 无
yyds.auto_plus.download(url, save_local_path)
http网络文件下载, 请确保URL可访问
- 参数:
- url – 下载url
- save_local_path – 本地保存路径
- 返回: 是否下载成功
yyds.auto_plus.exit_go_home()
返回桌面并退出当前脚本项目
- 返回: 无
yyds.auto_plus.false_sleep(t: int | float)
暂停代码运行指定秒数 并返回假
- 参数:t – 暂停秒数, 可以为小数, 如0.1或者.1即为10分之一秒
- 返回: 无
yyds.auto_plus.find_image_click(*img, min_prob=0.5, x=None, y=None, w=None, h=None, offset_x: float | None = None, offset_y: float | None = None, threshold: int = -1, wait: int = 0)
若找到了所有图片, 则点击最后一张图片, 可以传入点击偏移
- 参数:
- img – 图片字符串或者元祖(图片, 是否必须点击, 点击前停顿秒数, 点击次数)
- min_prob – 过滤置信率
- x – 指定范围, 参考找图函数
- y – 指定范围, 参考找图函数
- w – 指定范围, 参考找图函数
- h – 指定范围, 参考找图函数
- offset_x – 相对于找到的图片的位置横轴方向上的编译, 可以为负数, 取值范围为-1.0-1.0, 如找到图片的坐标x为100, 则点击坐标x=100 + offset_x * 屏幕宽
- offset_y – 相对于找到的图片的位置纵轴方向上的编译, 可以为负数, 取值范围为-1.0-1.0
- threshold – 引擎找图算法, 参考找图函数
- wait – 找到了图片等待多少秒再进行点击
- 返回:
yyds.auto_plus.find_image_click_max_prob(*img, min_prob=0.5, x=None, y=None, w=None, h=None, is_random_click=False, threshold: int = -1)
find_image_click的增强版本 编写简单的游戏脚本非常实用, 思路传入一堆图片, 看看出现了哪些图片, 查找相似度最大的图片进行点击
有些图片是必点的, 如应用提示的确认对话框
- 参数:
- img – 可变参数, 元素为图片字符串或者元祖(图片, 是否必须点击, 点击前停顿秒数, 点击次数)
- min_prob – 过滤置信率
- x – 指定范围, 参考找图函数
- y – 指定范围, 参考找图函数
- w – 指定范围, 参考找图函数
- h – 指定范围, 参考找图函数
- is_random_click – 是否随机点击
- threshold – 阈值
- 返回: 是否找到了符合目标的图片并进行了点击操作
yyds.auto_plus.ocr_click_any(*text, x=None, y=None, w=None, h=None, offset_h=None, offset_w=None)
如果搜索到任一文字, 点击最后一个
yyds.auto_plus.ocr_click_if_found(*text, x=None, y=None, w=None, h=None, offset_h=None, offset_w=None)
如果搜索到所有文字, 点击最后一个
yyds.auto_plus.ocr_exists_all(*text, x=None, y=None, w=None, h=None)
使用ocr判断当前屏幕上是否所有文字都存在
使用例子:若屏幕指定位置存在“去添加” 则找图进行点击
ocr_exists_all("去添加", y=0.75, x=0.3, w=0.5) and find_image_click("img/今日头条开红包叉.jpg", y=0.5,
w=0.15, threshold=0)
- 参数:text – 可变参数, 要判断的文字
- 返回: 是否所有文字都存在
yyds.auto_plus.ocr_exists_any(*text, x=None, y=None, w=None, h=None)
使用ocr判断当前屏幕上是否任意文字存在
使用例子:若屏幕指定位置存在任意文字 立即领取、拆、点击领取现金、立即提现、同意并继续, 则找图进行点击
ocr_click_any("立即领取", "拆", "点击领取现金", "立即提现", "同意并继续", y=0.5, h=0.3) and toast("存在任意文字")
- 参数:text – 可变参数, 要判断的文字
- 返回: 是否任意文字都存在
yyds.auto_plus.open_app_from_desktop(app_name: str, pkg_name: str, img: str)
该函数模拟手动从手机桌面点开应用, 也可以使用open_app函数
- 参数:
- app_name – 应用名
- pkg_name – 应用包名
- img – 应用图标截图
:returns 无
yyds.auto_plus.random_sleep(a: int, b: int)
暂停代码运行指定秒数 并返回假
- 参数:
- a – 区间开始,
- b – 区间结束
- 返回:
yyds.auto_plus.scal_pos_1080_2400(x, y) -> (<class int>, <class int>)
进行全分辨率适配, 按比例对屏幕坐标进行转换
- 参数:
- x – x
- y – y
- 返回: 坐标
yyds.auto_plus.set_text(text)
设置编辑框的文本
- 参数:text – 需要设置到编辑框的文本
- 返回: 无
yyds.auto_plus.sleep(t)
暂停代码运行指定秒数
- 参数:t – 暂停秒数, 可以为小数, 如0.1或者.1即为10分之一秒
- 返回: 无
yyds.auto_plus.swipe_down()
往下滑动
- 返回: 无
yyds.auto_plus.swipe_left()
往左滑动
- 返回: 无
yyds.auto_plus.swipe_right()
往右滑动
- 返回: 无
yyds.auto_plus.swipe_up()
往上滑动
- 返回: 无
yyds.auto_plus.toast_print(text)
对指定文本打印到日志并弹出toast
- 参数:text – 需要提示并打印的文本
- 返回: 无
对于自动化实用的装饰器函数
class yyds.auto_func.WrapRecord
界面与TASK的注册记录, 两个字典, 记录着名称与对应的函数, 需要的时候跳过去执行
yyds.auto_func.do(times: int, interval: float, pre_interval: bool, *func)
高级函数 循环并且间隔n秒执行一箩筐的函数, 或许能够显得代码工整点吧~
- 参数:
- times – 执行次数
- interval – 执行间隔秒数
- func – 可变参数, 执行的函数
yyds.auto_func.get_activity_handler(name: str)
把每一个界面当作一个任务
yyds.auto_func.handle_task(task_name: str)
执行处理`register_task`注册的任务
- 参数:task_name – 任务名字
yyds.auto_func.loop_activity_handle(other)
把脚本主循环交给界面处理器, 当手机在不同的界面时, 会执行不同的函数
- 参数:other – 如果找到想应的界面, 则进行other函数
yyds.auto_func.register_task(*task_name)
把一个函数当作一个任务 装饰器 注册任务
- 参数:task_name – 任务名字
yyds.auto_func.retry_until_true(retry_time=40, interval=1)
装饰器 循环运行定义的函数, 最大尝试`retry_time`次, 间隔`interval`秒, 若在循环过程中, 函数返回结果为真, 则提前终止循环
yyds.auto_func.run(func)
装饰器 直接运行定义的函数
yyds.auto_func.run_activity_handler(*names: str)
判断当前设备活动名是否为注册的活动名, 如果是, 则执行任务, 如果不是, 则打印日志
- 参数:names – 注册的活动名, 可变参数, 即可同时注册多个
yyds.auto_func.run_no_hurt(func)
装饰器 直接运行定义的函数, 并捕抓其运行异常
yyds.auto_func.run_until_true(func, max_times: int)
最大尝试max_times次运行func, 如果结果为真, 则立马返回
- 参数:
- func – 函数
- max_times – 次数
yyds.auto_func.try_run(func, print_exception=True)
运行func函数, 并捕抓其运行异常
- 参数:
- func – 函数
- print_exception – 是否打印函数运行异常