ok-script 1.0.190__tar.gz → 2.0.0b2__tar.gz

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.
Files changed (360) hide show
  1. {ok_script-1.0.190/ok_script.egg-info → ok_script-2.0.0b2}/PKG-INFO +31 -15
  2. {ok_script-1.0.190 → ok_script-2.0.0b2}/README.md +20 -0
  3. ok_script-2.0.0b2/diagnostics/qq_trace.py +101 -0
  4. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/__init__.py +223 -83
  5. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/cli.py +27 -0
  6. ok_script-2.0.0b2/ok/core/__init__.py +5 -0
  7. ok_script-2.0.0b2/ok/core/config_schema.py +120 -0
  8. ok_script-1.0.190/ok/gui/util/download.py → ok_script-2.0.0b2/ok/core/downloads.py +1 -1
  9. ok_script-2.0.0b2/ok/core/events.py +101 -0
  10. ok_script-2.0.0b2/ok/core/icons.py +12 -0
  11. ok_script-2.0.0b2/ok/core/notifications.py +9 -0
  12. ok_script-1.0.190/ok/gui/debug/Screenshot.py → ok_script-2.0.0b2/ok/core/screenshot.py +6 -10
  13. ok_script-2.0.0b2/ok/core/script_editing.py +61 -0
  14. ok_script-1.0.190/ok/gui/tasks/ScriptPackager.py → ok_script-2.0.0b2/ok/core/script_packager.py +64 -15
  15. ok_script-2.0.0b2/ok/core/script_templates.py +134 -0
  16. ok_script-1.0.190/ok/gui/StartController.py → ok_script-2.0.0b2/ok/core/start_controller.py +21 -7
  17. ok_script-1.0.190/ok/gui/tasks/TaskManger.py → ok_script-2.0.0b2/ok/core/task_manager.py +14 -19
  18. ok_script-2.0.0b2/ok/core/template_store.py +229 -0
  19. ok_script-1.0.190/ok/gui/i18n/GettextTranslator.py → ok_script-2.0.0b2/ok/core/translation.py +5 -0
  20. ok_script-2.0.0b2/ok/core/ui_config.py +49 -0
  21. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/DeviceManager.py +55 -5
  22. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/browser.py +1 -1
  23. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/hwnd_window.py +2 -2
  24. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/feature/FeatureSet.py +1 -1
  25. ok_script-2.0.0b2/ok/gui/__init__.py +50 -0
  26. ok_script-2.0.0b2/ok/gui/util/pyappify_startup.py +3 -0
  27. ok_script-2.0.0b2/ok/notification/__init__.py +4 -0
  28. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/notification/manager.py +16 -2
  29. ok_script-2.0.0b2/ok/notification/system.py +219 -0
  30. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/notification/windows_messenger.py +1 -1
  31. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/task/TaskExecutor.py +7 -10
  32. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/task/task.py +18 -8
  33. ok_script-2.0.0b2/ok/task/web.py +162 -0
  34. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/test/TaskTestCase.py +1 -1
  35. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/third_party/paperclip.py +4 -2
  36. ok_script-2.0.0b2/ok/ui/__init__.py +1 -0
  37. ok_script-2.0.0b2/ok/ui/overlay/__init__.py +5 -0
  38. ok_script-2.0.0b2/ok/ui/overlay/win32_gdi.py +708 -0
  39. ok_script-2.0.0b2/ok/ui/qt/Communicate.py +6 -0
  40. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/MainWindow.py +37 -42
  41. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/MessageWindow.py +2 -2
  42. ok_script-2.0.0b2/ok/ui/qt/StartController.py +7 -0
  43. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/about/AboutTab.py +5 -5
  44. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/about/LinksBar.py +3 -3
  45. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/about/VersionCard.py +1 -1
  46. ok_script-2.0.0b2/ok/ui/qt/common/icons.py +20 -0
  47. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/debug/DebugTab.py +3 -3
  48. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/debug/OverlayWidget.py +4 -3
  49. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/debug/RunCodeTab.py +1 -1
  50. ok_script-2.0.0b2/ok/ui/qt/debug/Screenshot.py +3 -0
  51. ok_script-2.0.0b2/ok/ui/qt/events.py +74 -0
  52. ok_script-2.0.0b2/ok/ui/qt/i18n/GettextTranslator.py +3 -0
  53. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/en_US.ts +667 -0
  54. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/es_ES.ts +667 -0
  55. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/ja_JP.ts +667 -0
  56. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/ko_KR.ts +667 -0
  57. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/zh_CN.ts +667 -0
  58. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/zh_TW.ts +667 -0
  59. ok_script-2.0.0b2/ok/ui/qt/overlay/OverlayWindow.py +11 -0
  60. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/settings/GlobalConfigCard.py +4 -3
  61. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/settings/GlobalConfigTab.py +2 -2
  62. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/settings/SettingTab.py +3 -3
  63. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/start/StartCard.py +2 -2
  64. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/start/StartTab.py +17 -22
  65. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/ConfigCard.py +5 -4
  66. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/ConfigItemFactory.py +13 -24
  67. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/ConfigLabelAndWidget.py +1 -1
  68. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/EditTaskTab.py +22 -101
  69. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndButtons.py +3 -2
  70. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndDoubleSpinBox.py +2 -2
  71. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndDropDown.py +2 -2
  72. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndFileSelector.py +1 -1
  73. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndGlobal.py +2 -2
  74. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndLineEdit.py +2 -2
  75. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndList.py +1 -1
  76. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndMultiSelection.py +2 -2
  77. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndSpinBox.py +2 -2
  78. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndSwitchButton.py +1 -1
  79. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndTextEdit.py +2 -2
  80. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndWidget.py +1 -1
  81. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/MarkUpWindow.py +2 -2
  82. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/ModifyListDialog.py +1 -1
  83. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/ModifyListItem.py +3 -3
  84. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/OneTimeTaskTab.py +3 -3
  85. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/RecordScript.py +3 -3
  86. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/ScheduleTaskTab.py +10 -66
  87. ok_script-2.0.0b2/ok/ui/qt/tasks/ScriptPackager.py +3 -0
  88. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/StartButton.py +2 -2
  89. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/TaskCard.py +3 -3
  90. ok_script-2.0.0b2/ok/ui/qt/tasks/TaskManger.py +12 -0
  91. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/TaskTab.py +4 -4
  92. ok_script-2.0.0b2/ok/ui/qt/tasks/TemplateFactory.py +125 -0
  93. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/TemplateTab.py +21 -59
  94. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/TriggerTaskTab.py +3 -3
  95. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/util/Alert.py +1 -1
  96. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/util/app.py +2 -2
  97. ok_script-2.0.0b2/ok/ui/qt/util/download.py +3 -0
  98. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/util/pyappify_startup.py +3 -3
  99. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/BaseLoading.py +1 -1
  100. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/BaseWindow.py +1 -1
  101. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/Card.py +2 -2
  102. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/CustomTab.py +1 -1
  103. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/EmptyCard.py +1 -1
  104. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/ListTableWidgetItem.py +1 -1
  105. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/NumericTableWidgetItem.py +1 -1
  106. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/StatusBar.py +1 -1
  107. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/Tab.py +5 -5
  108. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/YesNonWidgetItem.py +1 -1
  109. ok_script-2.0.0b2/ok/ui/web/__init__.py +6 -0
  110. ok_script-2.0.0b2/ok/ui/web/app.py +1501 -0
  111. ok_script-2.0.0b2/ok/ui/web/server.py +690 -0
  112. ok_script-2.0.0b2/ok/ui/web/static/app.js +11 -0
  113. ok_script-2.0.0b2/ok/ui/web/static/chunk-fluent.js +2 -0
  114. ok_script-2.0.0b2/ok/ui/web/static/chunk-react.js +9 -0
  115. ok_script-2.0.0b2/ok/ui/web/static/index.css +1 -0
  116. ok_script-2.0.0b2/ok/ui/web/static/index.html +17 -0
  117. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/Analytics.py +4 -2
  118. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/GlobalConfig.py +5 -6
  119. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/config.py +1 -1
  120. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/explorer.py +17 -0
  121. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/handler.py +19 -7
  122. ok_script-2.0.0b2/ok/util/i18n.py +26 -0
  123. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/logger.py +1 -1
  124. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/windows_schedule.py +89 -0
  125. {ok_script-1.0.190 → ok_script-2.0.0b2/ok_script.egg-info}/PKG-INFO +31 -15
  126. ok_script-2.0.0b2/ok_script.egg-info/SOURCES.txt +348 -0
  127. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok_script.egg-info/requires.txt +9 -1
  128. ok_script-2.0.0b2/ok_script.egg-info/top_level.txt +6 -0
  129. ok_script-2.0.0b2/pyproject.toml +97 -0
  130. ok_script-2.0.0b2/scripts/generate_web_i18n.py +57 -0
  131. ok_script-2.0.0b2/setup.py +17 -0
  132. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_accent_color.py +1 -1
  133. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_blur.py +1 -1
  134. ok_script-2.0.0b2/tests/test_cli.py +59 -0
  135. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_config_card.py +2 -2
  136. ok_script-2.0.0b2/tests/test_core_events.py +33 -0
  137. ok_script-2.0.0b2/tests/test_core_ui_services.py +72 -0
  138. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_expand_card_layout.py +1 -1
  139. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_explorer.py +6 -0
  140. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_global_config.py +6 -6
  141. ok_script-2.0.0b2/tests/test_headless_imports.py +50 -0
  142. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_main_window_notifications.py +6 -4
  143. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_main_window_startup_tab.py +1 -1
  144. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_main_window_system_theme.py +11 -11
  145. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_missing_frame.py +15 -0
  146. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_navigation_state.py +1 -1
  147. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_notifications.py +40 -2
  148. ok_script-2.0.0b2/tests/test_overlay_custom_draw.py +61 -0
  149. ok_script-2.0.0b2/tests/test_package_metadata.py +27 -0
  150. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_pyappify_startup_update.py +3 -3
  151. ok_script-2.0.0b2/tests/test_qt_events.py +33 -0
  152. ok_script-2.0.0b2/tests/test_qt_legacy_imports.py +12 -0
  153. ok_script-2.0.0b2/tests/test_runtime_startup.py +148 -0
  154. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_start_controller.py +20 -2
  155. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_task_ui.py +5 -5
  156. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_template_tab.py +2 -2
  157. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_touch_scroll.py +1 -1
  158. ok_script-2.0.0b2/tests/test_ui_config.py +50 -0
  159. ok_script-2.0.0b2/tests/test_web_app.py +228 -0
  160. ok_script-2.0.0b2/tests/test_web_i18n.py +24 -0
  161. ok_script-2.0.0b2/tests/test_web_server.py +511 -0
  162. ok_script-2.0.0b2/tests/test_web_task_tabs.py +143 -0
  163. ok_script-2.0.0b2/tests/test_web_ui_pages.py +224 -0
  164. ok_script-2.0.0b2/tests/test_web_ui_tasks.py +183 -0
  165. ok_script-1.0.190/ok/gui/Communicate.py +0 -37
  166. ok_script-1.0.190/ok/gui/overlay/OverlayWindow.py +0 -176
  167. ok_script-1.0.190/ok/gui/tasks/TemplateFactory.py +0 -410
  168. ok_script-1.0.190/ok/notification/__init__.py +0 -3
  169. ok_script-1.0.190/ok/util/i18n.py +0 -57
  170. ok_script-1.0.190/ok_script.egg-info/SOURCES.txt +0 -299
  171. ok_script-1.0.190/ok_script.egg-info/top_level.txt +0 -1
  172. ok_script-1.0.190/setup.py +0 -61
  173. ok_script-1.0.190/tests/test_cli.py +0 -28
  174. ok_script-1.0.190/tests/test_overlay_custom_draw.py +0 -122
  175. {ok_script-1.0.190 → ok_script-2.0.0b2}/LICENSE.txt +0 -0
  176. {ok_script-1.0.190 → ok_script-2.0.0b2}/MANIFEST.in +0 -0
  177. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/__main__.py +0 -0
  178. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/alas/__init__.py +0 -0
  179. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/alas/emulator_base.py +0 -0
  180. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/alas/emulator_windows.py +0 -0
  181. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/alas/platform_windows.py +0 -0
  182. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/alas/utils.py +0 -0
  183. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/__init__.py +0 -0
  184. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/adb/__init__.py +0 -0
  185. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/adb/deep.py +0 -0
  186. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/adb/minitouch.py +0 -0
  187. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/adb/nemu_ipc.py +0 -0
  188. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/adb/nemu_utils.py +0 -0
  189. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/adb/pool.py +0 -0
  190. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/adb/timer.py +0 -0
  191. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/adb/util.py +0 -0
  192. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/windows/__init__.py +0 -0
  193. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/windows/d3d11.py +0 -0
  194. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/windows/dump.py +0 -0
  195. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/__init__.py +0 -0
  196. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture.py +0 -0
  197. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/__init__.py +0 -0
  198. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/adb.py +0 -0
  199. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/base.py +0 -0
  200. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/bitblt.py +0 -0
  201. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/bitblt_utils.py +0 -0
  202. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/desktop_duplication.py +0 -0
  203. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/image.py +0 -0
  204. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/nemu_ipc.py +0 -0
  205. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/types.py +0 -0
  206. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/update.py +0 -0
  207. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/windows_graphics.py +0 -0
  208. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction.py +0 -0
  209. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/__init__.py +0 -0
  210. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/adb.py +0 -0
  211. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/base.py +0 -0
  212. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/browser.py +0 -0
  213. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/do_nothing.py +0 -0
  214. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/foreground_post_message.py +0 -0
  215. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/genshin.py +0 -0
  216. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/keys.py +0 -0
  217. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/post_message.py +0 -0
  218. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/pydirect.py +0 -0
  219. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/pynput.py +0 -0
  220. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/swipe.py +0 -0
  221. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/intercation.py +0 -0
  222. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/feature/Box.py +0 -0
  223. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/feature/Feature.py +0 -0
  224. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/feature/__init__.py +0 -0
  225. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/notification/messenger_images.py +0 -0
  226. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/notification/pipeline.py +0 -0
  227. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/notification/ppocr.py +0 -0
  228. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/notification/providers.py +0 -0
  229. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ocr}/__init__.py +0 -0
  230. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/ocr/download_paddle_model.py +0 -0
  231. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Foundation/Collections.py +0 -0
  232. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Foundation/__init__.py +0 -0
  233. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Globalization/__init__.py +0 -0
  234. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Graphics/Capture/__init__.py +0 -0
  235. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Graphics/DirectX/Direct3D11/__init__.py +0 -0
  236. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Graphics/DirectX/__init__.py +0 -0
  237. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Graphics/Imaging/__init__.py +0 -0
  238. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Graphics/__init__.py +0 -0
  239. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Media/Ocr/__init__.py +0 -0
  240. {ok_script-1.0.190/ok/gui/about → ok_script-2.0.0b2/ok/rotypes/Windows/Media}/__init__.py +0 -0
  241. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Security/Cryptography/__init__.py +0 -0
  242. {ok_script-1.0.190/ok/gui/common → ok_script-2.0.0b2/ok/rotypes/Windows/Security}/__init__.py +0 -0
  243. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Storage/Streams/__init__.py +0 -0
  244. {ok_script-1.0.190/ok/gui/debug → ok_script-2.0.0b2/ok/rotypes/Windows/Storage}/__init__.py +0 -0
  245. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/UI/ViewManagement/__init__.py +0 -0
  246. {ok_script-1.0.190/ok/gui/i18n → ok_script-2.0.0b2/ok/rotypes/Windows/UI}/__init__.py +0 -0
  247. {ok_script-1.0.190/ok/gui/overlay → ok_script-2.0.0b2/ok/rotypes/Windows}/__init__.py +0 -0
  248. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/__init__.py +0 -0
  249. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/delegate.py +0 -0
  250. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/export.py +0 -0
  251. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/idldsl.py +0 -0
  252. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/inspectable.py +0 -0
  253. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/roapi.py +0 -0
  254. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/types.py +0 -0
  255. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/winstring.py +0 -0
  256. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/task/DiagnosisTask.py +0 -0
  257. {ok_script-1.0.190/ok/gui/qss → ok_script-2.0.0b2/ok/task}/__init__.py +0 -0
  258. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/task/exceptions.py +0 -0
  259. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/test/OKTestRunner.py +0 -0
  260. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/test/RunTests.py +0 -0
  261. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/test/__init__.py +0 -0
  262. {ok_script-1.0.190/ok/gui/settings → ok_script-2.0.0b2/ok/third_party}/__init__.py +0 -0
  263. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/TabTitles.py +0 -0
  264. {ok_script-1.0.190/ok/gui/start → ok_script-2.0.0b2/ok/ui/qt}/__init__.py +0 -0
  265. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/about/HttpTextEdit.py +0 -0
  266. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/about/ProjectCard.py +0 -0
  267. {ok_script-1.0.190/ok/gui/tasks → ok_script-2.0.0b2/ok/ui/qt/about}/__init__.py +0 -0
  268. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/common/OKIcon.py +0 -0
  269. {ok_script-1.0.190/ok/gui/util → ok_script-2.0.0b2/ok/ui/qt/common}/__init__.py +0 -0
  270. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/common/accent_color.py +0 -0
  271. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/common/config.py +0 -0
  272. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/common/design_system.py +0 -0
  273. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/common/style_sheet.py +0 -0
  274. {ok_script-1.0.190/ok/gui/widget → ok_script-2.0.0b2/ok/ui/qt/debug}/__init__.py +0 -0
  275. {ok_script-1.0.190/ok/ocr → ok_script-2.0.0b2/ok/ui/qt/i18n}/__init__.py +0 -0
  276. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/en_US.qm +0 -0
  277. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/es_ES.qm +0 -0
  278. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/ja_JP.qm +0 -0
  279. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/ko_KR.qm +0 -0
  280. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/path.py +0 -0
  281. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/update.py +0 -0
  282. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/zh_CN.qm +0 -0
  283. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/zh_TW.qm +0 -0
  284. {ok_script-1.0.190/ok/rotypes/Windows/Media → ok_script-2.0.0b2/ok/ui/qt/overlay}/__init__.py +0 -0
  285. {ok_script-1.0.190/ok/rotypes/Windows/Security → ok_script-2.0.0b2/ok/ui/qt/qss}/__init__.py +0 -0
  286. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/dark/card.qss +0 -0
  287. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/dark/discord.svg +0 -0
  288. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/dark/heart.svg +0 -0
  289. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/dark/message_window.qss +0 -0
  290. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/dark/setting_interface.qss +0 -0
  291. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/dark/status_bar.qss +0 -0
  292. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/dark/stop.svg +0 -0
  293. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/dark/tab.qss +0 -0
  294. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/light/card.qss +0 -0
  295. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/light/discord.svg +0 -0
  296. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/light/heart.svg +0 -0
  297. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/light/message_window.qss +0 -0
  298. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/light/setting_interface.qss +0 -0
  299. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/light/status_bar.qss +0 -0
  300. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/light/stop.svg +0 -0
  301. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/light/tab.qss +0 -0
  302. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qt.qrc +0 -0
  303. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/resources.py +0 -0
  304. {ok_script-1.0.190/ok/rotypes/Windows/Storage → ok_script-2.0.0b2/ok/ui/qt/settings}/__init__.py +0 -0
  305. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/start/LogWindow.py +0 -0
  306. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/start/SelectCaptureListView.py +0 -0
  307. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/start/SelectInteractionListView.py +0 -0
  308. {ok_script-1.0.190/ok/rotypes/Windows/UI → ok_script-2.0.0b2/ok/ui/qt/start}/__init__.py +0 -0
  309. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/PythonHighlighter.py +0 -0
  310. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/TaskOpButton.py +0 -0
  311. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/TooltipTableWidget.py +0 -0
  312. {ok_script-1.0.190/ok/rotypes/Windows → ok_script-2.0.0b2/ok/ui/qt/tasks}/__init__.py +0 -0
  313. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/util/InitWorker.py +0 -0
  314. {ok_script-1.0.190/ok/task → ok_script-2.0.0b2/ok/ui/qt/util}/__init__.py +0 -0
  315. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/util/pip_util.py +0 -0
  316. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/util/touch_scroll.py +0 -0
  317. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/util/windows_thumbnail.py +0 -0
  318. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/ExpandCardLayout.py +0 -0
  319. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/FlowLayout.py +0 -0
  320. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/FramelessDialog.py +0 -0
  321. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/ImageWidget.py +0 -0
  322. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/OkCompactSpinBox.py +0 -0
  323. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/SortingTableWidgetItem.py +0 -0
  324. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/StartLoadingDialog.py +0 -0
  325. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/TabWidget.py +0 -0
  326. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/UpdateConfigWidgetItem.py +0 -0
  327. {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/WidgetWithVLabel.py +0 -0
  328. {ok_script-1.0.190/ok/third_party → ok_script-2.0.0b2/ok/ui/qt/widget}/__init__.py +0 -0
  329. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/update/__init__.py +0 -0
  330. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/update/copy_ok_folder.py +0 -0
  331. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/update/inline_ok_requirements.py +0 -0
  332. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/__init__.py +0 -0
  333. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/blur.py +0 -0
  334. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/clazz.py +0 -0
  335. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/collection.py +0 -0
  336. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/color.py +0 -0
  337. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/file.py +0 -0
  338. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/gpu_driver_settings.py +0 -0
  339. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/partial_sync_repo.py +0 -0
  340. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/print_hwnd.py +0 -0
  341. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/process.py +0 -0
  342. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/window.py +0 -0
  343. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok_script.egg-info/dependency_links.txt +0 -0
  344. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok_script.egg-info/entry_points.txt +0 -0
  345. {ok_script-1.0.190 → ok_script-2.0.0b2}/ok_script.egg-info/not-zip-safe +0 -0
  346. {ok_script-1.0.190 → ok_script-2.0.0b2}/setup.cfg +0 -0
  347. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_app.py +0 -0
  348. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_base_interaction.py +0 -0
  349. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_box.py +0 -0
  350. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_capture_update.py +0 -0
  351. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_device_manager.py +0 -0
  352. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_gpu_driver_settings.py +0 -0
  353. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_inline_ok_requirements.py +0 -0
  354. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_logger.py +0 -0
  355. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_nemu_ipc_capture.py +0 -0
  356. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_ok_mutex.py +0 -0
  357. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_process.py +0 -0
  358. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_task_executor_queue.py +0 -0
  359. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_translation_fallback.py +0 -0
  360. {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_windows_graphics_capture.py +0 -0
@@ -1,43 +1,46 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ok-script
3
- Version: 1.0.190
3
+ Version: 2.0.0b2
4
4
  Summary: Automation with Computer Vision for Python
5
- Home-page: https://github.com/ok-oldking/ok-script
6
- Author: ok-oldking
7
- Author-email: firedcto@gmail.com
5
+ Author-email: ok-oldking <firedcto@gmail.com>
6
+ Project-URL: Homepage, https://github.com/ok-oldking/ok-script
7
+ Project-URL: Repository, https://github.com/ok-oldking/ok-script
8
8
  Classifier: Programming Language :: Python :: 3
9
9
  Classifier: Programming Language :: Python :: 3.11
10
10
  Classifier: Programming Language :: Python :: 3.12
11
11
  Classifier: Programming Language :: Python :: 3.13
12
12
  Classifier: Programming Language :: Python :: 3.14
13
13
  Classifier: Intended Audience :: Developers
14
- Classifier: License :: OSI Approved :: MIT License
15
14
  Classifier: Operating System :: Microsoft :: Windows
16
15
  Requires-Python: >=3.11
17
16
  Description-Content-Type: text/markdown
18
17
  License-File: LICENSE.txt
19
18
  Requires-Dist: pywin32>=306
20
19
  Requires-Dist: pyappify>=1.0.6
21
- Requires-Dist: PySide6-Fluent-Widgets>=1.8.3
22
20
  Requires-Dist: typing-extensions>=4.11.0
23
21
  Requires-Dist: requests>=2.32.3
24
22
  Requires-Dist: psutil>=6.0.0
25
23
  Requires-Dist: pydirectinput==1.0.4
26
24
  Requires-Dist: pycaw==20240210
27
25
  Requires-Dist: mouse==0.7.1
28
- Dynamic: author
29
- Dynamic: author-email
30
- Dynamic: classifier
31
- Dynamic: description
32
- Dynamic: description-content-type
33
- Dynamic: home-page
26
+ Provides-Extra: web
27
+ Requires-Dist: fastapi>=0.115.0; extra == "web"
28
+ Requires-Dist: uvicorn[standard]>=0.30.0; extra == "web"
29
+ Requires-Dist: pywebview>=5.4; extra == "web"
30
+ Provides-Extra: qt
31
+ Requires-Dist: PySide6-Fluent-Widgets>=1.8.3; extra == "qt"
32
+ Requires-Dist: pynput>=1.8.1; extra == "qt"
34
33
  Dynamic: license-file
35
- Dynamic: requires-dist
36
- Dynamic: requires-python
37
- Dynamic: summary
38
34
 
39
35
  # ok-script
40
36
 
37
+ ## 无界面、桌面与 Web 模式
38
+
39
+ 自动化核心现已与 Qt 解耦。使用 `ok-script` 可无界面运行,使用
40
+ `ok-script[qt]` 启用原有桌面界面,或使用 `ok-script[web]` 启用 FastAPI
41
+ 浏览器界面;对应命令为 `ok run_task`、`ok gui` 和 `ok web`。详见
42
+ [运行时架构](docs/architecture.md)。
43
+
41
44
  [简体中文](README.md) | [English](README_en.md)
42
45
 
43
46
  [![Discord](https://img.shields.io/discord/296598043787132928?color=5865f2&label=%20Discord)](https://discord.gg/vVyCatEBgA)
@@ -64,6 +67,19 @@ ok-script 支持 Python 3.11 及以上版本,推荐使用 Python 3.12。
64
67
  python -m pip install ok-script
65
68
  ```
66
69
 
70
+ 按使用场景安装界面依赖:
71
+
72
+ ```powershell
73
+ python -m pip install "ok-script[qt]"
74
+ python -m pip install "ok-script[web]"
75
+ ```
76
+
77
+ 开发本仓库时,使用 `pyproject.toml` 中的 `default` 依赖组安装完整开发环境:
78
+
79
+ ```powershell
80
+ python -m pip install --editable . --group default
81
+ ```
82
+
67
83
  如果要创建完整的自动化项目,建议从 [`ok-script-app`](https://github.com/ok-oldking/ok-script-app) 模板开始,而不是直接在本仓库中编写业务脚本。
68
84
 
69
85
  ## 文档
@@ -1,5 +1,12 @@
1
1
  # ok-script
2
2
 
3
+ ## 无界面、桌面与 Web 模式
4
+
5
+ 自动化核心现已与 Qt 解耦。使用 `ok-script` 可无界面运行,使用
6
+ `ok-script[qt]` 启用原有桌面界面,或使用 `ok-script[web]` 启用 FastAPI
7
+ 浏览器界面;对应命令为 `ok run_task`、`ok gui` 和 `ok web`。详见
8
+ [运行时架构](docs/architecture.md)。
9
+
3
10
  [简体中文](README.md) | [English](README_en.md)
4
11
 
5
12
  [![Discord](https://img.shields.io/discord/296598043787132928?color=5865f2&label=%20Discord)](https://discord.gg/vVyCatEBgA)
@@ -26,6 +33,19 @@ ok-script 支持 Python 3.11 及以上版本,推荐使用 Python 3.12。
26
33
  python -m pip install ok-script
27
34
  ```
28
35
 
36
+ 按使用场景安装界面依赖:
37
+
38
+ ```powershell
39
+ python -m pip install "ok-script[qt]"
40
+ python -m pip install "ok-script[web]"
41
+ ```
42
+
43
+ 开发本仓库时,使用 `pyproject.toml` 中的 `default` 依赖组安装完整开发环境:
44
+
45
+ ```powershell
46
+ python -m pip install --editable . --group default
47
+ ```
48
+
29
49
  如果要创建完整的自动化项目,建议从 [`ok-script-app`](https://github.com/ok-oldking/ok-script-app) 模板开始,而不是直接在本仓库中编写业务脚本。
30
50
 
31
51
  ## 文档
@@ -0,0 +1,101 @@
1
+ """Trace QQ notification navigation without sending a message.
2
+
3
+ Usage: .venv\\Scripts\\python.exe diagnostics\\qq_trace.py [nickname]
4
+ """
5
+ from __future__ import annotations
6
+
7
+ import logging
8
+ import sys
9
+ import time
10
+ from pathlib import Path
11
+
12
+ import cv2
13
+ import numpy as np
14
+ from types import SimpleNamespace
15
+
16
+ sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
17
+ from ok.notification.windows_messenger import MessengerAutomation
18
+
19
+
20
+ OUT = Path(__file__).resolve().parents[1] / "logs" / "qq_trace"
21
+ OUT.mkdir(parents=True, exist_ok=True)
22
+ logging.basicConfig(
23
+ filename=OUT / "trace.log",
24
+ level=logging.INFO,
25
+ format="%(asctime)s.%(msecs)03d %(levelname)s %(message)s",
26
+ datefmt="%Y-%m-%d %H:%M:%S",
27
+ )
28
+ log = logging.getLogger("qq_trace")
29
+
30
+
31
+ def snap(automation: MessengerAutomation, hwnd: int, label: str) -> None:
32
+ try:
33
+ frame = automation._capture(hwnd)
34
+ path = OUT / f"{time.time_ns()}_{label}.png"
35
+ cv2.imwrite(str(path), frame)
36
+ log.info("screenshot label=%s path=%s shape=%s", label, path, frame.shape)
37
+ except Exception:
38
+ log.exception("screenshot_failed label=%s", label)
39
+
40
+
41
+ def main() -> int:
42
+ nickname = (sys.argv[1] if len(sys.argv) > 1 else "文件传输助手").strip()
43
+ log.info("START nickname=%r", nickname)
44
+ automation = MessengerAutomation(
45
+ ("QQ.exe",), SimpleNamespace(), window_titles=("QQ",),
46
+ dismiss_search_after_contact=True, post_activate=False,
47
+ )
48
+ hwnd = automation._find_hwnd()
49
+ log.info("find_hwnd hwnd=%s foreground=%s", hwnd, __import__("win32gui").GetForegroundWindow())
50
+ if not hwnd:
51
+ log.error("QQ window not found")
52
+ return 2
53
+ snap(automation, hwnd, "01_initial")
54
+ if not automation._wait_until_background(hwnd):
55
+ log.warning("wait_until_background returned false")
56
+ return 3
57
+ log.info("background_ready foreground=%s", __import__("win32gui").GetForegroundWindow())
58
+ snap(automation, hwnd, "02_background_ready")
59
+ search_region, contact_region, send_region = automation._layout_regions(hwnd)
60
+ log.info("layout search=%s contact=%s send=%s", search_region, contact_region, send_region)
61
+ search = automation._wait_text(hwnd, {"Search", "搜索"}, region=search_region, timeout=1.5)
62
+ log.info("search_ocr point=%s", search)
63
+ if search is None:
64
+ search = automation._search_field_point(hwnd)
65
+ log.info("search_fallback point=%s", search)
66
+ snap(automation, hwnd, "03_before_search_click")
67
+ target = automation._click(hwnd, search)
68
+ log.info("click search target=%s point=%s", target, search)
69
+ snap(automation, hwnd, "04_after_search_click")
70
+ time.sleep(1)
71
+ automation._clear_text(target)
72
+ log.info("clear search")
73
+ time.sleep(1)
74
+ automation._type_text(target, nickname)
75
+ log.info("type nickname=%r", nickname)
76
+ time.sleep(1)
77
+ snap(automation, hwnd, "05_after_typing")
78
+ contact_hwnd, contact = automation._wait_contact(hwnd, nickname, contact_region, timeout=8)
79
+ log.info("contact_result hwnd=%s point=%s", contact_hwnd, contact)
80
+ if contact is None:
81
+ log.error("contact not found")
82
+ automation._send_key(hwnd, 0x1B)
83
+ snap(automation, hwnd, "06_contact_not_found_escape")
84
+ return 4
85
+ automation._click(contact_hwnd, contact, focus=contact_hwnd == hwnd)
86
+ log.info("click contact target=%s point=%s", contact_hwnd, contact)
87
+ snap(automation, hwnd, "06_after_contact_click")
88
+ time.sleep(1)
89
+ automation._send_key(hwnd, 0x1B)
90
+ log.info("send escape to dismiss search overlay")
91
+ time.sleep(1)
92
+ snap(automation, hwnd, "07_after_escape")
93
+ send_box = automation._wait_text(hwnd, {"Send", "发送"}, region=send_region, timeout=3)
94
+ log.info("send_box=%s (dry-run; no message sent)", send_box)
95
+ snap(automation, hwnd, "08_final_dry_run")
96
+ log.info("END")
97
+ return 0
98
+
99
+
100
+ if __name__ == "__main__":
101
+ raise SystemExit(main())