ok-script 1.0.190__tar.gz → 2.0.0__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 (371) hide show
  1. ok_script-2.0.0/LICENSE.txt +73 -0
  2. ok_script-2.0.0/PKG-INFO +266 -0
  3. ok_script-1.0.190/ok_script.egg-info/PKG-INFO → ok_script-2.0.0/README.md +61 -39
  4. ok_script-2.0.0/diagnostics/qq_trace.py +101 -0
  5. {ok_script-1.0.190 → ok_script-2.0.0}/ok/__init__.py +232 -84
  6. {ok_script-1.0.190 → ok_script-2.0.0}/ok/cli.py +27 -0
  7. ok_script-2.0.0/ok/core/__init__.py +5 -0
  8. ok_script-2.0.0/ok/core/config_schema.py +120 -0
  9. ok_script-1.0.190/ok/gui/util/download.py → ok_script-2.0.0/ok/core/downloads.py +1 -1
  10. ok_script-2.0.0/ok/core/events.py +101 -0
  11. ok_script-2.0.0/ok/core/icons.py +12 -0
  12. ok_script-2.0.0/ok/core/notifications.py +9 -0
  13. ok_script-1.0.190/ok/gui/debug/Screenshot.py → ok_script-2.0.0/ok/core/screenshot.py +6 -10
  14. ok_script-2.0.0/ok/core/script_editing.py +61 -0
  15. ok_script-1.0.190/ok/gui/tasks/ScriptPackager.py → ok_script-2.0.0/ok/core/script_packager.py +64 -15
  16. ok_script-2.0.0/ok/core/script_templates.py +134 -0
  17. ok_script-1.0.190/ok/gui/StartController.py → ok_script-2.0.0/ok/core/start_controller.py +21 -7
  18. ok_script-1.0.190/ok/gui/tasks/TaskManger.py → ok_script-2.0.0/ok/core/task_manager.py +14 -19
  19. ok_script-2.0.0/ok/core/template_store.py +229 -0
  20. ok_script-1.0.190/ok/gui/i18n/GettextTranslator.py → ok_script-2.0.0/ok/core/translation.py +5 -0
  21. ok_script-2.0.0/ok/core/ui_config.py +49 -0
  22. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/DeviceManager.py +55 -5
  23. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/capture_methods/browser.py +1 -1
  24. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/capture_methods/hwnd_window.py +2 -2
  25. {ok_script-1.0.190 → ok_script-2.0.0}/ok/feature/FeatureSet.py +1 -1
  26. ok_script-2.0.0/ok/gui/__init__.py +50 -0
  27. ok_script-2.0.0/ok/gui/util/pyappify_startup.py +3 -0
  28. ok_script-2.0.0/ok/notification/__init__.py +4 -0
  29. {ok_script-1.0.190 → ok_script-2.0.0}/ok/notification/manager.py +16 -2
  30. ok_script-2.0.0/ok/notification/system.py +219 -0
  31. {ok_script-1.0.190 → ok_script-2.0.0}/ok/notification/windows_messenger.py +1 -1
  32. {ok_script-1.0.190 → ok_script-2.0.0}/ok/task/TaskExecutor.py +7 -10
  33. {ok_script-1.0.190 → ok_script-2.0.0}/ok/task/task.py +18 -8
  34. ok_script-2.0.0/ok/task/web.py +162 -0
  35. {ok_script-1.0.190 → ok_script-2.0.0}/ok/test/TaskTestCase.py +1 -1
  36. {ok_script-1.0.190 → ok_script-2.0.0}/ok/third_party/paperclip.py +4 -2
  37. ok_script-2.0.0/ok/ui/__init__.py +1 -0
  38. ok_script-2.0.0/ok/ui/overlay/__init__.py +5 -0
  39. ok_script-2.0.0/ok/ui/overlay/win32_gdi.py +708 -0
  40. ok_script-2.0.0/ok/ui/qt/Communicate.py +6 -0
  41. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/MainWindow.py +83 -48
  42. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/MessageWindow.py +2 -2
  43. ok_script-2.0.0/ok/ui/qt/StartController.py +7 -0
  44. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/about/AboutTab.py +56 -38
  45. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/about/LinksBar.py +9 -3
  46. ok_script-2.0.0/ok/ui/qt/about/ProjectCard.py +42 -0
  47. ok_script-2.0.0/ok/ui/qt/about/UpdateCard.py +329 -0
  48. ok_script-2.0.0/ok/ui/qt/about/VersionCard.py +20 -0
  49. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/common/design_system.py +1 -1
  50. ok_script-2.0.0/ok/ui/qt/common/icons.py +20 -0
  51. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/debug/DebugTab.py +3 -3
  52. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/debug/OverlayWidget.py +4 -3
  53. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/debug/RunCodeTab.py +1 -1
  54. ok_script-2.0.0/ok/ui/qt/debug/Screenshot.py +3 -0
  55. ok_script-2.0.0/ok/ui/qt/events.py +74 -0
  56. ok_script-2.0.0/ok/ui/qt/i18n/GettextTranslator.py +3 -0
  57. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/i18n/en_US.qm +0 -0
  58. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/i18n/en_US.ts +841 -0
  59. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/i18n/es_ES.qm +0 -0
  60. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/i18n/es_ES.ts +841 -0
  61. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/i18n/ja_JP.qm +0 -0
  62. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/i18n/ja_JP.ts +841 -0
  63. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/i18n/ko_KR.qm +0 -0
  64. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/i18n/ko_KR.ts +841 -0
  65. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/i18n/zh_CN.qm +0 -0
  66. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/i18n/zh_CN.ts +841 -0
  67. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/i18n/zh_TW.qm +0 -0
  68. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/i18n/zh_TW.ts +841 -0
  69. ok_script-2.0.0/ok/ui/qt/overlay/OverlayWindow.py +11 -0
  70. ok_script-2.0.0/ok/ui/qt/resources.py +19337 -0
  71. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/settings/GlobalConfigCard.py +4 -3
  72. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/settings/GlobalConfigTab.py +2 -2
  73. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/settings/SettingTab.py +3 -3
  74. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/start/StartCard.py +2 -2
  75. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/start/StartTab.py +17 -22
  76. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/ConfigCard.py +5 -4
  77. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/ConfigItemFactory.py +13 -24
  78. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/ConfigLabelAndWidget.py +1 -1
  79. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/EditTaskTab.py +24 -101
  80. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/LabelAndButtons.py +3 -2
  81. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/LabelAndDoubleSpinBox.py +2 -2
  82. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/LabelAndDropDown.py +2 -2
  83. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/LabelAndFileSelector.py +1 -1
  84. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/LabelAndGlobal.py +2 -2
  85. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/LabelAndLineEdit.py +2 -2
  86. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/LabelAndList.py +1 -1
  87. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/LabelAndMultiSelection.py +2 -2
  88. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/LabelAndSpinBox.py +2 -2
  89. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/LabelAndSwitchButton.py +1 -1
  90. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/LabelAndTextEdit.py +2 -2
  91. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/LabelAndWidget.py +1 -1
  92. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/MarkUpWindow.py +2 -2
  93. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/ModifyListDialog.py +1 -1
  94. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/ModifyListItem.py +3 -3
  95. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/OneTimeTaskTab.py +3 -3
  96. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/RecordScript.py +3 -3
  97. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/ScheduleTaskTab.py +10 -66
  98. ok_script-2.0.0/ok/ui/qt/tasks/ScriptPackager.py +3 -0
  99. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/StartButton.py +2 -2
  100. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/TaskCard.py +3 -3
  101. ok_script-2.0.0/ok/ui/qt/tasks/TaskManger.py +12 -0
  102. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/TaskTab.py +4 -4
  103. ok_script-2.0.0/ok/ui/qt/tasks/TemplateFactory.py +125 -0
  104. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/TemplateTab.py +23 -61
  105. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/TriggerTaskTab.py +3 -3
  106. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/util/Alert.py +1 -1
  107. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/util/app.py +2 -2
  108. ok_script-2.0.0/ok/ui/qt/util/download.py +3 -0
  109. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/util/pyappify_startup.py +3 -3
  110. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/BaseLoading.py +1 -1
  111. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/BaseWindow.py +1 -1
  112. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/Card.py +2 -2
  113. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/CustomTab.py +1 -1
  114. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/EmptyCard.py +1 -1
  115. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/ExpandCardLayout.py +4 -0
  116. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/ListTableWidgetItem.py +1 -1
  117. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/NumericTableWidgetItem.py +1 -1
  118. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/StatusBar.py +1 -1
  119. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/Tab.py +5 -5
  120. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/YesNonWidgetItem.py +1 -1
  121. ok_script-2.0.0/ok/ui/web/__init__.py +6 -0
  122. ok_script-2.0.0/ok/ui/web/app.py +1617 -0
  123. ok_script-2.0.0/ok/ui/web/requirements.py +13 -0
  124. ok_script-2.0.0/ok/ui/web/server.py +686 -0
  125. ok_script-2.0.0/ok/ui/web/static/app.js +11 -0
  126. ok_script-2.0.0/ok/ui/web/static/chunk-fluent.js +2 -0
  127. ok_script-2.0.0/ok/ui/web/static/chunk-react.js +9 -0
  128. ok_script-2.0.0/ok/ui/web/static/index.css +1 -0
  129. ok_script-2.0.0/ok/ui/web/static/index.html +17 -0
  130. {ok_script-1.0.190 → ok_script-2.0.0}/ok/update/inline_ok_requirements.py +23 -32
  131. {ok_script-1.0.190 → ok_script-2.0.0}/ok/util/Analytics.py +4 -2
  132. {ok_script-1.0.190 → ok_script-2.0.0}/ok/util/GlobalConfig.py +5 -6
  133. {ok_script-1.0.190 → ok_script-2.0.0}/ok/util/config.py +1 -1
  134. {ok_script-1.0.190 → ok_script-2.0.0}/ok/util/explorer.py +17 -0
  135. {ok_script-1.0.190 → ok_script-2.0.0}/ok/util/handler.py +19 -7
  136. ok_script-2.0.0/ok/util/i18n.py +26 -0
  137. {ok_script-1.0.190 → ok_script-2.0.0}/ok/util/logger.py +1 -1
  138. {ok_script-1.0.190 → ok_script-2.0.0}/ok/util/windows_schedule.py +89 -0
  139. ok_script-2.0.0/ok_script.egg-info/PKG-INFO +266 -0
  140. ok_script-2.0.0/ok_script.egg-info/SOURCES.txt +351 -0
  141. ok_script-2.0.0/ok_script.egg-info/requires.txt +42 -0
  142. ok_script-2.0.0/ok_script.egg-info/top_level.txt +6 -0
  143. ok_script-2.0.0/pyproject.toml +126 -0
  144. ok_script-2.0.0/scripts/generate_web_i18n.py +57 -0
  145. ok_script-2.0.0/setup.py +17 -0
  146. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_accent_color.py +1 -1
  147. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_blur.py +1 -1
  148. ok_script-2.0.0/tests/test_cli.py +59 -0
  149. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_config_card.py +2 -2
  150. ok_script-2.0.0/tests/test_core_events.py +33 -0
  151. ok_script-2.0.0/tests/test_core_ui_services.py +72 -0
  152. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_expand_card_layout.py +11 -1
  153. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_explorer.py +6 -0
  154. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_global_config.py +6 -6
  155. ok_script-2.0.0/tests/test_headless_imports.py +50 -0
  156. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_inline_ok_requirements.py +35 -12
  157. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_main_window_notifications.py +6 -4
  158. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_main_window_startup_tab.py +20 -1
  159. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_main_window_system_theme.py +11 -11
  160. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_missing_frame.py +15 -0
  161. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_navigation_state.py +1 -1
  162. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_notifications.py +40 -2
  163. ok_script-2.0.0/tests/test_overlay_custom_draw.py +61 -0
  164. ok_script-2.0.0/tests/test_package_metadata.py +35 -0
  165. ok_script-2.0.0/tests/test_pyappify_startup_update.py +569 -0
  166. ok_script-2.0.0/tests/test_qt_events.py +33 -0
  167. ok_script-2.0.0/tests/test_qt_legacy_imports.py +12 -0
  168. ok_script-2.0.0/tests/test_qt_page_layout.py +45 -0
  169. ok_script-2.0.0/tests/test_runtime_startup.py +181 -0
  170. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_start_controller.py +20 -2
  171. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_task_ui.py +10 -5
  172. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_template_tab.py +12 -2
  173. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_touch_scroll.py +1 -1
  174. ok_script-2.0.0/tests/test_ui_config.py +50 -0
  175. ok_script-2.0.0/tests/test_web_app.py +237 -0
  176. ok_script-2.0.0/tests/test_web_i18n.py +24 -0
  177. ok_script-2.0.0/tests/test_web_server.py +511 -0
  178. ok_script-2.0.0/tests/test_web_task_tabs.py +143 -0
  179. ok_script-2.0.0/tests/test_web_ui_pages.py +277 -0
  180. ok_script-2.0.0/tests/test_web_ui_tasks.py +183 -0
  181. ok_script-1.0.190/LICENSE.txt +0 -661
  182. ok_script-1.0.190/PKG-INFO +0 -115
  183. ok_script-1.0.190/README.md +0 -77
  184. ok_script-1.0.190/ok/gui/Communicate.py +0 -37
  185. ok_script-1.0.190/ok/gui/about/ProjectCard.py +0 -19
  186. ok_script-1.0.190/ok/gui/about/VersionCard.py +0 -33
  187. ok_script-1.0.190/ok/gui/overlay/OverlayWindow.py +0 -176
  188. ok_script-1.0.190/ok/gui/resources.py +0 -15570
  189. ok_script-1.0.190/ok/gui/tasks/TemplateFactory.py +0 -410
  190. ok_script-1.0.190/ok/notification/__init__.py +0 -3
  191. ok_script-1.0.190/ok/util/i18n.py +0 -57
  192. ok_script-1.0.190/ok_script.egg-info/SOURCES.txt +0 -299
  193. ok_script-1.0.190/ok_script.egg-info/requires.txt +0 -9
  194. ok_script-1.0.190/ok_script.egg-info/top_level.txt +0 -1
  195. ok_script-1.0.190/setup.py +0 -61
  196. ok_script-1.0.190/tests/test_cli.py +0 -28
  197. ok_script-1.0.190/tests/test_overlay_custom_draw.py +0 -122
  198. ok_script-1.0.190/tests/test_pyappify_startup_update.py +0 -202
  199. {ok_script-1.0.190 → ok_script-2.0.0}/MANIFEST.in +0 -0
  200. {ok_script-1.0.190 → ok_script-2.0.0}/ok/__main__.py +0 -0
  201. {ok_script-1.0.190 → ok_script-2.0.0}/ok/alas/__init__.py +0 -0
  202. {ok_script-1.0.190 → ok_script-2.0.0}/ok/alas/emulator_base.py +0 -0
  203. {ok_script-1.0.190 → ok_script-2.0.0}/ok/alas/emulator_windows.py +0 -0
  204. {ok_script-1.0.190 → ok_script-2.0.0}/ok/alas/platform_windows.py +0 -0
  205. {ok_script-1.0.190 → ok_script-2.0.0}/ok/alas/utils.py +0 -0
  206. {ok_script-1.0.190 → ok_script-2.0.0}/ok/capture/__init__.py +0 -0
  207. {ok_script-1.0.190 → ok_script-2.0.0}/ok/capture/adb/__init__.py +0 -0
  208. {ok_script-1.0.190 → ok_script-2.0.0}/ok/capture/adb/deep.py +0 -0
  209. {ok_script-1.0.190 → ok_script-2.0.0}/ok/capture/adb/minitouch.py +0 -0
  210. {ok_script-1.0.190 → ok_script-2.0.0}/ok/capture/adb/nemu_ipc.py +0 -0
  211. {ok_script-1.0.190 → ok_script-2.0.0}/ok/capture/adb/nemu_utils.py +0 -0
  212. {ok_script-1.0.190 → ok_script-2.0.0}/ok/capture/adb/pool.py +0 -0
  213. {ok_script-1.0.190 → ok_script-2.0.0}/ok/capture/adb/timer.py +0 -0
  214. {ok_script-1.0.190 → ok_script-2.0.0}/ok/capture/adb/util.py +0 -0
  215. {ok_script-1.0.190 → ok_script-2.0.0}/ok/capture/windows/__init__.py +0 -0
  216. {ok_script-1.0.190 → ok_script-2.0.0}/ok/capture/windows/d3d11.py +0 -0
  217. {ok_script-1.0.190 → ok_script-2.0.0}/ok/capture/windows/dump.py +0 -0
  218. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/__init__.py +0 -0
  219. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/capture.py +0 -0
  220. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/capture_methods/__init__.py +0 -0
  221. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/capture_methods/adb.py +0 -0
  222. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/capture_methods/base.py +0 -0
  223. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/capture_methods/bitblt.py +0 -0
  224. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/capture_methods/bitblt_utils.py +0 -0
  225. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/capture_methods/desktop_duplication.py +0 -0
  226. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/capture_methods/image.py +0 -0
  227. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/capture_methods/nemu_ipc.py +0 -0
  228. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/capture_methods/types.py +0 -0
  229. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/capture_methods/update.py +0 -0
  230. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/capture_methods/windows_graphics.py +0 -0
  231. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/interaction.py +0 -0
  232. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/interaction_methods/__init__.py +0 -0
  233. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/interaction_methods/adb.py +0 -0
  234. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/interaction_methods/base.py +0 -0
  235. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/interaction_methods/browser.py +0 -0
  236. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/interaction_methods/do_nothing.py +0 -0
  237. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/interaction_methods/foreground_post_message.py +0 -0
  238. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/interaction_methods/genshin.py +0 -0
  239. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/interaction_methods/keys.py +0 -0
  240. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/interaction_methods/post_message.py +0 -0
  241. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/interaction_methods/pydirect.py +0 -0
  242. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/interaction_methods/pynput.py +0 -0
  243. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/interaction_methods/swipe.py +0 -0
  244. {ok_script-1.0.190 → ok_script-2.0.0}/ok/device/intercation.py +0 -0
  245. {ok_script-1.0.190 → ok_script-2.0.0}/ok/feature/Box.py +0 -0
  246. {ok_script-1.0.190 → ok_script-2.0.0}/ok/feature/Feature.py +0 -0
  247. {ok_script-1.0.190 → ok_script-2.0.0}/ok/feature/__init__.py +0 -0
  248. {ok_script-1.0.190 → ok_script-2.0.0}/ok/notification/messenger_images.py +0 -0
  249. {ok_script-1.0.190 → ok_script-2.0.0}/ok/notification/pipeline.py +0 -0
  250. {ok_script-1.0.190 → ok_script-2.0.0}/ok/notification/ppocr.py +0 -0
  251. {ok_script-1.0.190 → ok_script-2.0.0}/ok/notification/providers.py +0 -0
  252. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ocr}/__init__.py +0 -0
  253. {ok_script-1.0.190 → ok_script-2.0.0}/ok/ocr/download_paddle_model.py +0 -0
  254. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/Windows/Foundation/Collections.py +0 -0
  255. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/Windows/Foundation/__init__.py +0 -0
  256. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/Windows/Globalization/__init__.py +0 -0
  257. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/Windows/Graphics/Capture/__init__.py +0 -0
  258. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/Windows/Graphics/DirectX/Direct3D11/__init__.py +0 -0
  259. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/Windows/Graphics/DirectX/__init__.py +0 -0
  260. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/Windows/Graphics/Imaging/__init__.py +0 -0
  261. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/Windows/Graphics/__init__.py +0 -0
  262. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/Windows/Media/Ocr/__init__.py +0 -0
  263. {ok_script-1.0.190/ok/gui/about → ok_script-2.0.0/ok/rotypes/Windows/Media}/__init__.py +0 -0
  264. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/Windows/Security/Cryptography/__init__.py +0 -0
  265. {ok_script-1.0.190/ok/gui/common → ok_script-2.0.0/ok/rotypes/Windows/Security}/__init__.py +0 -0
  266. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/Windows/Storage/Streams/__init__.py +0 -0
  267. {ok_script-1.0.190/ok/gui/debug → ok_script-2.0.0/ok/rotypes/Windows/Storage}/__init__.py +0 -0
  268. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/Windows/UI/ViewManagement/__init__.py +0 -0
  269. {ok_script-1.0.190/ok/gui/i18n → ok_script-2.0.0/ok/rotypes/Windows/UI}/__init__.py +0 -0
  270. {ok_script-1.0.190/ok/gui/overlay → ok_script-2.0.0/ok/rotypes/Windows}/__init__.py +0 -0
  271. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/__init__.py +0 -0
  272. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/delegate.py +0 -0
  273. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/export.py +0 -0
  274. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/idldsl.py +0 -0
  275. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/inspectable.py +0 -0
  276. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/roapi.py +0 -0
  277. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/types.py +0 -0
  278. {ok_script-1.0.190 → ok_script-2.0.0}/ok/rotypes/winstring.py +0 -0
  279. {ok_script-1.0.190 → ok_script-2.0.0}/ok/task/DiagnosisTask.py +0 -0
  280. {ok_script-1.0.190/ok/gui/qss → ok_script-2.0.0/ok/task}/__init__.py +0 -0
  281. {ok_script-1.0.190 → ok_script-2.0.0}/ok/task/exceptions.py +0 -0
  282. {ok_script-1.0.190 → ok_script-2.0.0}/ok/test/OKTestRunner.py +0 -0
  283. {ok_script-1.0.190 → ok_script-2.0.0}/ok/test/RunTests.py +0 -0
  284. {ok_script-1.0.190 → ok_script-2.0.0}/ok/test/__init__.py +0 -0
  285. {ok_script-1.0.190/ok/gui/settings → ok_script-2.0.0/ok/third_party}/__init__.py +0 -0
  286. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/TabTitles.py +0 -0
  287. {ok_script-1.0.190/ok/gui/start → ok_script-2.0.0/ok/ui/qt}/__init__.py +0 -0
  288. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/about/HttpTextEdit.py +0 -0
  289. {ok_script-1.0.190/ok/gui/tasks → ok_script-2.0.0/ok/ui/qt/about}/__init__.py +0 -0
  290. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/common/OKIcon.py +0 -0
  291. {ok_script-1.0.190/ok/gui/util → ok_script-2.0.0/ok/ui/qt/common}/__init__.py +0 -0
  292. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/common/accent_color.py +0 -0
  293. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/common/config.py +0 -0
  294. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/common/style_sheet.py +0 -0
  295. {ok_script-1.0.190/ok/gui/widget → ok_script-2.0.0/ok/ui/qt/debug}/__init__.py +0 -0
  296. {ok_script-1.0.190/ok/ocr → ok_script-2.0.0/ok/ui/qt/i18n}/__init__.py +0 -0
  297. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/i18n/path.py +0 -0
  298. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/i18n/update.py +0 -0
  299. {ok_script-1.0.190/ok/rotypes/Windows/Media → ok_script-2.0.0/ok/ui/qt/overlay}/__init__.py +0 -0
  300. {ok_script-1.0.190/ok/rotypes/Windows/Security → ok_script-2.0.0/ok/ui/qt/qss}/__init__.py +0 -0
  301. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/qss/dark/card.qss +0 -0
  302. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/qss/dark/discord.svg +0 -0
  303. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/qss/dark/heart.svg +0 -0
  304. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/qss/dark/message_window.qss +0 -0
  305. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/qss/dark/setting_interface.qss +0 -0
  306. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/qss/dark/status_bar.qss +0 -0
  307. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/qss/dark/stop.svg +0 -0
  308. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/qss/dark/tab.qss +0 -0
  309. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/qss/light/card.qss +0 -0
  310. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/qss/light/discord.svg +0 -0
  311. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/qss/light/heart.svg +0 -0
  312. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/qss/light/message_window.qss +0 -0
  313. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/qss/light/setting_interface.qss +0 -0
  314. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/qss/light/status_bar.qss +0 -0
  315. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/qss/light/stop.svg +0 -0
  316. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/qss/light/tab.qss +0 -0
  317. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/qt.qrc +0 -0
  318. {ok_script-1.0.190/ok/rotypes/Windows/Storage → ok_script-2.0.0/ok/ui/qt/settings}/__init__.py +0 -0
  319. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/start/LogWindow.py +0 -0
  320. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/start/SelectCaptureListView.py +0 -0
  321. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/start/SelectInteractionListView.py +0 -0
  322. {ok_script-1.0.190/ok/rotypes/Windows/UI → ok_script-2.0.0/ok/ui/qt/start}/__init__.py +0 -0
  323. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/PythonHighlighter.py +0 -0
  324. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/TaskOpButton.py +0 -0
  325. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/tasks/TooltipTableWidget.py +0 -0
  326. {ok_script-1.0.190/ok/rotypes/Windows → ok_script-2.0.0/ok/ui/qt/tasks}/__init__.py +0 -0
  327. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/util/InitWorker.py +0 -0
  328. {ok_script-1.0.190/ok/task → ok_script-2.0.0/ok/ui/qt/util}/__init__.py +0 -0
  329. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/util/pip_util.py +0 -0
  330. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/util/touch_scroll.py +0 -0
  331. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/util/windows_thumbnail.py +0 -0
  332. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/FlowLayout.py +0 -0
  333. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/FramelessDialog.py +0 -0
  334. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/ImageWidget.py +0 -0
  335. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/OkCompactSpinBox.py +0 -0
  336. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/SortingTableWidgetItem.py +0 -0
  337. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/StartLoadingDialog.py +0 -0
  338. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/TabWidget.py +0 -0
  339. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/UpdateConfigWidgetItem.py +0 -0
  340. {ok_script-1.0.190/ok/gui → ok_script-2.0.0/ok/ui/qt}/widget/WidgetWithVLabel.py +0 -0
  341. {ok_script-1.0.190/ok/third_party → ok_script-2.0.0/ok/ui/qt/widget}/__init__.py +0 -0
  342. {ok_script-1.0.190 → ok_script-2.0.0}/ok/update/__init__.py +0 -0
  343. {ok_script-1.0.190 → ok_script-2.0.0}/ok/update/copy_ok_folder.py +0 -0
  344. {ok_script-1.0.190 → ok_script-2.0.0}/ok/util/__init__.py +0 -0
  345. {ok_script-1.0.190 → ok_script-2.0.0}/ok/util/blur.py +0 -0
  346. {ok_script-1.0.190 → ok_script-2.0.0}/ok/util/clazz.py +0 -0
  347. {ok_script-1.0.190 → ok_script-2.0.0}/ok/util/collection.py +0 -0
  348. {ok_script-1.0.190 → ok_script-2.0.0}/ok/util/color.py +0 -0
  349. {ok_script-1.0.190 → ok_script-2.0.0}/ok/util/file.py +0 -0
  350. {ok_script-1.0.190 → ok_script-2.0.0}/ok/util/gpu_driver_settings.py +0 -0
  351. {ok_script-1.0.190 → ok_script-2.0.0}/ok/util/partial_sync_repo.py +0 -0
  352. {ok_script-1.0.190 → ok_script-2.0.0}/ok/util/print_hwnd.py +0 -0
  353. {ok_script-1.0.190 → ok_script-2.0.0}/ok/util/process.py +0 -0
  354. {ok_script-1.0.190 → ok_script-2.0.0}/ok/util/window.py +0 -0
  355. {ok_script-1.0.190 → ok_script-2.0.0}/ok_script.egg-info/dependency_links.txt +0 -0
  356. {ok_script-1.0.190 → ok_script-2.0.0}/ok_script.egg-info/entry_points.txt +0 -0
  357. {ok_script-1.0.190 → ok_script-2.0.0}/ok_script.egg-info/not-zip-safe +0 -0
  358. {ok_script-1.0.190 → ok_script-2.0.0}/setup.cfg +0 -0
  359. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_app.py +0 -0
  360. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_base_interaction.py +0 -0
  361. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_box.py +0 -0
  362. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_capture_update.py +0 -0
  363. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_device_manager.py +0 -0
  364. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_gpu_driver_settings.py +0 -0
  365. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_logger.py +0 -0
  366. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_nemu_ipc_capture.py +0 -0
  367. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_ok_mutex.py +0 -0
  368. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_process.py +0 -0
  369. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_task_executor_queue.py +0 -0
  370. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_translation_fallback.py +0 -0
  371. {ok_script-1.0.190 → ok_script-2.0.0}/tests/test_windows_graphics_capture.py +0 -0
