GameSentenceMiner 2.14.1__tar.gz → 2.14.3__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.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/gametext.py +9 -4
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/owocr/owocr/ocr.py +7 -1
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/get_overlay_coords.py +37 -16
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner.egg-info/PKG-INFO +1 -1
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/PKG-INFO +1 -1
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/pyproject.toml +1 -1
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/__init__.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/ai/__init__.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/ai/ai_prompting.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/anki.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/assets/__init__.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/assets/icon.png +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/assets/icon128.png +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/assets/icon256.png +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/assets/icon32.png +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/assets/icon512.png +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/assets/icon64.png +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/assets/pickaxe.png +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/config_gui.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/gsm.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/locales/en_us.json +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/locales/ja_jp.json +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/locales/zh_cn.json +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/obs.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/ocr/__init__.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/ocr/gsm_ocr_config.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/ocr/ocrconfig.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/ocr/owocr_area_selector.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/ocr/owocr_helper.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/ocr/ss_picker.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/owocr/owocr/__init__.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/owocr/owocr/__main__.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/owocr/owocr/config.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/owocr/owocr/lens_betterproto.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/owocr/owocr/run.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/owocr/owocr/screen_coordinate_picker.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/tools/__init__.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/tools/audio_offset_selector.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/tools/ss_selector.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/tools/window_transparency.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/__init__.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/communication/__init__.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/communication/send.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/communication/websocket.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/configuration.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/db.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/downloader/Untitled_json.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/downloader/__init__.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/downloader/download_tools.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/downloader/oneocr_dl.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/electron_config.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/ffmpeg.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/gsm_utils.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/model.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/notification.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/text_log.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/vad.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/__init__.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/service.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/static/__init__.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/static/apple-touch-icon.png +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/static/favicon-96x96.png +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/static/favicon.ico +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/static/favicon.svg +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/static/site.webmanifest +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/static/style.css +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/static/web-app-manifest-192x192.png +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/static/web-app-manifest-512x512.png +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/templates/__init__.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/templates/index.html +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/templates/text_replacements.html +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/templates/utility.html +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/texthooking_page.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/wip/__init___.py +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner.egg-info/SOURCES.txt +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner.egg-info/dependency_links.txt +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner.egg-info/entry_points.txt +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner.egg-info/requires.txt +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner.egg-info/top_level.txt +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/LICENSE +0 -0
- {gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/setup.cfg +0 -0
@@ -7,12 +7,14 @@ import websockets
|
|
7
7
|
from websockets import InvalidStatus
|
8
8
|
from rapidfuzz import fuzz
|
9
9
|
|
10
|
+
|
10
11
|
from GameSentenceMiner.util.db import GameLinesTable
|
11
12
|
from GameSentenceMiner.util.gsm_utils import do_text_replacements, TEXT_REPLACEMENTS_FILE, run_new_thread
|
12
13
|
from GameSentenceMiner.util.configuration import *
|
13
14
|
from GameSentenceMiner.util.text_log import *
|
14
15
|
from GameSentenceMiner import obs
|
15
|
-
from GameSentenceMiner.web.texthooking_page import add_event_to_texthooker,
|
16
|
+
from GameSentenceMiner.web.texthooking_page import add_event_to_texthooker, overlay_server_thread
|
17
|
+
|
16
18
|
from GameSentenceMiner.util.get_overlay_coords import OverlayProcessor
|
17
19
|
|
18
20
|
|
@@ -29,8 +31,7 @@ last_clipboard = ''
|
|
29
31
|
|
30
32
|
reconnecting = False
|
31
33
|
websocket_connected = {}
|
32
|
-
|
33
|
-
overlay_processor = OverlayProcessor()
|
34
|
+
overlay_processor = None
|
34
35
|
|
35
36
|
async def monitor_clipboard():
|
36
37
|
global current_line, last_clipboard
|
@@ -179,6 +180,7 @@ async def handle_new_text_event(current_clipboard, line_time=None):
|
|
179
180
|
|
180
181
|
|
181
182
|
async def add_line_to_text_log(line, line_time=None):
|
183
|
+
global overlay_processor
|
182
184
|
if get_config().general.texthook_replacement_regex:
|
183
185
|
current_line_after_regex = re.sub(get_config().general.texthook_replacement_regex, '', line)
|
184
186
|
else:
|
@@ -191,7 +193,10 @@ async def add_line_to_text_log(line, line_time=None):
|
|
191
193
|
if len(get_text_log().values) > 0:
|
192
194
|
await add_event_to_texthooker(get_text_log()[-1])
|
193
195
|
if get_config().overlay.websocket_port and overlay_server_thread.has_clients():
|
194
|
-
|
196
|
+
if not overlay_processor:
|
197
|
+
overlay_processor = OverlayProcessor()
|
198
|
+
if overlay_processor.ready:
|
199
|
+
await overlay_processor.find_box_and_send_to_overlay(current_line_after_regex)
|
195
200
|
GameLinesTable.add_line(get_text_log()[-1])
|
196
201
|
|
197
202
|
|
@@ -71,7 +71,12 @@ except ImportError:
|
|
71
71
|
pass
|
72
72
|
|
73
73
|
try:
|
74
|
-
|
74
|
+
try:
|
75
|
+
if os.path.exists(os.path.expanduser('~/.config/oneocr/oneocr.dll')):
|
76
|
+
import oneocr
|
77
|
+
except Exception as e:
|
78
|
+
oneocr = None
|
79
|
+
logger.warning(f'Failed to import OneOCR: {e}', exc_info=True)
|
75
80
|
except ImportError:
|
76
81
|
pass
|
77
82
|
|
@@ -870,6 +875,7 @@ class OneOCR:
|
|
870
875
|
logger.warning('OneOCR DLLs not found, please install OwOCR Dependencies via OCR Tab in GSM.')
|
871
876
|
else:
|
872
877
|
try:
|
878
|
+
logger.info(f'Loading OneOCR model')
|
873
879
|
self.model = oneocr.OcrEngine()
|
874
880
|
except RuntimeError as e:
|
875
881
|
logger.warning(e + ', OneOCR will not work!')
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/get_overlay_coords.py
RENAMED
@@ -8,16 +8,24 @@ from PIL import Image
|
|
8
8
|
from typing import Dict, Any, List, Tuple
|
9
9
|
|
10
10
|
# Local application imports
|
11
|
-
from GameSentenceMiner.
|
11
|
+
from GameSentenceMiner.ocr.gsm_ocr_config import set_dpi_awareness
|
12
|
+
from GameSentenceMiner.util.configuration import get_config, is_windows
|
12
13
|
from GameSentenceMiner.util.electron_config import get_ocr_language
|
13
14
|
from GameSentenceMiner.obs import get_screenshot_PIL, logger
|
14
15
|
from GameSentenceMiner.web.texthooking_page import send_word_coordinates_to_overlay
|
15
16
|
|
16
17
|
# Conditionally import OCR engines
|
17
18
|
try:
|
18
|
-
|
19
|
-
|
19
|
+
if os.path.exists(os.path.expanduser('~/.config/oneocr/oneocr.dll')):
|
20
|
+
from GameSentenceMiner.owocr.owocr.ocr import OneOCR
|
21
|
+
else:
|
22
|
+
OneOCR = None
|
23
|
+
from GameSentenceMiner.owocr.owocr.ocr import GoogleLens, get_regex
|
24
|
+
except ImportError as import_err:
|
25
|
+
GoogleLens, OneOCR, get_regex = None, None, None
|
26
|
+
except Exception as e:
|
20
27
|
GoogleLens, OneOCR, get_regex = None, None, None
|
28
|
+
logger.error(f"Error importing OCR engines: {e}", exc_info=True)
|
21
29
|
|
22
30
|
# Conditionally import screenshot library
|
23
31
|
try:
|
@@ -40,19 +48,31 @@ class OverlayProcessor:
|
|
40
48
|
self.oneocr = None
|
41
49
|
self.lens = None
|
42
50
|
self.regex = None
|
51
|
+
self.ready = False
|
43
52
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
+
try:
|
54
|
+
if self.config.overlay.websocket_port and all([GoogleLens, get_regex]):
|
55
|
+
logger.info("Initializing OCR engines...")
|
56
|
+
if OneOCR:
|
57
|
+
self.oneocr = OneOCR(lang=get_ocr_language())
|
58
|
+
self.lens = GoogleLens(lang=get_ocr_language())
|
59
|
+
self.ocr_language = get_ocr_language()
|
60
|
+
self.regex = get_regex(self.ocr_language)
|
61
|
+
logger.info("OCR engines initialized.")
|
62
|
+
self.ready = True
|
63
|
+
else:
|
64
|
+
logger.warning("OCR dependencies not found or websocket port not configured. OCR functionality will be disabled.")
|
53
65
|
|
54
|
-
|
55
|
-
|
66
|
+
if is_windows:
|
67
|
+
set_dpi_awareness()
|
68
|
+
|
69
|
+
if not mss:
|
70
|
+
logger.warning("MSS library not found. Screenshot functionality may be limited.")
|
71
|
+
except Exception as e:
|
72
|
+
logger.error(f"Error initializing OCR engines for overlay, try installing owocr in OCR tab of GSM: {e}", exc_info=True)
|
73
|
+
self.oneocr = None
|
74
|
+
self.lens = None
|
75
|
+
self.regex = None
|
56
76
|
|
57
77
|
async def find_box_and_send_to_overlay(self, sentence_to_check: str = None):
|
58
78
|
"""
|
@@ -124,8 +144,9 @@ class OverlayProcessor:
|
|
124
144
|
|
125
145
|
async def _do_work(self, sentence_to_check: str = None) -> Tuple[List[Dict[str, Any]], int]:
|
126
146
|
"""The main OCR workflow."""
|
127
|
-
if not self.
|
128
|
-
|
147
|
+
if not self.lens:
|
148
|
+
logger.error("OCR engines are not initialized. Cannot perform OCR for Overlay.")
|
149
|
+
return []
|
129
150
|
|
130
151
|
# 1. Get screenshot
|
131
152
|
full_screenshot, monitor_width, monitor_height = self._get_full_screenshot()
|
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
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/ocr/gsm_ocr_config.py
RENAMED
File without changes
|
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/ocr/owocr_area_selector.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/owocr/owocr/__init__.py
RENAMED
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/owocr/owocr/__main__.py
RENAMED
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/owocr/owocr/config.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/tools/ss_selector.py
RENAMED
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/tools/window_transparency.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/communication/send.py
RENAMED
File without changes
|
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/configuration.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/downloader/__init__.py
RENAMED
File without changes
|
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/downloader/oneocr_dl.py
RENAMED
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/electron_config.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/util/notification.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/static/__init__.py
RENAMED
File without changes
|
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/static/favicon-96x96.png
RENAMED
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/static/favicon.ico
RENAMED
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/static/favicon.svg
RENAMED
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/static/site.webmanifest
RENAMED
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/static/style.css
RENAMED
File without changes
|
File without changes
|
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/templates/__init__.py
RENAMED
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/templates/index.html
RENAMED
File without changes
|
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/templates/utility.html
RENAMED
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner/web/texthooking_page.py
RENAMED
File without changes
|
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner.egg-info/SOURCES.txt
RENAMED
File without changes
|
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner.egg-info/entry_points.txt
RENAMED
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner.egg-info/requires.txt
RENAMED
File without changes
|
{gamesentenceminer-2.14.1 → gamesentenceminer-2.14.3}/GameSentenceMiner.egg-info/top_level.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|