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.
- {ok_script-1.0.190/ok_script.egg-info → ok_script-2.0.0b2}/PKG-INFO +31 -15
- {ok_script-1.0.190 → ok_script-2.0.0b2}/README.md +20 -0
- ok_script-2.0.0b2/diagnostics/qq_trace.py +101 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/__init__.py +223 -83
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/cli.py +27 -0
- ok_script-2.0.0b2/ok/core/__init__.py +5 -0
- ok_script-2.0.0b2/ok/core/config_schema.py +120 -0
- ok_script-1.0.190/ok/gui/util/download.py → ok_script-2.0.0b2/ok/core/downloads.py +1 -1
- ok_script-2.0.0b2/ok/core/events.py +101 -0
- ok_script-2.0.0b2/ok/core/icons.py +12 -0
- ok_script-2.0.0b2/ok/core/notifications.py +9 -0
- ok_script-1.0.190/ok/gui/debug/Screenshot.py → ok_script-2.0.0b2/ok/core/screenshot.py +6 -10
- ok_script-2.0.0b2/ok/core/script_editing.py +61 -0
- ok_script-1.0.190/ok/gui/tasks/ScriptPackager.py → ok_script-2.0.0b2/ok/core/script_packager.py +64 -15
- ok_script-2.0.0b2/ok/core/script_templates.py +134 -0
- ok_script-1.0.190/ok/gui/StartController.py → ok_script-2.0.0b2/ok/core/start_controller.py +21 -7
- ok_script-1.0.190/ok/gui/tasks/TaskManger.py → ok_script-2.0.0b2/ok/core/task_manager.py +14 -19
- ok_script-2.0.0b2/ok/core/template_store.py +229 -0
- ok_script-1.0.190/ok/gui/i18n/GettextTranslator.py → ok_script-2.0.0b2/ok/core/translation.py +5 -0
- ok_script-2.0.0b2/ok/core/ui_config.py +49 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/DeviceManager.py +55 -5
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/browser.py +1 -1
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/hwnd_window.py +2 -2
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/feature/FeatureSet.py +1 -1
- ok_script-2.0.0b2/ok/gui/__init__.py +50 -0
- ok_script-2.0.0b2/ok/gui/util/pyappify_startup.py +3 -0
- ok_script-2.0.0b2/ok/notification/__init__.py +4 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/notification/manager.py +16 -2
- ok_script-2.0.0b2/ok/notification/system.py +219 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/notification/windows_messenger.py +1 -1
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/task/TaskExecutor.py +7 -10
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/task/task.py +18 -8
- ok_script-2.0.0b2/ok/task/web.py +162 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/test/TaskTestCase.py +1 -1
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/third_party/paperclip.py +4 -2
- ok_script-2.0.0b2/ok/ui/__init__.py +1 -0
- ok_script-2.0.0b2/ok/ui/overlay/__init__.py +5 -0
- ok_script-2.0.0b2/ok/ui/overlay/win32_gdi.py +708 -0
- ok_script-2.0.0b2/ok/ui/qt/Communicate.py +6 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/MainWindow.py +37 -42
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/MessageWindow.py +2 -2
- ok_script-2.0.0b2/ok/ui/qt/StartController.py +7 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/about/AboutTab.py +5 -5
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/about/LinksBar.py +3 -3
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/about/VersionCard.py +1 -1
- ok_script-2.0.0b2/ok/ui/qt/common/icons.py +20 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/debug/DebugTab.py +3 -3
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/debug/OverlayWidget.py +4 -3
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/debug/RunCodeTab.py +1 -1
- ok_script-2.0.0b2/ok/ui/qt/debug/Screenshot.py +3 -0
- ok_script-2.0.0b2/ok/ui/qt/events.py +74 -0
- ok_script-2.0.0b2/ok/ui/qt/i18n/GettextTranslator.py +3 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/en_US.ts +667 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/es_ES.ts +667 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/ja_JP.ts +667 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/ko_KR.ts +667 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/zh_CN.ts +667 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/zh_TW.ts +667 -0
- ok_script-2.0.0b2/ok/ui/qt/overlay/OverlayWindow.py +11 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/settings/GlobalConfigCard.py +4 -3
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/settings/GlobalConfigTab.py +2 -2
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/settings/SettingTab.py +3 -3
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/start/StartCard.py +2 -2
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/start/StartTab.py +17 -22
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/ConfigCard.py +5 -4
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/ConfigItemFactory.py +13 -24
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/ConfigLabelAndWidget.py +1 -1
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/EditTaskTab.py +22 -101
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndButtons.py +3 -2
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndDoubleSpinBox.py +2 -2
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndDropDown.py +2 -2
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndFileSelector.py +1 -1
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndGlobal.py +2 -2
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndLineEdit.py +2 -2
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndList.py +1 -1
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndMultiSelection.py +2 -2
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndSpinBox.py +2 -2
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndSwitchButton.py +1 -1
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndTextEdit.py +2 -2
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/LabelAndWidget.py +1 -1
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/MarkUpWindow.py +2 -2
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/ModifyListDialog.py +1 -1
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/ModifyListItem.py +3 -3
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/OneTimeTaskTab.py +3 -3
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/RecordScript.py +3 -3
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/ScheduleTaskTab.py +10 -66
- ok_script-2.0.0b2/ok/ui/qt/tasks/ScriptPackager.py +3 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/StartButton.py +2 -2
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/TaskCard.py +3 -3
- ok_script-2.0.0b2/ok/ui/qt/tasks/TaskManger.py +12 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/TaskTab.py +4 -4
- ok_script-2.0.0b2/ok/ui/qt/tasks/TemplateFactory.py +125 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/TemplateTab.py +21 -59
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/TriggerTaskTab.py +3 -3
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/util/Alert.py +1 -1
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/util/app.py +2 -2
- ok_script-2.0.0b2/ok/ui/qt/util/download.py +3 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/util/pyappify_startup.py +3 -3
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/BaseLoading.py +1 -1
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/BaseWindow.py +1 -1
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/Card.py +2 -2
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/CustomTab.py +1 -1
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/EmptyCard.py +1 -1
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/ListTableWidgetItem.py +1 -1
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/NumericTableWidgetItem.py +1 -1
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/StatusBar.py +1 -1
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/Tab.py +5 -5
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/YesNonWidgetItem.py +1 -1
- ok_script-2.0.0b2/ok/ui/web/__init__.py +6 -0
- ok_script-2.0.0b2/ok/ui/web/app.py +1501 -0
- ok_script-2.0.0b2/ok/ui/web/server.py +690 -0
- ok_script-2.0.0b2/ok/ui/web/static/app.js +11 -0
- ok_script-2.0.0b2/ok/ui/web/static/chunk-fluent.js +2 -0
- ok_script-2.0.0b2/ok/ui/web/static/chunk-react.js +9 -0
- ok_script-2.0.0b2/ok/ui/web/static/index.css +1 -0
- ok_script-2.0.0b2/ok/ui/web/static/index.html +17 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/Analytics.py +4 -2
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/GlobalConfig.py +5 -6
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/config.py +1 -1
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/explorer.py +17 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/handler.py +19 -7
- ok_script-2.0.0b2/ok/util/i18n.py +26 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/logger.py +1 -1
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/windows_schedule.py +89 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2/ok_script.egg-info}/PKG-INFO +31 -15
- ok_script-2.0.0b2/ok_script.egg-info/SOURCES.txt +348 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok_script.egg-info/requires.txt +9 -1
- ok_script-2.0.0b2/ok_script.egg-info/top_level.txt +6 -0
- ok_script-2.0.0b2/pyproject.toml +97 -0
- ok_script-2.0.0b2/scripts/generate_web_i18n.py +57 -0
- ok_script-2.0.0b2/setup.py +17 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_accent_color.py +1 -1
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_blur.py +1 -1
- ok_script-2.0.0b2/tests/test_cli.py +59 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_config_card.py +2 -2
- ok_script-2.0.0b2/tests/test_core_events.py +33 -0
- ok_script-2.0.0b2/tests/test_core_ui_services.py +72 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_expand_card_layout.py +1 -1
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_explorer.py +6 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_global_config.py +6 -6
- ok_script-2.0.0b2/tests/test_headless_imports.py +50 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_main_window_notifications.py +6 -4
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_main_window_startup_tab.py +1 -1
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_main_window_system_theme.py +11 -11
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_missing_frame.py +15 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_navigation_state.py +1 -1
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_notifications.py +40 -2
- ok_script-2.0.0b2/tests/test_overlay_custom_draw.py +61 -0
- ok_script-2.0.0b2/tests/test_package_metadata.py +27 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_pyappify_startup_update.py +3 -3
- ok_script-2.0.0b2/tests/test_qt_events.py +33 -0
- ok_script-2.0.0b2/tests/test_qt_legacy_imports.py +12 -0
- ok_script-2.0.0b2/tests/test_runtime_startup.py +148 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_start_controller.py +20 -2
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_task_ui.py +5 -5
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_template_tab.py +2 -2
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_touch_scroll.py +1 -1
- ok_script-2.0.0b2/tests/test_ui_config.py +50 -0
- ok_script-2.0.0b2/tests/test_web_app.py +228 -0
- ok_script-2.0.0b2/tests/test_web_i18n.py +24 -0
- ok_script-2.0.0b2/tests/test_web_server.py +511 -0
- ok_script-2.0.0b2/tests/test_web_task_tabs.py +143 -0
- ok_script-2.0.0b2/tests/test_web_ui_pages.py +224 -0
- ok_script-2.0.0b2/tests/test_web_ui_tasks.py +183 -0
- ok_script-1.0.190/ok/gui/Communicate.py +0 -37
- ok_script-1.0.190/ok/gui/overlay/OverlayWindow.py +0 -176
- ok_script-1.0.190/ok/gui/tasks/TemplateFactory.py +0 -410
- ok_script-1.0.190/ok/notification/__init__.py +0 -3
- ok_script-1.0.190/ok/util/i18n.py +0 -57
- ok_script-1.0.190/ok_script.egg-info/SOURCES.txt +0 -299
- ok_script-1.0.190/ok_script.egg-info/top_level.txt +0 -1
- ok_script-1.0.190/setup.py +0 -61
- ok_script-1.0.190/tests/test_cli.py +0 -28
- ok_script-1.0.190/tests/test_overlay_custom_draw.py +0 -122
- {ok_script-1.0.190 → ok_script-2.0.0b2}/LICENSE.txt +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/MANIFEST.in +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/__main__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/alas/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/alas/emulator_base.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/alas/emulator_windows.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/alas/platform_windows.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/alas/utils.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/adb/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/adb/deep.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/adb/minitouch.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/adb/nemu_ipc.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/adb/nemu_utils.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/adb/pool.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/adb/timer.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/adb/util.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/windows/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/windows/d3d11.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/capture/windows/dump.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/adb.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/base.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/bitblt.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/bitblt_utils.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/desktop_duplication.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/image.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/nemu_ipc.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/types.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/update.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/capture_methods/windows_graphics.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/adb.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/base.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/browser.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/do_nothing.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/foreground_post_message.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/genshin.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/keys.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/post_message.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/pydirect.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/pynput.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/interaction_methods/swipe.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/device/intercation.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/feature/Box.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/feature/Feature.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/feature/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/notification/messenger_images.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/notification/pipeline.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/notification/ppocr.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/notification/providers.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ocr}/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/ocr/download_paddle_model.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Foundation/Collections.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Foundation/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Globalization/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Graphics/Capture/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Graphics/DirectX/Direct3D11/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Graphics/DirectX/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Graphics/Imaging/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Graphics/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Media/Ocr/__init__.py +0 -0
- {ok_script-1.0.190/ok/gui/about → ok_script-2.0.0b2/ok/rotypes/Windows/Media}/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Security/Cryptography/__init__.py +0 -0
- {ok_script-1.0.190/ok/gui/common → ok_script-2.0.0b2/ok/rotypes/Windows/Security}/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/Storage/Streams/__init__.py +0 -0
- {ok_script-1.0.190/ok/gui/debug → ok_script-2.0.0b2/ok/rotypes/Windows/Storage}/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/Windows/UI/ViewManagement/__init__.py +0 -0
- {ok_script-1.0.190/ok/gui/i18n → ok_script-2.0.0b2/ok/rotypes/Windows/UI}/__init__.py +0 -0
- {ok_script-1.0.190/ok/gui/overlay → ok_script-2.0.0b2/ok/rotypes/Windows}/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/delegate.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/export.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/idldsl.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/inspectable.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/roapi.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/types.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/rotypes/winstring.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/task/DiagnosisTask.py +0 -0
- {ok_script-1.0.190/ok/gui/qss → ok_script-2.0.0b2/ok/task}/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/task/exceptions.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/test/OKTestRunner.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/test/RunTests.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/test/__init__.py +0 -0
- {ok_script-1.0.190/ok/gui/settings → ok_script-2.0.0b2/ok/third_party}/__init__.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/TabTitles.py +0 -0
- {ok_script-1.0.190/ok/gui/start → ok_script-2.0.0b2/ok/ui/qt}/__init__.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/about/HttpTextEdit.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/about/ProjectCard.py +0 -0
- {ok_script-1.0.190/ok/gui/tasks → ok_script-2.0.0b2/ok/ui/qt/about}/__init__.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/common/OKIcon.py +0 -0
- {ok_script-1.0.190/ok/gui/util → ok_script-2.0.0b2/ok/ui/qt/common}/__init__.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/common/accent_color.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/common/config.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/common/design_system.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/common/style_sheet.py +0 -0
- {ok_script-1.0.190/ok/gui/widget → ok_script-2.0.0b2/ok/ui/qt/debug}/__init__.py +0 -0
- {ok_script-1.0.190/ok/ocr → ok_script-2.0.0b2/ok/ui/qt/i18n}/__init__.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/en_US.qm +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/es_ES.qm +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/ja_JP.qm +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/ko_KR.qm +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/path.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/update.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/zh_CN.qm +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/i18n/zh_TW.qm +0 -0
- {ok_script-1.0.190/ok/rotypes/Windows/Media → ok_script-2.0.0b2/ok/ui/qt/overlay}/__init__.py +0 -0
- {ok_script-1.0.190/ok/rotypes/Windows/Security → ok_script-2.0.0b2/ok/ui/qt/qss}/__init__.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/dark/card.qss +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/dark/discord.svg +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/dark/heart.svg +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/dark/message_window.qss +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/dark/setting_interface.qss +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/dark/status_bar.qss +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/dark/stop.svg +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/dark/tab.qss +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/light/card.qss +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/light/discord.svg +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/light/heart.svg +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/light/message_window.qss +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/light/setting_interface.qss +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/light/status_bar.qss +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/light/stop.svg +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qss/light/tab.qss +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/qt.qrc +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/resources.py +0 -0
- {ok_script-1.0.190/ok/rotypes/Windows/Storage → ok_script-2.0.0b2/ok/ui/qt/settings}/__init__.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/start/LogWindow.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/start/SelectCaptureListView.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/start/SelectInteractionListView.py +0 -0
- {ok_script-1.0.190/ok/rotypes/Windows/UI → ok_script-2.0.0b2/ok/ui/qt/start}/__init__.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/PythonHighlighter.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/TaskOpButton.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/tasks/TooltipTableWidget.py +0 -0
- {ok_script-1.0.190/ok/rotypes/Windows → ok_script-2.0.0b2/ok/ui/qt/tasks}/__init__.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/util/InitWorker.py +0 -0
- {ok_script-1.0.190/ok/task → ok_script-2.0.0b2/ok/ui/qt/util}/__init__.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/util/pip_util.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/util/touch_scroll.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/util/windows_thumbnail.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/ExpandCardLayout.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/FlowLayout.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/FramelessDialog.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/ImageWidget.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/OkCompactSpinBox.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/SortingTableWidgetItem.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/StartLoadingDialog.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/TabWidget.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/UpdateConfigWidgetItem.py +0 -0
- {ok_script-1.0.190/ok/gui → ok_script-2.0.0b2/ok/ui/qt}/widget/WidgetWithVLabel.py +0 -0
- {ok_script-1.0.190/ok/third_party → ok_script-2.0.0b2/ok/ui/qt/widget}/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/update/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/update/copy_ok_folder.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/update/inline_ok_requirements.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/__init__.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/blur.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/clazz.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/collection.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/color.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/file.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/gpu_driver_settings.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/partial_sync_repo.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/print_hwnd.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/process.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok/util/window.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok_script.egg-info/dependency_links.txt +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok_script.egg-info/entry_points.txt +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/ok_script.egg-info/not-zip-safe +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/setup.cfg +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_app.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_base_interaction.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_box.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_capture_update.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_device_manager.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_gpu_driver_settings.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_inline_ok_requirements.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_logger.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_nemu_ipc_capture.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_ok_mutex.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_process.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_task_executor_queue.py +0 -0
- {ok_script-1.0.190 → ok_script-2.0.0b2}/tests/test_translation_fallback.py +0 -0
- {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:
|
|
3
|
+
Version: 2.0.0b2
|
|
4
4
|
Summary: Automation with Computer Vision for Python
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
[](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
|
[](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())
|