GameSentenceMiner 2.12.0.dev4__tar.gz → 2.12.0.dev5__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.
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/window_transparency.py +28 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/web/texthooking_page.py +1 -1
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner.egg-info/PKG-INFO +1 -1
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/PKG-INFO +1 -1
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/pyproject.toml +1 -1
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/__init__.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/ai/__init__.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/ai/ai_prompting.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/anki.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/assets/__init__.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/assets/icon.png +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/assets/icon128.png +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/assets/icon256.png +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/assets/icon32.png +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/assets/icon512.png +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/assets/icon64.png +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/assets/pickaxe.png +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/config_gui.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/gametext.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/gsm.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/obs.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/ocr/__init__.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/ocr/gsm_ocr_config.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/ocr/ocrconfig.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/ocr/owocr_area_selector.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/ocr/owocr_helper.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/ocr/ss_picker.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/owocr/owocr/__init__.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/owocr/owocr/__main__.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/owocr/owocr/config.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/owocr/owocr/lens_betterproto.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/owocr/owocr/ocr.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/owocr/owocr/run.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/owocr/owocr/screen_coordinate_picker.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/__init__.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/audio_offset_selector.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/communication/__init__.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/communication/send.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/communication/websocket.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/configuration.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/downloader/Untitled_json.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/downloader/__init__.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/downloader/download_tools.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/downloader/oneocr_dl.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/electron_config.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/ffmpeg.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/gsm_utils.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/model.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/notification.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/package.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/ss_selector.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/text_log.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/vad.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/web/__init__.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/web/service.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/web/static/__init__.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/web/static/apple-touch-icon.png +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/web/static/favicon-96x96.png +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/web/static/favicon.ico +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/web/static/favicon.svg +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/web/static/site.webmanifest +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/web/static/style.css +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/web/static/web-app-manifest-192x192.png +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/web/static/web-app-manifest-512x512.png +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/web/templates/__init__.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/web/templates/index.html +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/web/templates/text_replacements.html +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/web/templates/utility.html +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/wip/get_overlay_coords.py +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner.egg-info/SOURCES.txt +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner.egg-info/dependency_links.txt +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner.egg-info/entry_points.txt +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner.egg-info/requires.txt +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner.egg-info/top_level.txt +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/LICENSE +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/README.md +0 -0
- {gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/setup.cfg +0 -0
@@ -1,9 +1,11 @@
|
|
1
|
+
import sys
|
1
2
|
import win32gui
|
2
3
|
import win32con
|
3
4
|
import win32api
|
4
5
|
import keyboard
|
5
6
|
import time
|
6
7
|
import threading
|
8
|
+
import signal
|
7
9
|
|
8
10
|
from GameSentenceMiner.util.configuration import logger
|
9
11
|
|
@@ -137,6 +139,22 @@ def mouse_monitor_loop():
|
|
137
139
|
# A small delay to reduce CPU usage
|
138
140
|
time.sleep(0.1)
|
139
141
|
|
142
|
+
class HandleSTDINThread(threading.Thread):
|
143
|
+
def run(self):
|
144
|
+
while True:
|
145
|
+
try:
|
146
|
+
line = input()
|
147
|
+
if "exit" in line.strip().lower():
|
148
|
+
handle_quit()
|
149
|
+
break
|
150
|
+
except EOFError:
|
151
|
+
break
|
152
|
+
|
153
|
+
def handle_quit():
|
154
|
+
if is_toggled and target_hwnd:
|
155
|
+
reset_window_state(target_hwnd)
|
156
|
+
logger.info("Exiting Window Transparency Tool.")
|
157
|
+
|
140
158
|
# --- Main Execution Block ---
|
141
159
|
|
142
160
|
if __name__ == "__main__":
|
@@ -155,8 +173,18 @@ if __name__ == "__main__":
|
|
155
173
|
# Register the global hotkey
|
156
174
|
keyboard.add_hotkey(hotkey, toggle_functionality)
|
157
175
|
|
176
|
+
# Handle SigINT/SigTERM gracefully
|
177
|
+
def signal_handler(sig, frame):
|
178
|
+
handle_quit()
|
179
|
+
sys.exit(0)
|
180
|
+
|
181
|
+
signal.signal(signal.SIGINT, signal_handler)
|
182
|
+
signal.signal(signal.SIGTERM, signal_handler)
|
183
|
+
|
158
184
|
logger.info(f"Script running. Press '{hotkey}' on a window to toggle transparency.")
|
159
185
|
logger.info("Press Ctrl+C in this console to exit.")
|
186
|
+
|
187
|
+
HandleSTDINThread().start()
|
160
188
|
|
161
189
|
# Keep the script running to listen for the hotkey.
|
162
190
|
# keyboard.wait() is a blocking call that waits indefinitely.
|
@@ -489,7 +489,7 @@ async def texthooker_page_coro():
|
|
489
489
|
plaintext_websocket_server_thread = WebsocketServerThread(read=False, ws_port=get_config().advanced.plaintext_websocket_port)
|
490
490
|
plaintext_websocket_server_thread.start()
|
491
491
|
|
492
|
-
overlay_server_thread = WebsocketServerThread(read=False, ws_port=
|
492
|
+
overlay_server_thread = WebsocketServerThread(read=False, ws_port=get_config().wip.overlay_websocket_port)
|
493
493
|
overlay_server_thread.start()
|
494
494
|
|
495
495
|
# Keep the main asyncio event loop running (for the WebSocket server)
|
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
|
|
7
7
|
|
8
8
|
[project]
|
9
9
|
name = "GameSentenceMiner"
|
10
|
-
version = "2.12.0-
|
10
|
+
version = "2.12.0-dev5"
|
11
11
|
description = "A tool for mining sentences from games. Update: Overlay?"
|
12
12
|
readme = "README.md"
|
13
13
|
requires-python = ">=3.10"
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/__init__.py
RENAMED
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/ai/__init__.py
RENAMED
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/ai/ai_prompting.py
RENAMED
File without changes
|
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/assets/__init__.py
RENAMED
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/assets/icon.png
RENAMED
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/assets/icon128.png
RENAMED
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/assets/icon256.png
RENAMED
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/assets/icon32.png
RENAMED
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/assets/icon512.png
RENAMED
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/assets/icon64.png
RENAMED
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/assets/pickaxe.png
RENAMED
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/config_gui.py
RENAMED
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/gametext.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/ocr/__init__.py
RENAMED
File without changes
|
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/ocr/ocrconfig.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/ocr/ss_picker.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/owocr/owocr/ocr.py
RENAMED
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/owocr/owocr/run.py
RENAMED
File without changes
|
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/ffmpeg.py
RENAMED
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/gsm_utils.py
RENAMED
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/model.py
RENAMED
File without changes
|
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/package.py
RENAMED
File without changes
|
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/util/text_log.py
RENAMED
File without changes
|
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/web/__init__.py
RENAMED
File without changes
|
{gamesentenceminer-2.12.0.dev4 → gamesentenceminer-2.12.0.dev5}/GameSentenceMiner/web/service.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|