GameSentenceMiner 2.19.15__py3-none-any.whl → 2.19.17__py3-none-any.whl
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/gsm.py +3 -1
- GameSentenceMiner/ocr/owocr_helper.py +3 -3
- GameSentenceMiner/util/ffmpeg.py +23 -4
- {gamesentenceminer-2.19.15.dist-info → gamesentenceminer-2.19.17.dist-info}/METADATA +1 -1
- {gamesentenceminer-2.19.15.dist-info → gamesentenceminer-2.19.17.dist-info}/RECORD +9 -9
- {gamesentenceminer-2.19.15.dist-info → gamesentenceminer-2.19.17.dist-info}/WHEEL +0 -0
- {gamesentenceminer-2.19.15.dist-info → gamesentenceminer-2.19.17.dist-info}/entry_points.txt +0 -0
- {gamesentenceminer-2.19.15.dist-info → gamesentenceminer-2.19.17.dist-info}/licenses/LICENSE +0 -0
- {gamesentenceminer-2.19.15.dist-info → gamesentenceminer-2.19.17.dist-info}/top_level.txt +0 -0
GameSentenceMiner/gsm.py
CHANGED
|
@@ -13,6 +13,8 @@ def handle_error_in_initialization(e):
|
|
|
13
13
|
sys.exit(1)
|
|
14
14
|
|
|
15
15
|
Icon = None
|
|
16
|
+
Menu = None
|
|
17
|
+
MenuItem = None
|
|
16
18
|
|
|
17
19
|
try:
|
|
18
20
|
import GameSentenceMiner.util.configuration
|
|
@@ -41,7 +43,7 @@ try:
|
|
|
41
43
|
from PIL import Image
|
|
42
44
|
try:
|
|
43
45
|
pass
|
|
44
|
-
|
|
46
|
+
from pystray import Icon, Menu, MenuItem
|
|
45
47
|
except Exception:
|
|
46
48
|
logger.warning("pystray not installed correctly, tray icon will not work.")
|
|
47
49
|
from watchdog.events import FileSystemEventHandler
|
|
@@ -21,7 +21,7 @@ from rapidfuzz import fuzz
|
|
|
21
21
|
from GameSentenceMiner import obs
|
|
22
22
|
from GameSentenceMiner.ocr.ss_picker import ScreenCropper
|
|
23
23
|
from GameSentenceMiner.owocr.owocr.run import TextFiltering
|
|
24
|
-
from GameSentenceMiner.util.configuration import get_config, get_app_directory, get_temporary_directory
|
|
24
|
+
from GameSentenceMiner.util.configuration import get_config, get_app_directory, get_temporary_directory, is_windows
|
|
25
25
|
from GameSentenceMiner.ocr.gsm_ocr_config import OCRConfig, has_config_changed, set_dpi_awareness, get_window, get_ocr_config_path
|
|
26
26
|
from GameSentenceMiner.owocr.owocr import run
|
|
27
27
|
from GameSentenceMiner.util.electron_config import get_ocr_ocr2, get_ocr_send_to_clipboard, get_ocr_scan_rate, \
|
|
@@ -619,7 +619,6 @@ def process_task_queue():
|
|
|
619
619
|
|
|
620
620
|
def run_oneocr(ocr_config: OCRConfig, rectangles, config_check_thread):
|
|
621
621
|
global done
|
|
622
|
-
print("Running OneOCR")
|
|
623
622
|
screen_area = None
|
|
624
623
|
screen_areas = [",".join(str(c) for c in rect_config.coordinates) for rect_config in rectangles if not rect_config.is_excluded]
|
|
625
624
|
exclusions = list(rect.coordinates for rect in list(filter(lambda x: x.is_excluded, rectangles)))
|
|
@@ -808,7 +807,8 @@ if __name__ == "__main__":
|
|
|
808
807
|
worker_thread.start()
|
|
809
808
|
websocket_server_thread = WebsocketServerThread(read=True)
|
|
810
809
|
websocket_server_thread.start()
|
|
811
|
-
|
|
810
|
+
if is_windows():
|
|
811
|
+
add_ss_hotkey(ss_hotkey)
|
|
812
812
|
try:
|
|
813
813
|
while not done:
|
|
814
814
|
time.sleep(1)
|
GameSentenceMiner/util/ffmpeg.py
CHANGED
|
@@ -228,9 +228,19 @@ def get_screenshot(video_file, screenshot_timing, try_selector=False):
|
|
|
228
228
|
output_image = make_unique_file_name(os.path.join(
|
|
229
229
|
get_temporary_directory(), f"{obs.get_current_game(sanitize=True)}.{get_config().screenshot.extension}"))
|
|
230
230
|
|
|
231
|
+
pre_input_args = []
|
|
232
|
+
pre_input_args_string = ""
|
|
233
|
+
if get_config().screenshot.custom_ffmpeg_settings:
|
|
234
|
+
if '-hwaccel' in get_config().screenshot.custom_ffmpeg_settings:
|
|
235
|
+
hwaccel_args = get_config().screenshot.custom_ffmpeg_settings.split(" ")
|
|
236
|
+
hwaccel_index = hwaccel_args.index('-hwaccel')
|
|
237
|
+
pre_input_args.extend(hwaccel_args[hwaccel_index:hwaccel_index + 2])
|
|
238
|
+
pre_input_args_string = " ".join(pre_input_args)
|
|
239
|
+
|
|
231
240
|
# Base command for extracting the frame
|
|
232
241
|
ffmpeg_command = ffmpeg_base_command_list + [
|
|
233
242
|
"-ss", f"{screenshot_timing}",
|
|
243
|
+
] + pre_input_args + [
|
|
234
244
|
"-i", f"{video_file}",
|
|
235
245
|
"-vframes", "1" # Extract only one frame
|
|
236
246
|
]
|
|
@@ -252,7 +262,7 @@ def get_screenshot(video_file, screenshot_timing, try_selector=False):
|
|
|
252
262
|
ffmpeg_command.extend(["-vf", ",".join(video_filters)])
|
|
253
263
|
|
|
254
264
|
if get_config().screenshot.custom_ffmpeg_settings:
|
|
255
|
-
ffmpeg_command.extend(get_config().screenshot.custom_ffmpeg_settings.replace("\"", "").
|
|
265
|
+
ffmpeg_command.extend(get_config().screenshot.custom_ffmpeg_settings.replace("\"", "").replace(pre_input_args_string, "").split())
|
|
256
266
|
else:
|
|
257
267
|
# Ensure quality settings are strings
|
|
258
268
|
ffmpeg_command.extend(["-compression_level", "6", "-q:v", str(get_config().screenshot.quality)])
|
|
@@ -598,14 +608,23 @@ def get_screenshot_time(video_path, game_line, default_beginning=False, vad_resu
|
|
|
598
608
|
def process_image(image_file):
|
|
599
609
|
output_image = make_unique_file_name(
|
|
600
610
|
os.path.join(get_temporary_directory(), f"{obs.get_current_game(sanitize=True)}.{get_config().screenshot.extension}"))
|
|
611
|
+
|
|
612
|
+
pre_input_args = []
|
|
613
|
+
pre_input_args_string = ""
|
|
614
|
+
if get_config().screenshot.custom_ffmpeg_settings:
|
|
615
|
+
if '-hwaccel' in get_config().screenshot.custom_ffmpeg_settings:
|
|
616
|
+
hwaccel_args = get_config().screenshot.custom_ffmpeg_settings.split()
|
|
617
|
+
hwaccel_index = hwaccel_args.index('-hwaccel')
|
|
618
|
+
pre_input_args.extend(hwaccel_args[hwaccel_index:hwaccel_index + 2])
|
|
619
|
+
pre_input_args_string = " ".join(pre_input_args)
|
|
601
620
|
|
|
602
621
|
# FFmpeg command to process the input image
|
|
603
|
-
ffmpeg_command = ffmpeg_base_command_list + [
|
|
622
|
+
ffmpeg_command = ffmpeg_base_command_list + pre_input_args + [
|
|
604
623
|
"-i", image_file
|
|
605
624
|
]
|
|
606
625
|
|
|
607
626
|
if get_config().screenshot.custom_ffmpeg_settings:
|
|
608
|
-
ffmpeg_command.extend(get_config().screenshot.custom_ffmpeg_settings.
|
|
627
|
+
ffmpeg_command.extend(get_config().screenshot.custom_ffmpeg_settings.replace(pre_input_args_string, "").split())
|
|
609
628
|
else:
|
|
610
629
|
ffmpeg_command.extend(["-compression_level", "6", "-q:v", get_config().screenshot.quality])
|
|
611
630
|
|
|
@@ -769,7 +788,7 @@ def reencode_file_with_user_config(input_file, final_output_audio, user_ffmpeg_o
|
|
|
769
788
|
command = ffmpeg_base_command_list + [
|
|
770
789
|
"-i", input_file,
|
|
771
790
|
"-map", "0:a"
|
|
772
|
-
] + user_ffmpeg_options.replace("\"", "").split(
|
|
791
|
+
] + user_ffmpeg_options.replace("\"", "").split() + [
|
|
773
792
|
temp_file
|
|
774
793
|
]
|
|
775
794
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: GameSentenceMiner
|
|
3
|
-
Version: 2.19.
|
|
3
|
+
Version: 2.19.17
|
|
4
4
|
Summary: A tool for mining sentences from games. Update: Dependencies, replay buffer based line searching, and bug fixes.
|
|
5
5
|
Author-email: Beangate <bpwhelan95@gmail.com>
|
|
6
6
|
License: MIT License
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
GameSentenceMiner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
GameSentenceMiner/anki.py,sha256=SvmkL-7AqMKtCWfgwyxALvEHBOoxmQabi_uSYahf5nU,29982
|
|
3
3
|
GameSentenceMiner/gametext.py,sha256=4PPm7QSWDmvsyooVjFANkd1Vnoy5ixbGRMHfYfhwGs0,13320
|
|
4
|
-
GameSentenceMiner/gsm.py,sha256=
|
|
4
|
+
GameSentenceMiner/gsm.py,sha256=yMqKvDZysR2gDnaf2EgOBr_naLvWOPJLBK3rrK9M1Ps,36964
|
|
5
5
|
GameSentenceMiner/obs.py,sha256=UB4_OJ-vZQbHyuupB8JmwhSFdYyQX_5f5TpRXU1D7Kk,43300
|
|
6
6
|
GameSentenceMiner/vad.py,sha256=iMSsoUZ7-aNoWKzDKfOHdB3Zk5U2hV7x5hqTny6rj08,21501
|
|
7
7
|
GameSentenceMiner/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -21,7 +21,7 @@ GameSentenceMiner/ocr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
|
21
21
|
GameSentenceMiner/ocr/gsm_ocr_config.py,sha256=Ov04c-nKzh3sADxO-5JyZWVe4DlrHM9edM9tc7-97Jo,5970
|
|
22
22
|
GameSentenceMiner/ocr/ocrconfig.py,sha256=_tY8mjnzHMJrLS8E5pHqYXZjMuLoGKYgJwdhYgN-ny4,6466
|
|
23
23
|
GameSentenceMiner/ocr/owocr_area_selector.py,sha256=1-PlCOpam8-D4tGQVuhxeVVQc9sy5Mfyvcyqgj2Vqyw,29587
|
|
24
|
-
GameSentenceMiner/ocr/owocr_helper.py,sha256=
|
|
24
|
+
GameSentenceMiner/ocr/owocr_helper.py,sha256=gqQ8e-hy0fjdrXgDE9P11CAQOGtmsSl4Ce_gOxQEqkc,36896
|
|
25
25
|
GameSentenceMiner/ocr/ss_picker.py,sha256=0IhxUdaKruFpZyBL-8SpxWg7bPrlGpy3lhTcMMZ5rwo,5224
|
|
26
26
|
GameSentenceMiner/owocr/owocr/__init__.py,sha256=87hfN5u_PbL_onLfMACbc0F5j4KyIK9lKnRCj6oZgR0,49
|
|
27
27
|
GameSentenceMiner/owocr/owocr/__main__.py,sha256=XQaqZY99EKoCpU-gWQjNbTs7Kg17HvBVE7JY8LqIE0o,157
|
|
@@ -45,7 +45,7 @@ GameSentenceMiner/util/audio_player.py,sha256=-yFsf0qoTSS1ga5rCmEJZJGUSJzXCvfZHY
|
|
|
45
45
|
GameSentenceMiner/util/configuration.py,sha256=lmk0CEGbu-wFU40O-1X8MvLZNNpNT3g1apghgOjidCM,49265
|
|
46
46
|
GameSentenceMiner/util/db.py,sha256=iCHUzlgOJgNjQ5-oDa7gnDWmzdlEryOzbXfn9ToQPfY,33034
|
|
47
47
|
GameSentenceMiner/util/electron_config.py,sha256=KfeJToeFFVw0IR5MKa-gBzpzaGrU-lyJbR9z-sDEHYU,8767
|
|
48
|
-
GameSentenceMiner/util/ffmpeg.py,sha256=
|
|
48
|
+
GameSentenceMiner/util/ffmpeg.py,sha256=tK-bSfmODmCPqi5y5tXitCInhx-4Et5iAa1fucYDvnQ,41150
|
|
49
49
|
GameSentenceMiner/util/games_table.py,sha256=VM68MAsdyE6tpdwM4bDSk67qioBOvsEO8-TpnRmUnSo,12003
|
|
50
50
|
GameSentenceMiner/util/get_overlay_coords.py,sha256=jQ0hcrEh9CfvjlBRJez3Ly-er4MjBWC2zirA-hYz5hQ,26462
|
|
51
51
|
GameSentenceMiner/util/gsm_utils.py,sha256=mASECTmN10c2yPL4NEfLg0Y0YWwFso1i6r_hhJPR3MY,10974
|
|
@@ -135,9 +135,9 @@ GameSentenceMiner/web/templates/components/kanji_grid/thousand_character_classic
|
|
|
135
135
|
GameSentenceMiner/web/templates/components/kanji_grid/wanikani_levels.json,sha256=8wjnnaYQqmho6t5tMxrIAc03512A2tYhQh5dfsQnfAM,11372
|
|
136
136
|
GameSentenceMiner/web/templates/components/kanji_grid/words_hk_frequency_list.json,sha256=wRkqZNPzz6DT9OTPHpXwfqW96Qb96stCQNNgOL-ZdKk,17535
|
|
137
137
|
GameSentenceMiner/wip/__init___.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
138
|
-
gamesentenceminer-2.19.
|
|
139
|
-
gamesentenceminer-2.19.
|
|
140
|
-
gamesentenceminer-2.19.
|
|
141
|
-
gamesentenceminer-2.19.
|
|
142
|
-
gamesentenceminer-2.19.
|
|
143
|
-
gamesentenceminer-2.19.
|
|
138
|
+
gamesentenceminer-2.19.17.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
139
|
+
gamesentenceminer-2.19.17.dist-info/METADATA,sha256=c6GkA9_ukfEfIFZokGYfucUlWoZ7WqVn3vl3MI4ygx4,8187
|
|
140
|
+
gamesentenceminer-2.19.17.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
141
|
+
gamesentenceminer-2.19.17.dist-info/entry_points.txt,sha256=2APEP25DbfjSxGeHtwBstMH8mulVhLkqF_b9bqzU6vQ,65
|
|
142
|
+
gamesentenceminer-2.19.17.dist-info/top_level.txt,sha256=V1hUY6xVSyUEohb0uDoN4UIE6rUZ_JYx8yMyPGX4PgQ,18
|
|
143
|
+
gamesentenceminer-2.19.17.dist-info/RECORD,,
|
|
File without changes
|
{gamesentenceminer-2.19.15.dist-info → gamesentenceminer-2.19.17.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.15.dist-info → gamesentenceminer-2.19.17.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|