跳到主要内容

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输入

更多关于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")

支持以下匹配规则

  1. 使用正则(适用java正则)
  2. 使用范围限定(可使用大于小于号进行数值限定)
  3. 结合父子兄关系进行定位 : - 所有父节点 以par_开头
    • 所有兄节点 以sib_开头
    • 所有子节点 以chi_开头
  4. 使用控件尺寸进行定位, 支持 > 与 < 符号进行范围指定 : - width 宽
    • height 高
  5. 限制控件屏幕方位 : - 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菜单中一键启动)

更多关于YY输入法的资料

  • 返回: 仅代表是否发送成功到引擎, 不代表是否执行成功

yyds.auto_api_aux.x_input_text(text: str)

通过内置 YY 自动输入法输入文本, 需要手动到系统设置启动输入法并切换输入法(或在root下从Yyds.Auto菜单中一键启动)

更多关于YY输入法的资料

  • 返回: 仅代表是否发送成功到引擎, 不代表是否执行成功

拓展的自动化功能实现

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 – 是否打印函数运行异常