PyClickerRPA 0.1.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.
autoclicker/windows.py ADDED
@@ -0,0 +1,53 @@
1
+ """Enumerate top-level windows — port of windowselector.cpp.
2
+
3
+ Lists visible windows that have a title and a non-empty client area.
4
+ """
5
+ from __future__ import annotations
6
+
7
+ from dataclasses import dataclass
8
+ from typing import Optional
9
+
10
+ try:
11
+ import win32gui
12
+ _HAS_WIN32 = True
13
+ except ImportError:
14
+ _HAS_WIN32 = False
15
+
16
+
17
+ @dataclass
18
+ class WindowInfo:
19
+ hwnd: int = 0
20
+ title: str = ""
21
+ width: int = 0
22
+ height: int = 0
23
+
24
+
25
+ def list_windows() -> list[WindowInfo]:
26
+ """All visible, titled, non-zero-size top-level windows."""
27
+ if not _HAS_WIN32:
28
+ return []
29
+ result: list[WindowInfo] = []
30
+
31
+ def _enum(hwnd, _):
32
+ if not win32gui.IsWindowVisible(hwnd):
33
+ return
34
+ title = win32gui.GetWindowText(hwnd)
35
+ if not title:
36
+ return
37
+ left, top, right, bottom = win32gui.GetClientRect(hwnd)
38
+ w, h = right - left, bottom - top
39
+ if w <= 0 or h <= 0:
40
+ return
41
+ result.append(WindowInfo(hwnd=hwnd, title=title, width=w, height=h))
42
+
43
+ win32gui.EnumWindows(_enum, None)
44
+ return result
45
+
46
+
47
+ def find_by_title(title: str) -> Optional[WindowInfo]:
48
+ """First window whose title contains *title* (case-insensitive)."""
49
+ t = title.lower()
50
+ for w in list_windows():
51
+ if t in w.title.lower():
52
+ return w
53
+ return None
@@ -0,0 +1,90 @@
1
+ Metadata-Version: 2.4
2
+ Name: PyClickerRPA
3
+ Version: 0.1.0
4
+ Summary: Visual auto-click / RPA tool: window capture, OpenCV image matching, OCR, a node flow editor and step-list editor, recorder, scheduler and triggers (Windows).
5
+ Author: Equinox
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/Equinox/PyClickerRPA
8
+ Keywords: autoclicker,rpa,automation,opencv,template-matching,ocr,gui,windows
9
+ Classifier: Environment :: Win32 (MS Windows)
10
+ Classifier: Operating System :: Microsoft :: Windows
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Topic :: Desktop Environment
13
+ Classifier: Intended Audience :: End Users/Desktop
14
+ Requires-Python: >=3.10
15
+ Description-Content-Type: text/markdown
16
+ Requires-Dist: numpy>=1.23
17
+ Requires-Dist: opencv-python>=4.8
18
+ Requires-Dist: pywin32>=305; sys_platform == "win32"
19
+ Requires-Dist: pynput>=1.7
20
+ Requires-Dist: PySide6>=6.5
21
+ Provides-Extra: ocr
22
+ Requires-Dist: paddleocr>=2.7; extra == "ocr"
23
+ Requires-Dist: paddlepaddle>=2.5; extra == "ocr"
24
+
25
+ # PyClickerRPA
26
+
27
+ A visual auto-click / RPA tool for Windows — window/screen capture, OpenCV
28
+ template matching, optional OCR, a node-based flow editor **and** a linear
29
+ step-list editor, an action recorder, a scheduler, and image/color triggers.
30
+
31
+ It is a Python/PySide6 port of a Qt/C++ AutoClicker, and reads/writes the same
32
+ `.json` task format.
33
+
34
+ ## Install
35
+
36
+ ```
37
+ pip install PyClickerRPA
38
+ ```
39
+
40
+ Optional OCR (find-text / read-text steps) needs PaddleOCR:
41
+
42
+ ```
43
+ pip install "PyClickerRPA[ocr]"
44
+ ```
45
+
46
+ ## Run
47
+
48
+ GUI:
49
+
50
+ ```
51
+ autoclicker
52
+ ```
53
+
54
+ Headless (run a saved task against a window by title, or the whole screen):
55
+
56
+ ```
57
+ autoclicker-run task.json --window "Notepad"
58
+ ```
59
+
60
+ ## Features
61
+
62
+ - **Targeting**: pick any visible window (or the whole screen); background-window
63
+ capture via `PrintWindow`.
64
+ - **Matching**: OpenCV `TM_CCOEFF_NORMED` template matching (multi-scale, ROI,
65
+ multi-target), pixel-color checks, and optional PaddleOCR text find / read.
66
+ - **Editors**: drag-and-drop **node flow graph** (back-edges become loops) and a
67
+ **step list** with a full per-step parameter dialog; both interoperate.
68
+ - **~30+ step types**: click image/text/position, click-all, relative & offset
69
+ clicks, wait / random wait, drag / long-press / pinch / scroll, key / type /
70
+ hotkey, loop / goto / while / do-until, if image/text/color/count/var, set-var
71
+ (`++`/`--`, `last_x/last_y/last_text`), read-text→variable, call sub-task,
72
+ groups.
73
+ - **Authoring aids**: action recorder (global hooks), snippet library, task
74
+ packages (`.zip` with templates), edit-on-preview coordinate picking,
75
+ template crop / color pick, single-step test run.
76
+ - **Runtime**: live variables panel, hit markers on the preview, screenshot on
77
+ failure, retry / repeat / until policies.
78
+ - **Automation**: global hotkeys (F6 run/stop, ESC stop), scheduler, and a
79
+ monitor/trigger mode (run a task when an image/color appears) with tray icon.
80
+ - **Correctness**: multi-monitor + high-DPI aware coordinates.
81
+
82
+ ## Notes
83
+
84
+ - **Windows only** (uses Win32 for capture and `SendInput`).
85
+ - OCR's first run downloads PaddleOCR models (~100 MB).
86
+ - Some target windows may require running as administrator.
87
+
88
+ ## License
89
+
90
+ MIT
@@ -0,0 +1,29 @@
1
+ autoclicker/__init__.py,sha256=vAohxUGXGksnw0UzCk9VIQaX1DmrNxQXD4WermvPN2c,480
2
+ autoclicker/app.py,sha256=dpuxXb9ZMj2iYszOoDKzGRZSF-sBy5WtIti7T3nK39c,438
3
+ autoclicker/capture.py,sha256=S64ri2dRFy474ByScst4ggnKUnFllHuae1if3ZirPNE,3285
4
+ autoclicker/clicker.py,sha256=k3v0VH30BUKwu70CvSu_mG5Gqpk6hpRuc-dJreUsBFo,7678
5
+ autoclicker/dpi.py,sha256=rslTkJQUUcm7p9hoOqUjr7TVjGJDOKLE4V9-ZhfnsMw,817
6
+ autoclicker/matcher.py,sha256=DciexW8AGRVwj9ny4-mydmet_iEoEEVzzGS4CpX9N48,4986
7
+ autoclicker/models.py,sha256=detQO5z-58ioN6f24cyC5cirNQqKtgLYTiBh-IOgnrI,18323
8
+ autoclicker/ocr.py,sha256=wqe8MDR8fg6RBuc8uvU82b6fCNxsk1mMHJW-5h66wAg,1858
9
+ autoclicker/run.py,sha256=-EXt76-8bFaa6TVWG_u9zzE9hGOK9YoUfDyGch5SFsM,1925
10
+ autoclicker/runner.py,sha256=Py_bx9_AUkTbTSd1KVp48L8DZAXJs_CwkViidpaHmzk,29388
11
+ autoclicker/windows.py,sha256=fzZFIKhxkPfG5cuX-Fz5XecKk2HPXskTLP-a-fkKSmI,1330
12
+ autoclicker/gui/__init__.py,sha256=6KAjm7qpdocLpM1l8nZYIx1rZgK9ImEUFCYfZFdIYlw,46
13
+ autoclicker/gui/flow_connection.py,sha256=D0u6ghKyzLFLXqNvMO3c6D8Br8h8cOtkB9LFaRMoZzc,3493
14
+ autoclicker/gui/flow_editor.py,sha256=2vScnbiRhCn8Qz4UGSSaRTUZ2eOe1HP3wthk-LU6izE,13858
15
+ autoclicker/gui/flow_node.py,sha256=Hg0tN24e8yqBb5ONZhtn4VozYdi5_ErNuJb7TlzLO-w,3666
16
+ autoclicker/gui/hotkeys.py,sha256=JwVXIlrp1efDV3is82TdGSIp3IeXNM6BQJcWq8MGRxo,1080
17
+ autoclicker/gui/main_window.py,sha256=N6wofxKPmps_wBSPUJ83bfY7_-rVJmOkc34rRMdP_Lo,26455
18
+ autoclicker/gui/monitor.py,sha256=ExJND70mSXuDz3K3Oksi-emy9lEyDjRCDjD8gzlAbgE,2718
19
+ autoclicker/gui/preview_label.py,sha256=-EkTQOBQFkNQzd47PEbekgAURaY-XsNmGog0LK5Y-n8,6844
20
+ autoclicker/gui/qt_runner.py,sha256=BA4brSx76oCauYyOrRS-Xrqd8ZUiDFCca69BlT7ODIc,2226
21
+ autoclicker/gui/recorder.py,sha256=42ETyq5P-ubKev6DJLI7_Vq9sWO7I_EcR3-f0Z-E84I,5597
22
+ autoclicker/gui/scheduler_widget.py,sha256=Co-bFN57yae3czkg552mruiCIAS_o0LpwmJyEayrVJY,5694
23
+ autoclicker/gui/snippet_library.py,sha256=uHXe0kfOFHM6jS4DKy-rCNaoqr1syJlxSiQ8BXkiNgE,4064
24
+ autoclicker/gui/task_widget.py,sha256=vM6KOrw4C3RkkNlemIQcqeBHO7t6M5ksQMc41m72UJc,22846
25
+ pyclickerrpa-0.1.0.dist-info/METADATA,sha256=wN1vP5tCYQVQxTRstedLfFALsbNFDpwrLyitRB1jBGc,3254
26
+ pyclickerrpa-0.1.0.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
27
+ pyclickerrpa-0.1.0.dist-info/entry_points.txt,sha256=DpVqGDQGRWjNHztPPPKEYJpEiquk_z0ENzSx2RYE4Hc,107
28
+ pyclickerrpa-0.1.0.dist-info/top_level.txt,sha256=f4z06wMjJB6EHaRE44t5VT7fUsFkfeY1Qj6z0rT8__M,12
29
+ pyclickerrpa-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (83.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,5 @@
1
+ [console_scripts]
2
+ autoclicker-run = autoclicker.run:main
3
+
4
+ [gui_scripts]
5
+ autoclicker = autoclicker.app:main
@@ -0,0 +1 @@
1
+ autoclicker