@@ -0,0 +1,73 @@
1
+ ok-script License
2
+ ================
3
+
4
+ Copyright (c) 2026 ok-oldking
5
+
6
+ This project is licensed under the Apache License, Version 2.0, as modified
7
+ by the Commons Clause License Condition v1.0 and the additional terms below.
8
+ The Apache License, Version 2.0, is available at:
9
+
10
+ https://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ The Commons Clause License Condition v1.0 is available at:
13
+
14
+ https://commonsclause.com/
15
+
16
+ If there is a conflict between the Apache License 2.0 and the Commons Clause
17
+ or additional terms below, the Commons Clause and additional terms control.
18
+
19
+ Commons Clause
20
+ -------------
21
+
22
+ Without limiting the conditions of the Apache License 2.0, the grant of
23
+ rights under that license does not include the right to Sell this Software.
24
+
25
+ For this license, “Sell” means selling, lending, leasing, licensing, offering
26
+ for sale, lease, or license, or otherwise transferring this Software to a
27
+ third party for a fee or other consideration. “Sell” does not include:
28
+
29
+ * Using the Software internally, including by an organization or its
30
+ employees, without transferring it to a third party for a fee or other
31
+ consideration; or
32
+ * Distributing the Software as part of a larger application or product,
33
+ provided that the larger application or product is not primarily the
34
+ Software or a competing product.
35
+
36
+ Additional Terms
37
+ ----------------
38
+
39
+ 1. You may use this Software in closed-source and commercial projects. You
40
+ may charge for your own application, service, support, or other material
41
+ that incorporates the Software, provided that you do not sell or offer the
42
+ Software itself, or a competing product based primarily on it, as a product.
43
+
44
+ 2. You may fork the Software, make improvements, and keep the fork open
45
+ source and freely available. You may not take this project, rename it or
46
+ make only minor changes, and sell or market it as a competing product.
47
+
48
+ 3. You may not use this Software for hacking, unauthorized access, malware,
49
+ fraud, or any other illegal activity. You are responsible for complying
50
+ with all applicable laws and obtaining authorization for any security or
51
+ automation activity.
52
+
53
+ 4. Any project that uses, incorporates, or is derived from this Software
54
+ must mention ok-script and link to at least one of the following in at
55
+ least one of the project's website, GitHub repository, or the software
56
+ itself:
57
+
58
+ * Website: https://ok-script.com/
59
+ * GitHub: https://github.com/ok-oldking/ok-script
60
+
61
+ The notice must be reasonably visible and retained in modified or
62
+ redistributed versions.
63
+
64
+ 5. Use of the Qt UI, including components based on PyQt-Fluent-Widgets or
65
+ its related packages, is separately subject to the license and terms of
66
+ the upstream project:
67
+
68
+ https://github.com/zhiyiYo/PyQt-Fluent-Widgets
69
+
70
+ 6. Except for these additional terms, the Apache License 2.0 applies,
71
+ including its copyright, notice, patent, warranty, and liability
72
+ provisions. The Software is provided “AS IS”, without warranties or
73
+ conditions of any kind.
@@ -0,0 +1,266 @@
1
+ Metadata-Version: 2.4
2
+ Name: ok-script
3
+ Version: 2.0.0
4
+ Summary: Automation with Computer Vision for Python
5
+ Author-email: ok-oldking <firedcto@gmail.com>
6
+ License: ok-script License
7
+ ================
8
+
9
+ Copyright (c) 2026 ok-oldking
10
+
11
+ This project is licensed under the Apache License, Version 2.0, as modified
12
+ by the Commons Clause License Condition v1.0 and the additional terms below.
13
+ The Apache License, Version 2.0, is available at:
14
+
15
+ https://www.apache.org/licenses/LICENSE-2.0
16
+
17
+ The Commons Clause License Condition v1.0 is available at:
18
+
19
+ https://commonsclause.com/
20
+
21
+ If there is a conflict between the Apache License 2.0 and the Commons Clause
22
+ or additional terms below, the Commons Clause and additional terms control.
23
+
24
+ Commons Clause
25
+ -------------
26
+
27
+ Without limiting the conditions of the Apache License 2.0, the grant of
28
+ rights under that license does not include the right to Sell this Software.
29
+
30
+ For this license, “Sell” means selling, lending, leasing, licensing, offering
31
+ for sale, lease, or license, or otherwise transferring this Software to a
32
+ third party for a fee or other consideration. “Sell” does not include:
33
+
34
+ * Using the Software internally, including by an organization or its
35
+ employees, without transferring it to a third party for a fee or other
36
+ consideration; or
37
+ * Distributing the Software as part of a larger application or product,
38
+ provided that the larger application or product is not primarily the
39
+ Software or a competing product.
40
+
41
+ Additional Terms
42
+ ----------------
43
+
44
+ 1. You may use this Software in closed-source and commercial projects. You
45
+ may charge for your own application, service, support, or other material
46
+ that incorporates the Software, provided that you do not sell or offer the
47
+ Software itself, or a competing product based primarily on it, as a product.
48
+
49
+ 2. You may fork the Software, make improvements, and keep the fork open
50
+ source and freely available. You may not take this project, rename it or
51
+ make only minor changes, and sell or market it as a competing product.
52
+
53
+ 3. You may not use this Software for hacking, unauthorized access, malware,
54
+ fraud, or any other illegal activity. You are responsible for complying
55
+ with all applicable laws and obtaining authorization for any security or
56
+ automation activity.
57
+
58
+ 4. Any project that uses, incorporates, or is derived from this Software
59
+ must mention ok-script and link to at least one of the following in at
60
+ least one of the project's website, GitHub repository, or the software
61
+ itself:
62
+
63
+ * Website: https://ok-script.com/
64
+ * GitHub: https://github.com/ok-oldking/ok-script
65
+
66
+ The notice must be reasonably visible and retained in modified or
67
+ redistributed versions.
68
+
69
+ 5. Use of the Qt UI, including components based on PyQt-Fluent-Widgets or
70
+ its related packages, is separately subject to the license and terms of
71
+ the upstream project:
72
+
73
+ https://github.com/zhiyiYo/PyQt-Fluent-Widgets
74
+
75
+ 6. Except for these additional terms, the Apache License 2.0 applies,
76
+ including its copyright, notice, patent, warranty, and liability
77
+ provisions. The Software is provided “AS IS”, without warranties or
78
+ conditions of any kind.
79
+
80
+ Project-URL: Homepage, https://github.com/ok-oldking/ok-script
81
+ Project-URL: Repository, https://github.com/ok-oldking/ok-script
82
+ Classifier: Programming Language :: Python :: 3
83
+ Classifier: Programming Language :: Python :: 3.11
84
+ Classifier: Programming Language :: Python :: 3.12
85
+ Classifier: Programming Language :: Python :: 3.13
86
+ Classifier: Programming Language :: Python :: 3.14
87
+ Classifier: Intended Audience :: Developers
88
+ Classifier: Operating System :: Microsoft :: Windows
89
+ Requires-Python: >=3.11
90
+ Description-Content-Type: text/markdown
91
+ License-File: LICENSE.txt
92
+ Requires-Dist: pywin32>=306
93
+ Requires-Dist: pyappify>=1.0.9
94
+ Requires-Dist: typing-extensions>=4.11.0
95
+ Requires-Dist: requests>=2.32.3
96
+ Requires-Dist: psutil>=6.0.0
97
+ Requires-Dist: pydirectinput==1.0.4
98
+ Requires-Dist: pycaw==20240210
99
+ Requires-Dist: mouse==0.7.1
100
+ Requires-Dist: pynput>=1.8.1
101
+ Provides-Extra: default
102
+ Requires-Dist: numpy>=1.26.4; extra == "default"
103
+ Requires-Dist: Pillow>=10.0; extra == "default"
104
+ Requires-Dist: ok-d3dshot>=0.1.5; extra == "default"
105
+ Requires-Dist: OpenCC==1.2.0; extra == "default"
106
+ Provides-Extra: web
107
+ Requires-Dist: fastapi>=0.115.0; extra == "web"
108
+ Requires-Dist: uvicorn[standard]>=0.30.0; extra == "web"
109
+ Requires-Dist: pywebview>=5.4; extra == "web"
110
+ Provides-Extra: qt
111
+ Requires-Dist: PySide6-Essentials>=6.7.0; extra == "qt"
112
+ Requires-Dist: PySideSix-Frameless-Window>=0.3.12; extra == "qt"
113
+ Requires-Dist: darkdetect>=0.8.0; extra == "qt"
114
+ Requires-Dist: PySide6-Fluent-Widgets>=1.8.3; extra == "qt"
115
+ Provides-Extra: adb
116
+ Requires-Dist: adbutils>=2.2.1; extra == "adb"
117
+ Provides-Extra: ocr
118
+ Requires-Dist: onnxocr-ppocrv5; extra == "ocr"
119
+ Provides-Extra: dev
120
+ Requires-Dist: pytest>=8.0; extra == "dev"
121
+ Requires-Dist: mypy>=1.10; extra == "dev"
122
+ Requires-Dist: build>=1.2; extra == "dev"
123
+ Requires-Dist: twine>=5.0; extra == "dev"
124
+ Requires-Dist: setuptools>=77; extra == "dev"
125
+ Requires-Dist: wheel; extra == "dev"
126
+ Requires-Dist: get-pypi-latest-version; extra == "dev"
127
+ Requires-Dist: mkdocs-material==9.7.7; extra == "dev"
128
+ Dynamic: license-file
129
+
130
+ # ok-script
131
+
132
+ ## 无界面、桌面与 Web 模式
133
+
134
+ 自动化核心现已与 Qt 解耦。使用 `ok-script` 可无界面运行,使用
135
+ `ok-script[qt]` 启用原有桌面界面,或使用 `ok-script[web]` 启用 FastAPI
136
+ 浏览器界面;对应命令为 `ok run_task`、`ok gui` 和 `ok web`。详见
137
+ [运行时架构](docs/architecture.md)。
138
+
139
+ [简体中文](README.md) | [English](README_en.md)
140
+
141
+ [![Discord](https://img.shields.io/discord/296598043787132928?color=5865f2&label=%20Discord)](https://discord.gg/vVyCatEBgA)
142
+
143
+ 基于计算机视觉的 Python 自动化框架,面向 Windows 应用、Windows 游戏、安卓模拟器和 ADB 设备。
144
+
145
+ ok-script 提供 UI、截图与输入、设备控制、OCR、模板匹配、调试浮层、自动化测试、打包和增量更新能力。它使用 COCO 格式管理模板素材,并支持分辨率自适应与多语言界面。
146
+
147
+ ## 特性
148
+
149
+ - 纯 Python 实现,免费开源,可直接使用 pip 生态中的第三方库
150
+ - 同一套任务代码可支持 Windows 客户端、安卓模拟器和 ADB 设备
151
+ - 支持 OCR、OpenCV 模板匹配以及 YOLO 等视觉方案
152
+ - 基于 COCO 标注管理模板素材,并根据屏幕分辨率自动缩放
153
+ - 内置截图、输入、设备控制和可视化调试工具
154
+ - 支持自动化测试、GitHub Actions 构建和安装包发布
155
+ - 支持多语言国际化和在线增量更新
156
+
157
+ ## 快速安装
158
+
159
+ ok-script 支持 Python 3.11 及以上版本,推荐使用 Python 3.12。
160
+
161
+ ```powershell
162
+ python -m pip install ok-script
163
+ ```
164
+
165
+ 只安装应用所需的依赖配置。`default` 为无界面模式,Web、Qt、ADB 和 OCR
166
+ 能力分别按需安装:
167
+
168
+ ```powershell
169
+ python -m pip install "ok-script[default]"
170
+ python -m pip install "ok-script[qt]"
171
+ python -m pip install "ok-script[web]"
172
+ python -m pip install "ok-script[adb]"
173
+ python -m pip install "ok-script[ocr]"
174
+ ```
175
+
176
+ ok-script 不会自动选择 OpenCV。用户必须根据自己的应用选择版本,并且只安装
177
+ 一个变体:`opencv-python`、`opencv-contrib-python`、`opencv-python-headless`
178
+ 或 `opencv-contrib-python-headless`。
179
+
180
+ 以无界面模式开发本仓库时,同时安装 `pyproject.toml` 中的 `default` 和 `dev`
181
+ 依赖组;再根据需要添加 `--group web`、`--group qt`、`--group adb` 或
182
+ `--group ocr`:
183
+
184
+ ```powershell
185
+ python -m pip install --editable . --group default --group dev
186
+ ```
187
+
188
+ 如果要创建完整的自动化项目,建议从 [`ok-script-app`](https://github.com/ok-oldking/ok-script-app) 模板开始,而不是直接在本仓库中编写业务脚本。
189
+
190
+ ## 文档
191
+
192
+ 从[文档中心](docs/index.md)选择适合你的阅读路径:
193
+
194
+ 1. [游戏自动化入门](docs/intro_to_automation/README.md):了解截图、识别、决策和输入的基本原理
195
+ 2. [快速开始](docs/quick_start/README.md):从模板仓库创建并运行第一个项目
196
+ 3. [进阶指南](docs/after_quick_start/README.md):模板匹配、国际化、测试和发布
197
+ 4. [API 参考](docs/api_doc/README.md):`Box`、`BaseTask` 及常用任务 API
198
+
199
+ 想先体验完整工具链,也可以使用基于 ok-script 的按键精灵项目 [`ok-py`](https://github.com/ok-oldking/ok-py)。
200
+
201
+ ## 界面预览
202
+
203
+ | 任务配置 | 截图与交互 |
204
+ | --- | --- |
205
+ | ![任务配置界面](docs/ok_py/image_tasks.png) | ![截图与交互界面](docs/ok_py/image_capture.png) |
206
+
207
+ | 脚本与 API | 模板管理 |
208
+ | --- | --- |
209
+ | ![脚本与 API 界面](docs/ok_py/image_scripting.png) | ![模板管理界面](docs/ok_py/image_template.png) |
210
+
211
+ [查看界面与开发工具完整说明](docs/interface.md),包括模板识别调试浮层。
212
+
213
+ ## 使用 ok-script 的项目
214
+
215
+ - [ok-script 应用模板](https://github.com/ok-oldking/ok-script-app)
216
+ - [鸣潮](https://github.com/ok-oldking/ok-wuthering-waves)
217
+ - [原神](https://github.com/ok-oldking/ok-genshin-impact)(停止维护,后台过剧情仍可用)
218
+ - [少女前线 2](https://github.com/ok-oldking/ok-gf2)
219
+ - [崩坏:星穹铁道](https://github.com/Shasnow/ok-starrailassistant)
220
+ - [星痕共鸣](https://github.com/Sanheiii/ok-star-resonance)
221
+ - [二重螺旋](https://github.com/BnanZ0/ok-duet-night-abyss)
222
+ - [卡厄思梦境](https://github.com/baoxin1100/ok-kes)
223
+ - [阴阳师](https://github.com/YunLiuZ/ok-Onmyoji)
224
+ - [白荆回廊](https://github.com/ok-oldking/ok-baijing)(停止维护)
225
+ - [明日方舟:终末地](https://github.com/AliceJump/ok-end-field)
226
+ - [异环](https://github.com/BnanZ0/ok-nte)
227
+
228
+ ## 社区与发布
229
+
230
+ - 开发者 QQ 群:938132715
231
+ - [PyPI](https://pypi.org/project/ok-script/)
232
+ - [GitHub](https://github.com/ok-oldking/ok-script)
233
+
234
+ ## 致谢
235
+
236
+ ok-script 的开发离不开以下开源项目:
237
+
238
+ - [PyAppify](https://github.com/ok-oldking/pyappify):用于应用更新和打包。
239
+ - [OnnxOCR](https://github.com/ok-oldking/OnnxOCR):提供支持 Intel NPU 的 OCR,
240
+ 支持通过 OpenVINO 或 ONNX Runtime 推理,并使用 PaddleOCR v5 模型。
241
+ - [PySide6](https://wiki.qt.io/Qt_for_Python):提供基于 Qt 的桌面界面绑定。
242
+ - [PyQt-Fluent-Widgets](https://github.com/zhiyiYo/PyQt-Fluent-Widgets):Qt
243
+ 界面使用的 Fluent UI 组件。
244
+ - [OpenCV](https://opencv.org/)、[NumPy](https://numpy.org/) 和
245
+ [Pillow](https://python-pillow.org/):用于图像处理和计算机视觉。
246
+ - [FastAPI](https://fastapi.tiangolo.com/)、[Uvicorn](https://www.uvicorn.org/)
247
+ 和 [pywebview](https://pywebview.flowrl.com/):用于 Web 界面支持。
248
+ - [adbutils](https://github.com/openatx/adbutils):用于 Android 设备连接。
249
+
250
+ 上述依赖均受其各自许可证约束,详情请参阅对应项目页面。
251
+
252
+ ## 许可证
253
+
254
+ 本项目采用 [Apache License 2.0 + Commons Clause 及附加条款](LICENSE.txt)。
255
+
256
+ 允许的使用方式:
257
+
258
+ - 可用于闭源项目或商业项目。
259
+ - 可以 fork、本项目改进,并保持 fork 开源且免费。
260
+
261
+ 限制:
262
+
263
+ - 禁止直接出售本项目,或仅改名、稍作修改后将其作为竞争产品出售或推广。
264
+ - 禁止将本项目用于黑客攻击、未授权访问、恶意软件、欺诈或其他违法活动。
265
+ - 任何使用 ok-script 的项目,都必须在项目网站、GitHub 或软件本身至少一处提及并链接 [ok-script.com](https://ok-script.com/) 或 [ok-script GitHub](https://github.com/ok-oldking/ok-script)。
266
+ - Qt UI 的使用还必须遵守 [PyQt-Fluent-Widgets](https://github.com/zhiyiYo/PyQt-Fluent-Widgets) 的许可证。
@@ -1,43 +1,12 @@
1
- Metadata-Version: 2.4
2
- Name: ok-script
3
- Version: 1.0.190
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
8
- Classifier: Programming Language :: Python :: 3
9
- Classifier: Programming Language :: Python :: 3.11
10
- Classifier: Programming Language :: Python :: 3.12
11
- Classifier: Programming Language :: Python :: 3.13
12
- Classifier: Programming Language :: Python :: 3.14
13
- Classifier: Intended Audience :: Developers
14
- Classifier: License :: OSI Approved :: MIT License
15
- Classifier: Operating System :: Microsoft :: Windows
16
- Requires-Python: >=3.11
17
- Description-Content-Type: text/markdown
18
- License-File: LICENSE.txt
19
- Requires-Dist: pywin32>=306
20
- Requires-Dist: pyappify>=1.0.6
21
- Requires-Dist: PySide6-Fluent-Widgets>=1.8.3
22
- Requires-Dist: typing-extensions>=4.11.0
23
- Requires-Dist: requests>=2.32.3
24
- Requires-Dist: psutil>=6.0.0
25
- Requires-Dist: pydirectinput==1.0.4
26
- Requires-Dist: pycaw==20240210
27
- 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
34
- Dynamic: license-file
35
- Dynamic: requires-dist
36
- Dynamic: requires-python
37
- Dynamic: summary
38
-
39
1
  # ok-script
40
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
+
41
10
  [简体中文](README.md) | [English](README_en.md)
42
11
 
43
12
  [![Discord](https://img.shields.io/discord/296598043787132928?color=5865f2&label=%20Discord)](https://discord.gg/vVyCatEBgA)
@@ -64,6 +33,29 @@ ok-script 支持 Python 3.11 及以上版本,推荐使用 Python 3.12。
64
33
  python -m pip install ok-script
65
34
  ```
66
35
 
36
+ 只安装应用所需的依赖配置。`default` 为无界面模式,Web、Qt、ADB 和 OCR
37
+ 能力分别按需安装:
38
+
39
+ ```powershell
40
+ python -m pip install "ok-script[default]"
41
+ python -m pip install "ok-script[qt]"
42
+ python -m pip install "ok-script[web]"
43
+ python -m pip install "ok-script[adb]"
44
+ python -m pip install "ok-script[ocr]"
45
+ ```
46
+
47
+ ok-script 不会自动选择 OpenCV。用户必须根据自己的应用选择版本,并且只安装
48
+ 一个变体:`opencv-python`、`opencv-contrib-python`、`opencv-python-headless`
49
+ 或 `opencv-contrib-python-headless`。
50
+
51
+ 以无界面模式开发本仓库时,同时安装 `pyproject.toml` 中的 `default` 和 `dev`
52
+ 依赖组;再根据需要添加 `--group web`、`--group qt`、`--group adb` 或
53
+ `--group ocr`:
54
+
55
+ ```powershell
56
+ python -m pip install --editable . --group default --group dev
57
+ ```
58
+
67
59
  如果要创建完整的自动化项目,建议从 [`ok-script-app`](https://github.com/ok-oldking/ok-script-app) 模板开始,而不是直接在本仓库中编写业务脚本。
68
60
 
69
61
  ## 文档
@@ -110,6 +102,36 @@ python -m pip install ok-script
110
102
  - [PyPI](https://pypi.org/project/ok-script/)
111
103
  - [GitHub](https://github.com/ok-oldking/ok-script)
112
104
 
105
+ ## 致谢
106
+
107
+ ok-script 的开发离不开以下开源项目:
108
+
109
+ - [PyAppify](https://github.com/ok-oldking/pyappify):用于应用更新和打包。
110
+ - [OnnxOCR](https://github.com/ok-oldking/OnnxOCR):提供支持 Intel NPU 的 OCR,
111
+ 支持通过 OpenVINO 或 ONNX Runtime 推理,并使用 PaddleOCR v5 模型。
112
+ - [PySide6](https://wiki.qt.io/Qt_for_Python):提供基于 Qt 的桌面界面绑定。
113
+ - [PyQt-Fluent-Widgets](https://github.com/zhiyiYo/PyQt-Fluent-Widgets):Qt
114
+ 界面使用的 Fluent UI 组件。
115
+ - [OpenCV](https://opencv.org/)、[NumPy](https://numpy.org/) 和
116
+ [Pillow](https://python-pillow.org/):用于图像处理和计算机视觉。
117
+ - [FastAPI](https://fastapi.tiangolo.com/)、[Uvicorn](https://www.uvicorn.org/)
118
+ 和 [pywebview](https://pywebview.flowrl.com/):用于 Web 界面支持。
119
+ - [adbutils](https://github.com/openatx/adbutils):用于 Android 设备连接。
120
+
121
+ 上述依赖均受其各自许可证约束,详情请参阅对应项目页面。
122
+
113
123
  ## 许可证
114
124
 
115
- 本项目采用 [AGPL-3.0 许可证](LICENSE.txt)。
125
+ 本项目采用 [Apache License 2.0 + Commons Clause 及附加条款](LICENSE.txt)。
126
+
127
+ 允许的使用方式:
128
+
129
+ - 可用于闭源项目或商业项目。
130
+ - 可以 fork、本项目改进,并保持 fork 开源且免费。
131
+
132
+ 限制:
133
+
134
+ - 禁止直接出售本项目,或仅改名、稍作修改后将其作为竞争产品出售或推广。
135
+ - 禁止将本项目用于黑客攻击、未授权访问、恶意软件、欺诈或其他违法活动。
136
+ - 任何使用 ok-script 的项目,都必须在项目网站、GitHub 或软件本身至少一处提及并链接 [ok-script.com](https://ok-script.com/) 或 [ok-script GitHub](https://github.com/ok-oldking/ok-script)。
137
+ - Qt UI 的使用还必须遵守 [PyQt-Fluent-Widgets](https://github.com/zhiyiYo/PyQt-Fluent-Widgets) 的许可证。
@@ -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())