GameSentenceMiner 2.12.1__tar.gz → 2.12.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.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/config_gui.py +25 -1
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/gametext.py +4 -2
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/obs.py +50 -1
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/configuration.py +1 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/wip/get_overlay_coords.py +17 -4
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner.egg-info/PKG-INFO +1 -1
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/PKG-INFO +1 -1
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/pyproject.toml +1 -1
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/__init__.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/ai/__init__.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/ai/ai_prompting.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/anki.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/assets/__init__.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/assets/icon.png +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/assets/icon128.png +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/assets/icon256.png +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/assets/icon32.png +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/assets/icon512.png +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/assets/icon64.png +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/assets/pickaxe.png +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/gsm.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/ocr/__init__.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/ocr/gsm_ocr_config.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/ocr/ocrconfig.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/ocr/owocr_area_selector.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/ocr/owocr_helper.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/ocr/ss_picker.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/owocr/owocr/__init__.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/owocr/owocr/__main__.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/owocr/owocr/config.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/owocr/owocr/lens_betterproto.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/owocr/owocr/ocr.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/owocr/owocr/run.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/owocr/owocr/screen_coordinate_picker.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/__init__.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/audio_offset_selector.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/communication/__init__.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/communication/send.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/communication/websocket.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/downloader/Untitled_json.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/downloader/__init__.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/downloader/download_tools.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/downloader/oneocr_dl.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/electron_config.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/ffmpeg.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/gsm_utils.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/model.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/notification.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/package.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/ss_selector.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/text_log.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/window_transparency.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/vad.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/__init__.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/service.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/static/__init__.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/static/apple-touch-icon.png +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/static/favicon-96x96.png +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/static/favicon.ico +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/static/favicon.svg +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/static/site.webmanifest +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/static/style.css +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/static/web-app-manifest-192x192.png +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/static/web-app-manifest-512x512.png +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/templates/__init__.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/templates/index.html +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/templates/text_replacements.html +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/templates/utility.html +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/texthooking_page.py +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner.egg-info/SOURCES.txt +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner.egg-info/dependency_links.txt +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner.egg-info/entry_points.txt +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner.egg-info/requires.txt +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner.egg-info/top_level.txt +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/LICENSE +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/README.md +0 -0
- {gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/setup.cfg +0 -0
@@ -139,6 +139,16 @@ class ConfigApp:
|
|
139
139
|
self.ai_tab = None
|
140
140
|
self.advanced_tab = None
|
141
141
|
self.wip_tab = None
|
142
|
+
self.monitors = []
|
143
|
+
|
144
|
+
try:
|
145
|
+
import mss as mss
|
146
|
+
self.monitors = [f"Monitor {i}: width: {monitor['width']}, height: {monitor['height']}" for i, monitor in enumerate(mss.mss().monitors[1:], start=1)]
|
147
|
+
print(self.monitors)
|
148
|
+
if len(self.monitors) == 0:
|
149
|
+
self.monitors = [1]
|
150
|
+
except ImportError:
|
151
|
+
self.monitors = []
|
142
152
|
|
143
153
|
self.create_tabs()
|
144
154
|
|
@@ -375,7 +385,8 @@ class ConfigApp:
|
|
375
385
|
),
|
376
386
|
wip=WIP(
|
377
387
|
overlay_websocket_port=int(self.overlay_websocket_port.get()),
|
378
|
-
overlay_websocket_send=self.overlay_websocket_send.get()
|
388
|
+
overlay_websocket_send=self.overlay_websocket_send.get(),
|
389
|
+
monitor_to_capture=self.monitor_to_capture.current()
|
379
390
|
)
|
380
391
|
)
|
381
392
|
|
@@ -1743,6 +1754,19 @@ class ConfigApp:
|
|
1743
1754
|
row=self.current_row, column=1, sticky='W', pady=2)
|
1744
1755
|
self.current_row += 1
|
1745
1756
|
|
1757
|
+
HoverInfoLabelWidget(wip_frame, text="Monitor to Capture:",
|
1758
|
+
tooltip="Select the monitor to capture (1-based index).",
|
1759
|
+
row=self.current_row, column=0)
|
1760
|
+
self.monitor_to_capture = ttk.Combobox(wip_frame, values=self.monitors, state="readonly")
|
1761
|
+
|
1762
|
+
# set index of monitor to capture, not the string
|
1763
|
+
if self.monitors:
|
1764
|
+
self.monitor_to_capture.current(self.settings.wip.monitor_to_capture)
|
1765
|
+
else:
|
1766
|
+
self.monitor_to_capture.set("OwOCR Not Detected")
|
1767
|
+
self.monitor_to_capture.grid(row=self.current_row, column=1, sticky='EW', pady=2)
|
1768
|
+
self.current_row += 1
|
1769
|
+
|
1746
1770
|
self.add_reset_button(wip_frame, "wip", self.current_row, 0, self.create_wip_tab)
|
1747
1771
|
|
1748
1772
|
for col in range(2):
|
@@ -10,7 +10,9 @@ from GameSentenceMiner.util.gsm_utils import do_text_replacements, TEXT_REPLACEM
|
|
10
10
|
from GameSentenceMiner.util.configuration import *
|
11
11
|
from GameSentenceMiner.util.text_log import *
|
12
12
|
from GameSentenceMiner.web.texthooking_page import add_event_to_texthooker, send_word_coordinates_to_overlay, overlay_server_thread
|
13
|
-
|
13
|
+
|
14
|
+
if get_config().wip.overlay_websocket_send:
|
15
|
+
import GameSentenceMiner.wip.get_overlay_coords as get_overlay_coords
|
14
16
|
|
15
17
|
current_line = ''
|
16
18
|
current_line_after_regex = ''
|
@@ -135,7 +137,7 @@ async def find_box_for_sentence(sentence):
|
|
135
137
|
boxes = []
|
136
138
|
logger.info(f"Finding Box for Sentence: {sentence}")
|
137
139
|
boxes, font_size = await get_overlay_coords.find_box_for_sentence(sentence)
|
138
|
-
logger.info(f"Found Boxes: {boxes}, Font Size: {font_size}")
|
140
|
+
# logger.info(f"Found Boxes: {boxes}, Font Size: {font_size}")
|
139
141
|
# if boxes:
|
140
142
|
# x1, y1, x2, y2 = box
|
141
143
|
# boxes.append({'sentence': sentence, 'x1': x1, 'y1': y1, 'x2': x2, 'y2': y2, 'fontSize': font_size})
|
@@ -383,7 +383,33 @@ def get_screenshot_base64(compression=75, width=None, height=None):
|
|
383
383
|
except Exception as e:
|
384
384
|
logger.error(f"Error getting screenshot: {e}")
|
385
385
|
return None
|
386
|
+
|
386
387
|
|
388
|
+
def get_screenshot_PIL(compression=75, img_format='png', width=None, height=None, retry=3):
|
389
|
+
import io
|
390
|
+
import base64
|
391
|
+
from PIL import Image
|
392
|
+
while True:
|
393
|
+
response = client.get_source_screenshot(name=get_current_game(), img_format=img_format, quality=compression, width=width, height=height)
|
394
|
+
try:
|
395
|
+
response.image_data = response.image_data.split(',', 1)[-1] # Remove data:image/png;base64, prefix if present
|
396
|
+
except AttributeError:
|
397
|
+
retry -= 1
|
398
|
+
if retry <= 0:
|
399
|
+
logger.error(f"Error getting screenshot: {response}")
|
400
|
+
return None
|
401
|
+
continue
|
402
|
+
if response and response.image_data:
|
403
|
+
image_data = response.image_data.split(',', 1)[-1] # Remove data:image/png;base64, prefix if present
|
404
|
+
image_data = base64.b64decode(image_data)
|
405
|
+
img = Image.open(io.BytesIO(image_data)).convert("RGBA")
|
406
|
+
# if width and height:
|
407
|
+
# img = img.resize((width, height), Image.Resampling.LANCZOS)
|
408
|
+
return img
|
409
|
+
return None
|
410
|
+
|
411
|
+
|
412
|
+
|
387
413
|
|
388
414
|
def update_current_game():
|
389
415
|
gsm_state.current_game = get_current_scene()
|
@@ -433,8 +459,31 @@ def main():
|
|
433
459
|
disconnect_from_obs()
|
434
460
|
|
435
461
|
if __name__ == '__main__':
|
462
|
+
from mss import mss
|
436
463
|
logging.basicConfig(level=logging.INFO)
|
437
464
|
# main()
|
438
465
|
connect_to_obs_sync()
|
439
|
-
|
466
|
+
i = 100
|
467
|
+
# for i in range(1, 100):
|
468
|
+
print(f"Getting screenshot {i}")
|
469
|
+
start = time.time()
|
470
|
+
# get_screenshot(compression=95)
|
471
|
+
# get_screenshot_base64(compression=95, width=1280, height=720)
|
472
|
+
img = get_screenshot_PIL(compression=i, img_format='png')
|
473
|
+
end = time.time()
|
474
|
+
print(f"Time taken to get screenshot with compression {i}: {end - start} seconds")
|
475
|
+
img.show()
|
476
|
+
|
477
|
+
|
478
|
+
start = time.time()
|
479
|
+
with mss() as sct:
|
480
|
+
monitor = sct.monitors[1]
|
481
|
+
sct_img = sct.grab(monitor)
|
482
|
+
img = Image.frombytes('RGB', sct_img.size, sct_img.bgra, 'raw', 'BGRX')
|
483
|
+
img.show()
|
484
|
+
end = time.time()
|
485
|
+
print(f"Time taken to get screenshot with mss: {end - start} seconds")
|
486
|
+
|
487
|
+
|
488
|
+
# print(get_screenshot_base64(compression=75, width=1280, height=720))
|
440
489
|
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/wip/get_overlay_coords.py
RENAMED
@@ -108,11 +108,24 @@ async def get_full_screenshot() -> Image.Image | None:
|
|
108
108
|
|
109
109
|
logger.info("Getting Screenshot from OBS")
|
110
110
|
try:
|
111
|
-
|
111
|
+
import mss as mss
|
112
112
|
start_time = time.time()
|
113
|
-
|
114
|
-
|
115
|
-
|
113
|
+
with mss.mss() as sct:
|
114
|
+
monitors = sct.monitors
|
115
|
+
if len(monitors) > 1:
|
116
|
+
monitors = monitors[1:]
|
117
|
+
else:
|
118
|
+
monitors = [monitors[0]]
|
119
|
+
monitor = monitors[get_config().wip.monitor_to_capture]
|
120
|
+
sct_img = sct.grab(monitor)
|
121
|
+
img = Image.frombytes('RGB', sct_img.size, sct_img.bgra, 'raw', 'BGRX')
|
122
|
+
# img.show()
|
123
|
+
return img
|
124
|
+
# update_current_game()
|
125
|
+
|
126
|
+
# image_data = get_screenshot_base64(compression=75, width=1280, height=720)
|
127
|
+
# image_data = base64.b64decode(image_data)
|
128
|
+
# img = Image.open(io.BytesIO(image_data)).convert("RGBA").resize((WIDTH, HEIGHT), Image.Resampling.LANCZOS)
|
116
129
|
# img.show()
|
117
130
|
logger.info(f"Screenshot captured in {time.time() - start_time:.2f} seconds.")
|
118
131
|
|
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.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/ocr/gsm_ocr_config.py
RENAMED
File without changes
|
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/ocr/owocr_area_selector.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/owocr/owocr/__init__.py
RENAMED
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/owocr/owocr/__main__.py
RENAMED
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.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
|
File without changes
|
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/communication/send.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/downloader/__init__.py
RENAMED
File without changes
|
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/downloader/oneocr_dl.py
RENAMED
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/electron_config.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/notification.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/util/window_transparency.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/static/__init__.py
RENAMED
File without changes
|
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/static/favicon-96x96.png
RENAMED
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/static/favicon.ico
RENAMED
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/static/favicon.svg
RENAMED
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/static/site.webmanifest
RENAMED
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/static/style.css
RENAMED
File without changes
|
File without changes
|
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/templates/__init__.py
RENAMED
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/templates/index.html
RENAMED
File without changes
|
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/templates/utility.html
RENAMED
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner/web/texthooking_page.py
RENAMED
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner.egg-info/SOURCES.txt
RENAMED
File without changes
|
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner.egg-info/entry_points.txt
RENAMED
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner.egg-info/requires.txt
RENAMED
File without changes
|
{gamesentenceminer-2.12.1 → gamesentenceminer-2.12.3}/GameSentenceMiner.egg-info/top_level.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|