kotonebot 0.4.0__py3-none-any.whl → 0.5.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- kotonebot/__init__.py +39 -39
- kotonebot/backend/bot.py +312 -312
- kotonebot/backend/color.py +525 -525
- kotonebot/backend/context/__init__.py +3 -3
- kotonebot/backend/context/task_action.py +183 -183
- kotonebot/backend/core.py +129 -129
- kotonebot/backend/debug/entry.py +89 -89
- kotonebot/backend/debug/mock.py +78 -78
- kotonebot/backend/debug/server.py +222 -222
- kotonebot/backend/debug/vars.py +351 -351
- kotonebot/backend/dispatch.py +227 -227
- kotonebot/backend/flow_controller.py +196 -196
- kotonebot/backend/ocr.py +535 -529
- kotonebot/backend/preprocessor.py +103 -103
- kotonebot/client/__init__.py +9 -9
- kotonebot/client/device.py +528 -503
- kotonebot/client/fast_screenshot.py +377 -377
- kotonebot/client/host/__init__.py +43 -12
- kotonebot/client/host/adb_common.py +107 -103
- kotonebot/client/host/custom.py +118 -114
- kotonebot/client/host/leidian_host.py +196 -201
- kotonebot/client/host/mumu12_host.py +353 -358
- kotonebot/client/host/protocol.py +214 -213
- kotonebot/client/host/windows_common.py +58 -58
- kotonebot/client/implements/__init__.py +71 -15
- kotonebot/client/implements/adb.py +89 -85
- kotonebot/client/implements/adb_raw.py +162 -158
- kotonebot/client/implements/nemu_ipc/__init__.py +11 -7
- kotonebot/client/implements/nemu_ipc/external_renderer_ipc.py +284 -284
- kotonebot/client/implements/nemu_ipc/nemu_ipc.py +327 -327
- kotonebot/client/implements/remote_windows.py +188 -188
- kotonebot/client/implements/uiautomator2.py +85 -81
- kotonebot/client/implements/windows.py +176 -172
- kotonebot/client/protocol.py +69 -69
- kotonebot/client/registration.py +24 -24
- kotonebot/config/base_config.py +96 -96
- kotonebot/config/manager.py +36 -36
- kotonebot/errors.py +76 -71
- kotonebot/interop/win/__init__.py +10 -3
- kotonebot/interop/win/_mouse.py +311 -0
- kotonebot/interop/win/message_box.py +313 -313
- kotonebot/interop/win/reg.py +37 -37
- kotonebot/interop/win/shortcut.py +43 -43
- kotonebot/interop/win/task_dialog.py +513 -513
- kotonebot/logging/__init__.py +2 -2
- kotonebot/logging/log.py +17 -17
- kotonebot/primitives/__init__.py +17 -17
- kotonebot/primitives/geometry.py +862 -290
- kotonebot/primitives/visual.py +63 -63
- kotonebot/tools/mirror.py +354 -354
- kotonebot/ui/file_host/sensio.py +36 -36
- kotonebot/ui/file_host/tmp_send.py +54 -54
- kotonebot/ui/pushkit/__init__.py +3 -3
- kotonebot/ui/pushkit/image_host.py +88 -87
- kotonebot/ui/pushkit/protocol.py +13 -13
- kotonebot/ui/pushkit/wxpusher.py +54 -53
- kotonebot/ui/user.py +148 -148
- kotonebot/util.py +436 -436
- {kotonebot-0.4.0.dist-info → kotonebot-0.5.0.dist-info}/METADATA +82 -81
- kotonebot-0.5.0.dist-info/RECORD +71 -0
- {kotonebot-0.4.0.dist-info → kotonebot-0.5.0.dist-info}/licenses/LICENSE +673 -673
- kotonebot-0.4.0.dist-info/RECORD +0 -70
- {kotonebot-0.4.0.dist-info → kotonebot-0.5.0.dist-info}/WHEEL +0 -0
- {kotonebot-0.4.0.dist-info → kotonebot-0.5.0.dist-info}/top_level.txt +0 -0
kotonebot/primitives/visual.py
CHANGED
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
|
|
3
|
-
from cv2.typing import MatLike
|
|
4
|
-
|
|
5
|
-
from .geometry import Size
|
|
6
|
-
from kotonebot.util import cv2_imread
|
|
7
|
-
|
|
8
|
-
logger = logging.getLogger(__name__)
|
|
9
|
-
|
|
10
|
-
class Image:
|
|
11
|
-
"""
|
|
12
|
-
图像类。
|
|
13
|
-
"""
|
|
14
|
-
def __init__(
|
|
15
|
-
self,
|
|
16
|
-
pixels: MatLike | None = None,
|
|
17
|
-
file_path: str | None = None,
|
|
18
|
-
lazy_load: bool = False,
|
|
19
|
-
name: str | None = None,
|
|
20
|
-
description: str | None = None
|
|
21
|
-
):
|
|
22
|
-
"""
|
|
23
|
-
从内存数据或图像文件创建图像类。
|
|
24
|
-
|
|
25
|
-
:param pixels: 图像数据。格式必须为 BGR。
|
|
26
|
-
:param file_path: 图像文件路径。
|
|
27
|
-
:param lazy_load: 是否延迟加载图像数据。
|
|
28
|
-
若为 False,立即载入,否则仅当访问图像数据时才载入。仅当从文件创建图像类时生效。
|
|
29
|
-
:param name: 图像名称。
|
|
30
|
-
:param description: 图像描述。
|
|
31
|
-
"""
|
|
32
|
-
self.name: str | None = name
|
|
33
|
-
"""图像名称。"""
|
|
34
|
-
self.description: str | None = description
|
|
35
|
-
"""图像描述。"""
|
|
36
|
-
self.file_path: str | None = file_path
|
|
37
|
-
"""图像的文件路径。"""
|
|
38
|
-
self.__pixels: MatLike | None = None
|
|
39
|
-
# 立即加载
|
|
40
|
-
if not lazy_load and self.file_path:
|
|
41
|
-
_ = self.pixels
|
|
42
|
-
# 传入像素数据而不是文件
|
|
43
|
-
if pixels is not None:
|
|
44
|
-
self.__pixels = pixels
|
|
45
|
-
|
|
46
|
-
@property
|
|
47
|
-
def pixels(self) -> MatLike:
|
|
48
|
-
"""图像的像素数据。"""
|
|
49
|
-
if self.__pixels is None:
|
|
50
|
-
if not self.file_path:
|
|
51
|
-
raise ValueError('Either pixels or file_path must be provided.')
|
|
52
|
-
logger.debug('Loading image "%s" from %s...', self.name or '(unnamed)', self.file_path)
|
|
53
|
-
self.__pixels = cv2_imread(self.file_path)
|
|
54
|
-
return self.__pixels
|
|
55
|
-
|
|
56
|
-
@property
|
|
57
|
-
def size(self) -> Size:
|
|
58
|
-
return Size(self.pixels.shape[1], self.pixels.shape[0])
|
|
59
|
-
|
|
60
|
-
class Template(Image):
|
|
61
|
-
"""
|
|
62
|
-
模板图像类。
|
|
63
|
-
"""
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
from cv2.typing import MatLike
|
|
4
|
+
|
|
5
|
+
from .geometry import Size
|
|
6
|
+
from kotonebot.util import cv2_imread
|
|
7
|
+
|
|
8
|
+
logger = logging.getLogger(__name__)
|
|
9
|
+
|
|
10
|
+
class Image:
|
|
11
|
+
"""
|
|
12
|
+
图像类。
|
|
13
|
+
"""
|
|
14
|
+
def __init__(
|
|
15
|
+
self,
|
|
16
|
+
pixels: MatLike | None = None,
|
|
17
|
+
file_path: str | None = None,
|
|
18
|
+
lazy_load: bool = False,
|
|
19
|
+
name: str | None = None,
|
|
20
|
+
description: str | None = None
|
|
21
|
+
):
|
|
22
|
+
"""
|
|
23
|
+
从内存数据或图像文件创建图像类。
|
|
24
|
+
|
|
25
|
+
:param pixels: 图像数据。格式必须为 BGR。
|
|
26
|
+
:param file_path: 图像文件路径。
|
|
27
|
+
:param lazy_load: 是否延迟加载图像数据。
|
|
28
|
+
若为 False,立即载入,否则仅当访问图像数据时才载入。仅当从文件创建图像类时生效。
|
|
29
|
+
:param name: 图像名称。
|
|
30
|
+
:param description: 图像描述。
|
|
31
|
+
"""
|
|
32
|
+
self.name: str | None = name
|
|
33
|
+
"""图像名称。"""
|
|
34
|
+
self.description: str | None = description
|
|
35
|
+
"""图像描述。"""
|
|
36
|
+
self.file_path: str | None = file_path
|
|
37
|
+
"""图像的文件路径。"""
|
|
38
|
+
self.__pixels: MatLike | None = None
|
|
39
|
+
# 立即加载
|
|
40
|
+
if not lazy_load and self.file_path:
|
|
41
|
+
_ = self.pixels
|
|
42
|
+
# 传入像素数据而不是文件
|
|
43
|
+
if pixels is not None:
|
|
44
|
+
self.__pixels = pixels
|
|
45
|
+
|
|
46
|
+
@property
|
|
47
|
+
def pixels(self) -> MatLike:
|
|
48
|
+
"""图像的像素数据。"""
|
|
49
|
+
if self.__pixels is None:
|
|
50
|
+
if not self.file_path:
|
|
51
|
+
raise ValueError('Either pixels or file_path must be provided.')
|
|
52
|
+
logger.debug('Loading image "%s" from %s...', self.name or '(unnamed)', self.file_path)
|
|
53
|
+
self.__pixels = cv2_imread(self.file_path)
|
|
54
|
+
return self.__pixels
|
|
55
|
+
|
|
56
|
+
@property
|
|
57
|
+
def size(self) -> Size:
|
|
58
|
+
return Size(self.pixels.shape[1], self.pixels.shape[0])
|
|
59
|
+
|
|
60
|
+
class Template(Image):
|
|
61
|
+
"""
|
|
62
|
+
模板图像类。
|
|
63
|
+
"""
|