GameSentenceMiner 2.2.0__tar.gz → 2.2.2__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.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/anki.py +12 -12
- {gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/config_gui.py +3 -3
- {gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/configuration.py +2 -4
- {gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/downloader/download_tools.py +2 -2
- {gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/ffmpeg.py +9 -5
- {gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/gametext.py +6 -6
- {gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/gsm.py +19 -20
- {gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/notification.py +5 -3
- {gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/obs.py +14 -23
- {gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/package_updater.py +1 -1
- {gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/util.py +9 -6
- {gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/vad/silero_trim.py +2 -2
- {gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/vad/vosk_helper.py +2 -2
- {gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/vad/whisper_helper.py +2 -2
- gamesentenceminer-2.2.2/GameSentenceMiner.egg-info/PKG-INFO +229 -0
- gamesentenceminer-2.2.2/GameSentenceMiner.egg-info/SOURCES.txt +27 -0
- gamesentenceminer-2.2.2/GameSentenceMiner.egg-info/entry_points.txt +2 -0
- gamesentenceminer-2.2.2/GameSentenceMiner.egg-info/top_level.txt +1 -0
- gamesentenceminer-2.2.2/PKG-INFO +229 -0
- gamesentenceminer-2.2.2/README.md +195 -0
- {gamesentenceminer-2.2.0 → gamesentenceminer-2.2.2}/pyproject.toml +4 -4
- gamesentenceminer-2.2.0/GameSentenceMiner.egg-info/PKG-INFO +0 -348
- gamesentenceminer-2.2.0/GameSentenceMiner.egg-info/SOURCES.txt +0 -27
- gamesentenceminer-2.2.0/GameSentenceMiner.egg-info/entry_points.txt +0 -2
- gamesentenceminer-2.2.0/GameSentenceMiner.egg-info/top_level.txt +0 -1
- gamesentenceminer-2.2.0/PKG-INFO +0 -348
- gamesentenceminer-2.2.0/README.md +0 -314
- {gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/__init__.py +0 -0
- {gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/downloader/Untitled_json.py +0 -0
- {gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/downloader/__init__.py +0 -0
- {gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/model.py +0 -0
- {gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/vad/__init__.py +0 -0
- {gamesentenceminer-2.2.0 → gamesentenceminer-2.2.2}/GameSentenceMiner.egg-info/dependency_links.txt +0 -0
- {gamesentenceminer-2.2.0 → gamesentenceminer-2.2.2}/GameSentenceMiner.egg-info/requires.txt +0 -0
- {gamesentenceminer-2.2.0 → gamesentenceminer-2.2.2}/setup.cfg +0 -0
@@ -6,12 +6,12 @@ import urllib.request
|
|
6
6
|
|
7
7
|
import requests as req
|
8
8
|
|
9
|
-
from
|
9
|
+
from GameSentenceMiner import obs, util, notification, ffmpeg
|
10
10
|
|
11
|
-
from
|
12
|
-
from
|
13
|
-
from
|
14
|
-
from
|
11
|
+
from GameSentenceMiner.configuration import *
|
12
|
+
from GameSentenceMiner.configuration import get_config
|
13
|
+
from GameSentenceMiner.gametext import get_last_two_sentences
|
14
|
+
from GameSentenceMiner.obs import get_current_game
|
15
15
|
|
16
16
|
audio_in_anki = None
|
17
17
|
screenshot_in_anki = None
|
@@ -168,15 +168,15 @@ def get_cards_by_sentence(sentence):
|
|
168
168
|
card_ids = invoke("findCards", query=query)
|
169
169
|
|
170
170
|
if not card_ids:
|
171
|
-
|
171
|
+
logger.warning(f"Didn't find any cards matching query:\n{query}")
|
172
172
|
return {}
|
173
173
|
if len(card_ids) > 1:
|
174
|
-
|
174
|
+
logger.warning(f'Found more than 1, and not updating cards for query: \n{query}')
|
175
175
|
return {}
|
176
176
|
|
177
177
|
last_notes = invoke('notesInfo', notes=[card_ids[0]])[0]
|
178
178
|
|
179
|
-
|
179
|
+
logger.info(f"Found Card to backfill!: {card_ids[0]}")
|
180
180
|
|
181
181
|
return last_notes
|
182
182
|
|
@@ -188,7 +188,7 @@ def check_for_new_cards():
|
|
188
188
|
try:
|
189
189
|
current_note_ids = get_note_ids()
|
190
190
|
except Exception as e:
|
191
|
-
|
191
|
+
logger.error(f"Error fetching Anki notes: {e}")
|
192
192
|
return
|
193
193
|
new_card_ids = current_note_ids - previous_note_ids
|
194
194
|
if new_card_ids and not first_run:
|
@@ -205,16 +205,16 @@ def update_new_card():
|
|
205
205
|
|
206
206
|
use_prev_audio = util.use_previous_audio
|
207
207
|
if util.lock.locked():
|
208
|
-
|
208
|
+
logger.info("Audio still being Trimmed, Card Queued!")
|
209
209
|
use_prev_audio = True
|
210
210
|
with util.lock:
|
211
|
-
|
211
|
+
logger.info(f"use previous audio: {use_prev_audio}")
|
212
212
|
if get_config().obs.get_game_from_scene:
|
213
213
|
obs.update_current_game()
|
214
214
|
if use_prev_audio:
|
215
215
|
update_anki_card(last_card, note=get_initial_card_info(last_card), reuse_audio=True)
|
216
216
|
else:
|
217
|
-
|
217
|
+
logger.info("New card(s) detected!")
|
218
218
|
obs.save_replay_buffer()
|
219
219
|
|
220
220
|
|
@@ -3,9 +3,9 @@ from tkinter import filedialog, messagebox, simpledialog
|
|
3
3
|
|
4
4
|
import ttkbootstrap as ttk
|
5
5
|
|
6
|
-
from
|
7
|
-
from
|
8
|
-
from
|
6
|
+
from GameSentenceMiner.package_updater import check_for_updates, get_latest_version, update, get_current_version
|
7
|
+
from GameSentenceMiner import obs, configuration
|
8
|
+
from GameSentenceMiner.configuration import *
|
9
9
|
|
10
10
|
settings_saved = False
|
11
11
|
on_save = []
|
@@ -305,13 +305,11 @@ def load_config():
|
|
305
305
|
config = ProfileConfig.from_dict(config_file)
|
306
306
|
new_config = Config(configs = {DEFAULT_CONFIG : config}, current_profile=DEFAULT_CONFIG)
|
307
307
|
|
308
|
-
print(new_config)
|
309
|
-
|
310
308
|
with open(config_path, 'w') as file:
|
311
309
|
json.dump(new_config.to_dict(), file, indent=4)
|
312
310
|
return new_config
|
313
311
|
except json.JSONDecodeError as e:
|
314
|
-
|
312
|
+
logger.error(f"Error parsing config.json: {e}")
|
315
313
|
return None
|
316
314
|
elif os.path.exists('config.toml'):
|
317
315
|
config = ProfileConfig().load_from_toml('config.toml')
|
@@ -334,7 +332,7 @@ def get_config():
|
|
334
332
|
config = config_instance.get_config()
|
335
333
|
|
336
334
|
if config.features.backfill_audio and config.features.full_auto:
|
337
|
-
|
335
|
+
logger.error("Cannot have backfill_audio and obs_full_auto_mode turned on at the same time!")
|
338
336
|
exit(1)
|
339
337
|
|
340
338
|
# print(config_instance.get_config())
|
@@ -6,8 +6,8 @@ import urllib.request
|
|
6
6
|
import platform
|
7
7
|
import zipfile
|
8
8
|
|
9
|
-
from
|
10
|
-
from
|
9
|
+
from GameSentenceMiner.downloader.Untitled_json import scenes
|
10
|
+
from GameSentenceMiner.configuration import get_app_directory, logger
|
11
11
|
|
12
12
|
script_dir = os.path.dirname(os.path.abspath(__file__))
|
13
13
|
|
@@ -2,13 +2,16 @@ import subprocess
|
|
2
2
|
import tempfile
|
3
3
|
import time
|
4
4
|
|
5
|
-
from
|
6
|
-
from
|
7
|
-
from
|
5
|
+
from GameSentenceMiner import obs, util, configuration
|
6
|
+
from GameSentenceMiner.configuration import *
|
7
|
+
from GameSentenceMiner.util import *
|
8
8
|
|
9
9
|
def get_ffmpeg_path():
|
10
10
|
return os.path.join(get_app_directory(), "ffmpeg", "ffmpeg.exe") if util.is_windows() else "ffmpeg"
|
11
11
|
|
12
|
+
def get_ffprobe_path():
|
13
|
+
return os.path.join(get_app_directory(), "ffmpeg", "ffprobe.exe") if util.is_windows() else "ffprobe"
|
14
|
+
|
12
15
|
ffmpeg_base_command_list = [get_ffmpeg_path(), "-hide_banner", "-loglevel", "error", '-nostdin']
|
13
16
|
|
14
17
|
|
@@ -90,7 +93,7 @@ def process_image(image_file):
|
|
90
93
|
|
91
94
|
def get_audio_codec(video_path):
|
92
95
|
command = [
|
93
|
-
"
|
96
|
+
f"{get_ffprobe_path()}",
|
94
97
|
"-v", "error",
|
95
98
|
"-select_streams", "a:0",
|
96
99
|
"-show_entries", "stream=codec_name",
|
@@ -151,12 +154,13 @@ def get_audio_and_trim(video_path, line_time, next_line_time):
|
|
151
154
|
|
152
155
|
def get_video_duration(file_path):
|
153
156
|
ffprobe_command = [
|
154
|
-
"
|
157
|
+
f"{get_ffprobe_path()}",
|
155
158
|
"-v", "error",
|
156
159
|
"-show_entries", "format=duration",
|
157
160
|
"-of", "json",
|
158
161
|
file_path
|
159
162
|
]
|
163
|
+
logger.debug(" ".join(ffprobe_command))
|
160
164
|
result = subprocess.run(ffprobe_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
161
165
|
duration_info = json.loads(result.stdout)
|
162
166
|
return float(duration_info["format"]["duration"]) # Return the duration in seconds
|
@@ -7,10 +7,10 @@ from datetime import datetime
|
|
7
7
|
import pyperclip
|
8
8
|
import websockets
|
9
9
|
|
10
|
-
from
|
11
|
-
from
|
12
|
-
from
|
13
|
-
from
|
10
|
+
from GameSentenceMiner import util
|
11
|
+
from GameSentenceMiner.configuration import *
|
12
|
+
from GameSentenceMiner.configuration import get_config, logger
|
13
|
+
from GameSentenceMiner.util import remove_html_tags
|
14
14
|
from difflib import SequenceMatcher
|
15
15
|
|
16
16
|
|
@@ -51,7 +51,7 @@ async def listen_websocket():
|
|
51
51
|
try:
|
52
52
|
async with websockets.connect(f'ws://{get_config().general.websocket_uri}', ping_interval=None) as websocket:
|
53
53
|
if reconnecting:
|
54
|
-
|
54
|
+
logger.info(f"Texthooker WebSocket connected Successfully!")
|
55
55
|
reconnecting = False
|
56
56
|
while True:
|
57
57
|
message = await websocket.recv()
|
@@ -71,7 +71,7 @@ async def listen_websocket():
|
|
71
71
|
|
72
72
|
except (websockets.ConnectionClosed, ConnectionError) as e:
|
73
73
|
if not reconnecting:
|
74
|
-
|
74
|
+
logger.warning(f"Texthooker WebSocket connection lost: {e}. Attempting to Reconnect...")
|
75
75
|
reconnecting = True
|
76
76
|
await asyncio.sleep(5)
|
77
77
|
|
@@ -12,20 +12,20 @@ from pystray import Icon, Menu, MenuItem
|
|
12
12
|
from watchdog.events import FileSystemEventHandler
|
13
13
|
from watchdog.observers import Observer
|
14
14
|
|
15
|
-
from
|
16
|
-
from
|
17
|
-
from
|
18
|
-
from
|
19
|
-
from
|
20
|
-
from
|
21
|
-
from
|
22
|
-
from
|
23
|
-
from
|
24
|
-
from
|
25
|
-
from
|
26
|
-
from
|
27
|
-
from
|
28
|
-
from
|
15
|
+
from GameSentenceMiner import anki
|
16
|
+
from GameSentenceMiner import config_gui
|
17
|
+
from GameSentenceMiner import configuration
|
18
|
+
from GameSentenceMiner import ffmpeg
|
19
|
+
from GameSentenceMiner import gametext
|
20
|
+
from GameSentenceMiner import notification
|
21
|
+
from GameSentenceMiner import obs
|
22
|
+
from GameSentenceMiner import util
|
23
|
+
from GameSentenceMiner.downloader.download_tools import download_obs_if_needed, download_ffmpeg_if_needed
|
24
|
+
from GameSentenceMiner.vad import vosk_helper, silero_trim, whisper_helper
|
25
|
+
from GameSentenceMiner.configuration import *
|
26
|
+
from GameSentenceMiner.ffmpeg import get_audio_and_trim
|
27
|
+
from GameSentenceMiner.gametext import get_line_timing
|
28
|
+
from GameSentenceMiner.util import *
|
29
29
|
|
30
30
|
obs_process: Popen
|
31
31
|
procs_to_close = []
|
@@ -100,8 +100,7 @@ class VideoToAudioHandler(FileSystemEventHandler):
|
|
100
100
|
except Exception as e:
|
101
101
|
logger.error(f"Card failed to update! Maybe it was removed? {e}")
|
102
102
|
except FileNotFoundError as f:
|
103
|
-
|
104
|
-
print("Something went wrong with processing, anki card not updated")
|
103
|
+
logger.error("Something went wrong with processing, anki card not updated")
|
105
104
|
except Exception as e:
|
106
105
|
logger.error(f"Some error was hit catching to allow further work to be done: {e}", exc_info=1)
|
107
106
|
if get_config().paths.remove_video and os.path.exists(video_path):
|
@@ -232,7 +231,7 @@ def open_log():
|
|
232
231
|
"""Open log file with the default application."""
|
233
232
|
log_file_path = get_log_path()
|
234
233
|
if not os.path.exists(log_file_path):
|
235
|
-
|
234
|
+
logger.error("Log file not found!")
|
236
235
|
return
|
237
236
|
|
238
237
|
if sys.platform.startswith("win"): # Windows
|
@@ -242,13 +241,13 @@ def open_log():
|
|
242
241
|
elif sys.platform.startswith("linux"): # Linux
|
243
242
|
subprocess.call(["xdg-open", log_file_path])
|
244
243
|
else:
|
245
|
-
|
246
|
-
|
244
|
+
logger.error("Unsupported platform!")
|
245
|
+
logger.info("Log opened.")
|
247
246
|
|
248
247
|
|
249
248
|
def exit_program(icon, item):
|
250
249
|
"""Exit the application."""
|
251
|
-
|
250
|
+
logger.info("Exiting...")
|
252
251
|
icon.stop()
|
253
252
|
cleanup()
|
254
253
|
|
@@ -1,6 +1,8 @@
|
|
1
1
|
import requests
|
2
2
|
from plyer import notification
|
3
3
|
|
4
|
+
from GameSentenceMiner.configuration import logger
|
5
|
+
|
4
6
|
|
5
7
|
def open_anki_card(note_id):
|
6
8
|
url = "http://localhost:8765"
|
@@ -17,11 +19,11 @@ def open_anki_card(note_id):
|
|
17
19
|
try:
|
18
20
|
response = requests.post(url, json=data, headers=headers)
|
19
21
|
if response.status_code == 200:
|
20
|
-
|
22
|
+
logger.info(f"Opened Anki note with ID {note_id}")
|
21
23
|
else:
|
22
|
-
|
24
|
+
logger.error(f"Failed to open Anki note with ID {note_id}")
|
23
25
|
except Exception as e:
|
24
|
-
|
26
|
+
logger.info(f"Error connecting to AnkiConnect: {e}")
|
25
27
|
|
26
28
|
|
27
29
|
def send_notification(tango):
|
@@ -3,9 +3,9 @@ import time
|
|
3
3
|
|
4
4
|
from obswebsocket import obsws, requests
|
5
5
|
|
6
|
-
from
|
7
|
-
from
|
8
|
-
from
|
6
|
+
from GameSentenceMiner import util, configuration
|
7
|
+
from GameSentenceMiner.configuration import *
|
8
|
+
from GameSentenceMiner.model import *
|
9
9
|
|
10
10
|
client: obsws = None
|
11
11
|
|
@@ -33,15 +33,7 @@ def start_obs():
|
|
33
33
|
|
34
34
|
|
35
35
|
def get_obs_websocket_config_values():
|
36
|
-
|
37
|
-
config_path = os.path.expanduser(r"~\AppData\Roaming\obs-studio\plugin_config\obs-websocket\config.json")
|
38
|
-
elif platform == "darwin": # macOS
|
39
|
-
config_path = os.path.expanduser(
|
40
|
-
"~/Library/Application Support/obs-studio/plugin_config/obs-websocket/config.json")
|
41
|
-
elif platform == "linux":
|
42
|
-
config_path = os.path.expanduser("~/.config/obs-studio/plugin_config/obs-websocket/config.json")
|
43
|
-
else:
|
44
|
-
raise Exception("Unsupported operating system.")
|
36
|
+
config_path = os.path.join(get_app_directory(), 'obs-studio', 'config', 'obs-studio', 'plugin_config', 'obs-websocket', 'config.json')
|
45
37
|
|
46
38
|
# Check if config file exists
|
47
39
|
if not os.path.isfile(config_path):
|
@@ -111,9 +103,9 @@ def disconnect_from_obs():
|
|
111
103
|
def toggle_replay_buffer():
|
112
104
|
try:
|
113
105
|
client.call(requests.ToggleReplayBuffer())
|
114
|
-
|
106
|
+
logger.info("Replay buffer Toggled.")
|
115
107
|
except Exception as e:
|
116
|
-
|
108
|
+
logger.error(f"Error toggling buffer: {e}")
|
117
109
|
|
118
110
|
|
119
111
|
# Start replay buffer
|
@@ -122,16 +114,16 @@ def start_replay_buffer():
|
|
122
114
|
client.call(requests.GetVersion())
|
123
115
|
client.call(requests.StartReplayBuffer())
|
124
116
|
except Exception as e:
|
125
|
-
|
117
|
+
logger.error(f"Error starting replay buffer: {e}")
|
126
118
|
|
127
119
|
|
128
120
|
# Stop replay buffer
|
129
121
|
def stop_replay_buffer():
|
130
122
|
try:
|
131
123
|
client.call(requests.StopReplayBuffer())
|
132
|
-
|
124
|
+
logger.error("Replay buffer stopped.")
|
133
125
|
except Exception as e:
|
134
|
-
|
126
|
+
logger.error(f"Error stopping replay buffer: {e}")
|
135
127
|
|
136
128
|
|
137
129
|
# Save the current replay buffer
|
@@ -144,7 +136,7 @@ def save_replay_buffer():
|
|
144
136
|
else:
|
145
137
|
logger.error("Replay Buffer is not active, could not save Replay Buffer!")
|
146
138
|
except Exception as e:
|
147
|
-
|
139
|
+
logger.error(f"Error saving replay buffer: {e}")
|
148
140
|
|
149
141
|
|
150
142
|
def get_current_scene():
|
@@ -153,7 +145,7 @@ def get_current_scene():
|
|
153
145
|
scene_info = SceneInfo.from_dict(response.datain)
|
154
146
|
return scene_info.sceneName
|
155
147
|
except Exception as e:
|
156
|
-
|
148
|
+
logger.error(f"Couldn't get scene: {e}")
|
157
149
|
return ''
|
158
150
|
|
159
151
|
|
@@ -161,10 +153,9 @@ def get_source_from_scene(scene_name):
|
|
161
153
|
try:
|
162
154
|
response = client.call(requests.GetSceneItemList(sceneName=scene_name))
|
163
155
|
scene_list = SceneItemsResponse.from_dict(response.datain)
|
164
|
-
print(scene_list)
|
165
156
|
return scene_list.sceneItems[0]
|
166
157
|
except Exception as e:
|
167
|
-
|
158
|
+
logger.error(f"Error getting source from scene: {e}")
|
168
159
|
return ''
|
169
160
|
|
170
161
|
|
@@ -176,13 +167,13 @@ def get_screenshot():
|
|
176
167
|
current_source = get_source_from_scene(get_current_game())
|
177
168
|
current_source_name = current_source.sourceName
|
178
169
|
if not current_source_name:
|
179
|
-
|
170
|
+
logger.error("No active scene found.")
|
180
171
|
return
|
181
172
|
client.call(
|
182
173
|
requests.SaveSourceScreenshot(sourceName=current_source_name, imageFormat='png', imageFilePath=screenshot))
|
183
174
|
return screenshot
|
184
175
|
except Exception as e:
|
185
|
-
|
176
|
+
logger.error(f"Error getting screenshot: {e}")
|
186
177
|
|
187
178
|
|
188
179
|
def update_current_game():
|
{gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/package_updater.py
RENAMED
@@ -5,7 +5,7 @@ import sys
|
|
5
5
|
import pyperclip
|
6
6
|
import requests
|
7
7
|
|
8
|
-
from
|
8
|
+
from GameSentenceMiner.configuration import logger, get_app_directory
|
9
9
|
|
10
10
|
PACKAGE_NAME = "GameSentenceMiner"
|
11
11
|
VERSION_FILE_PATH = os.path.join(get_app_directory(), 'version.txt')
|
@@ -9,6 +9,8 @@ from sys import platform
|
|
9
9
|
|
10
10
|
from rapidfuzz import process
|
11
11
|
|
12
|
+
from GameSentenceMiner.configuration import logger
|
13
|
+
|
12
14
|
SCRIPTS_DIR = r"E:\Japanese Stuff\agent-v0.1.4-win32-x64\data\scripts"
|
13
15
|
|
14
16
|
# Global variables to control script execution
|
@@ -56,7 +58,7 @@ def get_file_modification_time(file_path):
|
|
56
58
|
def get_process_id_by_title(game_title):
|
57
59
|
powershell_command = f"Get-Process | Where-Object {{$_.MainWindowTitle -like '*{game_title}*'}} | Select-Object -First 1 -ExpandProperty Id"
|
58
60
|
process_id = subprocess.check_output(["powershell", "-Command", powershell_command], text=True).strip()
|
59
|
-
|
61
|
+
logger.info(f"Process ID for {game_title}: {process_id}")
|
60
62
|
return process_id
|
61
63
|
|
62
64
|
|
@@ -100,22 +102,23 @@ def find_script_for_game(game_title):
|
|
100
102
|
|
101
103
|
best_script, matched_game_name, confidence = find_most_similar_script(game_title, steam_scripts)
|
102
104
|
|
105
|
+
|
103
106
|
if best_script:
|
104
|
-
|
107
|
+
logger.info(f"Found Script: {best_script}")
|
105
108
|
return best_script
|
106
109
|
else:
|
107
|
-
|
110
|
+
logger.warning("No similar script found.")
|
108
111
|
|
109
112
|
|
110
113
|
def run_agent_and_hook(pname, agent_script):
|
111
114
|
command = f'agent --script=\"{agent_script}\" --pname={pname}'
|
112
|
-
|
115
|
+
logger.info("Running and Hooking Agent!")
|
113
116
|
try:
|
114
117
|
dos_process = subprocess.Popen(command, shell=True)
|
115
118
|
dos_process.wait() # Wait for the process to complete
|
116
|
-
|
119
|
+
logger.info("Agent script finished or closed.")
|
117
120
|
except Exception as e:
|
118
|
-
|
121
|
+
logger.error(f"Error occurred while running agent script: {e}")
|
119
122
|
|
120
123
|
keep_running = False
|
121
124
|
|
{gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/vad/silero_trim.py
RENAMED
@@ -2,8 +2,8 @@ import tempfile
|
|
2
2
|
|
3
3
|
from silero_vad import load_silero_vad, read_audio, get_speech_timestamps
|
4
4
|
|
5
|
-
from
|
6
|
-
from
|
5
|
+
from GameSentenceMiner import configuration, ffmpeg
|
6
|
+
from GameSentenceMiner.configuration import *
|
7
7
|
|
8
8
|
# Silero VAD setup
|
9
9
|
vad_model = load_silero_vad()
|
{gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/vad/vosk_helper.py
RENAMED
@@ -7,8 +7,8 @@ import requests
|
|
7
7
|
import soundfile as sf
|
8
8
|
import vosk
|
9
9
|
|
10
|
-
from
|
11
|
-
from
|
10
|
+
from GameSentenceMiner import configuration, ffmpeg
|
11
|
+
from GameSentenceMiner.configuration import *
|
12
12
|
|
13
13
|
ffmpeg_base_command_list = ["ffmpeg", "-hide_banner", "-loglevel", "error"]
|
14
14
|
vosk.SetLogLevel(-1)
|
{gamesentenceminer-2.2.0/src → gamesentenceminer-2.2.2/GameSentenceMiner}/vad/whisper_helper.py
RENAMED
@@ -4,8 +4,8 @@ import warnings
|
|
4
4
|
import stable_whisper as whisper
|
5
5
|
from stable_whisper import WhisperResult
|
6
6
|
|
7
|
-
from
|
8
|
-
from
|
7
|
+
from GameSentenceMiner import configuration, ffmpeg
|
8
|
+
from GameSentenceMiner.configuration import *
|
9
9
|
|
10
10
|
ffmpeg_base_command_list = ["ffmpeg", "-hide_banner", "-loglevel", "error"]
|
11
11
|
whisper_model = None
|