GameSentenceMiner 2.16.1__py3-none-any.whl → 2.16.3__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/config_gui.py +15 -3
- GameSentenceMiner/gsm.py +0 -1
- GameSentenceMiner/locales/en_us.json +4 -0
- GameSentenceMiner/locales/ja_jp.json +4 -0
- GameSentenceMiner/locales/zh_cn.json +4 -0
- GameSentenceMiner/util/configuration.py +5 -0
- GameSentenceMiner/util/db.py +33 -0
- GameSentenceMiner/util/get_overlay_coords.py +59 -2
- GameSentenceMiner/vad.py +2 -2
- GameSentenceMiner/web/database_api.py +170 -5
- GameSentenceMiner/web/static/js/shared.js +67 -0
- GameSentenceMiner/web/static/js/stats.js +141 -2
- GameSentenceMiner/web/templates/anki_stats.html +4 -0
- GameSentenceMiner/web/templates/components/navigation.html +4 -1
- GameSentenceMiner/web/templates/database.html +3 -0
- GameSentenceMiner/web/templates/index.html +12 -12
- GameSentenceMiner/web/templates/search.html +3 -0
- GameSentenceMiner/web/templates/stats.html +36 -0
- GameSentenceMiner/web/texthooking_page.py +7 -1
- {gamesentenceminer-2.16.1.dist-info → gamesentenceminer-2.16.3.dist-info}/METADATA +1 -1
- {gamesentenceminer-2.16.1.dist-info → gamesentenceminer-2.16.3.dist-info}/RECORD +25 -25
- {gamesentenceminer-2.16.1.dist-info → gamesentenceminer-2.16.3.dist-info}/WHEEL +0 -0
- {gamesentenceminer-2.16.1.dist-info → gamesentenceminer-2.16.3.dist-info}/entry_points.txt +0 -0
- {gamesentenceminer-2.16.1.dist-info → gamesentenceminer-2.16.3.dist-info}/licenses/LICENSE +0 -0
- {gamesentenceminer-2.16.1.dist-info → gamesentenceminer-2.16.3.dist-info}/top_level.txt +0 -0
@@ -5,6 +5,9 @@
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
6
|
<title>GSM Search</title>
|
7
7
|
|
8
|
+
<!-- Include html2canvas for screenshot functionality -->
|
9
|
+
<script src="https://cdn.jsdelivr.net/npm/html2canvas@1.4.1/dist/html2canvas.min.js"></script>
|
10
|
+
|
8
11
|
<!-- Include shared theme styles -->
|
9
12
|
{% include 'components/theme-styles.html' %}
|
10
13
|
|
@@ -7,6 +7,9 @@
|
|
7
7
|
<!-- Include Chart.js from a CDN -->
|
8
8
|
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
9
9
|
|
10
|
+
<!-- Include html2canvas for screenshot functionality -->
|
11
|
+
<script src="https://cdn.jsdelivr.net/npm/html2canvas@1.4.1/dist/html2canvas.min.js"></script>
|
12
|
+
|
10
13
|
<!-- Include shared theme styles -->
|
11
14
|
{% include 'components/theme-styles.html' %}
|
12
15
|
|
@@ -310,6 +313,39 @@
|
|
310
313
|
Minimum hours of reading activity required to maintain streak (0.01-24 hours)
|
311
314
|
</small>
|
312
315
|
</div>
|
316
|
+
|
317
|
+
<!-- Import ExStatic Lines Section -->
|
318
|
+
<div style="margin-bottom: 20px; padding-top: 20px; border-top: 1px solid var(--border-color);">
|
319
|
+
<label style="display: block; font-weight: 600; margin-bottom: 8px; color: var(--text-primary);">
|
320
|
+
Import ExStatic Lines
|
321
|
+
</label>
|
322
|
+
<div style="margin-bottom: 10px;">
|
323
|
+
<input
|
324
|
+
type="file"
|
325
|
+
id="exstaticFile"
|
326
|
+
accept=".csv"
|
327
|
+
style="width: 100%; padding: 10px; border: 1px solid var(--border-color); border-radius: 5px; background: var(--bg-tertiary); color: var(--text-primary); font-size: 14px;"
|
328
|
+
>
|
329
|
+
<small style="color: var(--text-tertiary); font-size: 12px; margin-top: 4px; display: block;">
|
330
|
+
Select an ExStatic CSV file to import reading data into GSM
|
331
|
+
</small>
|
332
|
+
</div>
|
333
|
+
<button
|
334
|
+
type="button"
|
335
|
+
id="importExstaticBtn"
|
336
|
+
style="width: 100%; padding: 10px; background: #666; color: white; border: none; border-radius: 5px; font-size: 14px; cursor: not-allowed; margin-bottom: 10px;"
|
337
|
+
disabled
|
338
|
+
>
|
339
|
+
Import ExStatic Lines
|
340
|
+
</button>
|
341
|
+
<div id="importProgress" style="display: none; margin-bottom: 10px;">
|
342
|
+
<div style="background: var(--bg-tertiary); border-radius: 5px; overflow: hidden; height: 20px; position: relative;">
|
343
|
+
<div id="importProgressBar" style="background: var(--primary-color); height: 100%; width: 0%; transition: width 0.3s ease;"></div>
|
344
|
+
<span id="importProgressText" style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 12px; color: var(--text-primary);">0%</span>
|
345
|
+
</div>
|
346
|
+
</div>
|
347
|
+
<div id="importStatus" style="display: none; padding: 10px; border-radius: 5px; font-size: 14px;"></div>
|
348
|
+
</div>
|
313
349
|
</form>
|
314
350
|
|
315
351
|
<div id="settingsError" style="display: none; background: var(--danger-color); color: white; padding: 10px; border-radius: 5px; margin-bottom: 15px; font-size: 14px;"></div>
|
@@ -319,6 +319,10 @@ def anki_stats():
|
|
319
319
|
"""Renders the Anki statistics page."""
|
320
320
|
return render_template('anki_stats.html')
|
321
321
|
|
322
|
+
@app.route('/get_websocket_port', methods=['GET'])
|
323
|
+
def get_websocket_port():
|
324
|
+
return jsonify({"port": websocket_server_thread.get_ws_port_func()}), 200
|
325
|
+
|
322
326
|
|
323
327
|
def get_selected_lines():
|
324
328
|
return [item.line for item in event_manager if item.checked]
|
@@ -351,7 +355,9 @@ def start_web_server():
|
|
351
355
|
if get_config().general.open_multimine_on_startup:
|
352
356
|
open_texthooker()
|
353
357
|
|
354
|
-
#
|
358
|
+
# FOR TEXTHOOKER DEVELOPMENT, UNCOMMENT THE FOLLOWING LINE WITH Flask-CORS INSTALLED:
|
359
|
+
# from flask_cors import CORS
|
360
|
+
# CORS(app, resources={r"/*": {"origins": "http://localhost:5174"}})
|
355
361
|
app.run(host='0.0.0.0', port=port, debug=False)
|
356
362
|
|
357
363
|
|
@@ -1,10 +1,10 @@
|
|
1
1
|
GameSentenceMiner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
2
|
GameSentenceMiner/anki.py,sha256=rm9JuRP-1Eba2wcVQ2PZUMB5P9UMEZ99Fh371K0Qfhk,26319
|
3
|
-
GameSentenceMiner/config_gui.py,sha256=
|
3
|
+
GameSentenceMiner/config_gui.py,sha256=xpv2g7LaKOmv98nHTkOtYpsl3dMFMwmHbp5Ioms2v54,141667
|
4
4
|
GameSentenceMiner/gametext.py,sha256=fgBgLchezpauWELE9Y5G3kVCLfAneD0X4lJFoI3FYbs,10351
|
5
|
-
GameSentenceMiner/gsm.py,sha256=
|
5
|
+
GameSentenceMiner/gsm.py,sha256=CcXGZI8K7cYB9FJfCRaOujlWDk08sQGQXhTiMewMhFg,31889
|
6
6
|
GameSentenceMiner/obs.py,sha256=EyAYhaLvMjoeC-3j7fuvkqZN5logFFanPfb8Wn1C6m0,27296
|
7
|
-
GameSentenceMiner/vad.py,sha256=
|
7
|
+
GameSentenceMiner/vad.py,sha256=ZC1U31C0qHDtWEmk1iYVcNyhrKfKxC1aOZpbP1pv9Oo,20145
|
8
8
|
GameSentenceMiner/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
9
|
GameSentenceMiner/ai/ai_prompting.py,sha256=41xdBzE88Jlt12A0D-T_cMfLO5j6MSxfniOptpwNZm0,24068
|
10
10
|
GameSentenceMiner/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -15,9 +15,9 @@ GameSentenceMiner/assets/icon32.png,sha256=Kww0hU_qke9_22wBuO_Nq0Dv2SfnOLwMhCyGg
|
|
15
15
|
GameSentenceMiner/assets/icon512.png,sha256=HxUj2GHjyQsk8NV433256UxU9phPhtjCY-YB_7W4sqs,192487
|
16
16
|
GameSentenceMiner/assets/icon64.png,sha256=N8xgdZXvhqVQP9QUK3wX5iqxX9LxHljD7c-Bmgim6tM,9301
|
17
17
|
GameSentenceMiner/assets/pickaxe.png,sha256=VfIGyXyIZdzEnVcc4PmG3wszPMO1W4KCT7Q_nFK6eSE,1403829
|
18
|
-
GameSentenceMiner/locales/en_us.json,sha256=
|
19
|
-
GameSentenceMiner/locales/ja_jp.json,sha256=
|
20
|
-
GameSentenceMiner/locales/zh_cn.json,sha256=
|
18
|
+
GameSentenceMiner/locales/en_us.json,sha256=Wc2sOs5JoWB3_oqA5yVmvslPa60Ud-lpGm5g4Mkp8QE,26969
|
19
|
+
GameSentenceMiner/locales/ja_jp.json,sha256=q923lIhVrofKM9ff1puwagGLvIGoV6LRvD_smoAnZn8,28809
|
20
|
+
GameSentenceMiner/locales/zh_cn.json,sha256=8f94Jy66ox7XCLYIbdbBjLSBgSBA3fV3a1meTxutCOw,25062
|
21
21
|
GameSentenceMiner/ocr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
22
|
GameSentenceMiner/ocr/gsm_ocr_config.py,sha256=Ov04c-nKzh3sADxO-5JyZWVe4DlrHM9edM9tc7-97Jo,5970
|
23
23
|
GameSentenceMiner/ocr/ocrconfig.py,sha256=_tY8mjnzHMJrLS8E5pHqYXZjMuLoGKYgJwdhYgN-ny4,6466
|
@@ -37,11 +37,11 @@ GameSentenceMiner/tools/furigana_filter_preview.py,sha256=BXv7FChPEJW_VeG5XYt6su
|
|
37
37
|
GameSentenceMiner/tools/ss_selector.py,sha256=cbjMxiKOCuOfbRvLR_PCRlykBrGtm1LXd6u5czPqkmc,4793
|
38
38
|
GameSentenceMiner/tools/window_transparency.py,sha256=GtbxbmZg0-UYPXhfHff-7IKZyY2DKe4B9GdyovfmpeM,8166
|
39
39
|
GameSentenceMiner/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
40
|
-
GameSentenceMiner/util/configuration.py,sha256=
|
41
|
-
GameSentenceMiner/util/db.py,sha256=
|
40
|
+
GameSentenceMiner/util/configuration.py,sha256=XANq-FJ_9tNFQSQvozHnn7fGnRiiKH82_aPHwyUfd8g,40528
|
41
|
+
GameSentenceMiner/util/db.py,sha256=NjbzSg4vQTfjm8wb5GUnPVvFR4RsnwV65X-IXIG3yRQ,18013
|
42
42
|
GameSentenceMiner/util/electron_config.py,sha256=KfeJToeFFVw0IR5MKa-gBzpzaGrU-lyJbR9z-sDEHYU,8767
|
43
43
|
GameSentenceMiner/util/ffmpeg.py,sha256=jA-cFtCmdCWrUSPpdtFSLr-GSoqs4qNUzW20v4HPHf0,28715
|
44
|
-
GameSentenceMiner/util/get_overlay_coords.py,sha256=
|
44
|
+
GameSentenceMiner/util/get_overlay_coords.py,sha256=TEMxhrBE8302WQj2K5q7SLKUhgNH_J-RjHpkUTQJdcU,17577
|
45
45
|
GameSentenceMiner/util/gsm_utils.py,sha256=Piwv88Q9av2LBeN7M6QDi0Mp0_R2lNbkcI6ekK5hd2o,11851
|
46
46
|
GameSentenceMiner/util/model.py,sha256=R-_RYTYLSDNgBoVTPuPBcIHeOznIqi_vBzQ7VQ20WYk,6727
|
47
47
|
GameSentenceMiner/util/notification.py,sha256=YBhf_mSo_i3cjBz-pmeTPx3wchKiG9BK2VBdZSa2prQ,4597
|
@@ -56,11 +56,11 @@ GameSentenceMiner/util/downloader/oneocr_dl.py,sha256=l3s9Z-x1b57GX048o5h-MVv0UT
|
|
56
56
|
GameSentenceMiner/util/win10toast/__init__.py,sha256=6TL2w6rzNmpJEp6_v2cAJP_7ExA3UsKzwdM08pNcVfE,5341
|
57
57
|
GameSentenceMiner/util/win10toast/__main__.py,sha256=5MYnBcFj8y_6Dyc1kiPd0_FsUuh4yl1cv5wsleU6V4w,668
|
58
58
|
GameSentenceMiner/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
59
|
-
GameSentenceMiner/web/database_api.py,sha256=
|
59
|
+
GameSentenceMiner/web/database_api.py,sha256=uSEgneO9Tq7FxmBmXSXi5Y1_Z37YL0jVb97SpK_qFDo,43088
|
60
60
|
GameSentenceMiner/web/events.py,sha256=6Vyz5c9MdpMIa7Zqljqhap2XFQnAVYJ0CdQV64TSZsA,5119
|
61
61
|
GameSentenceMiner/web/service.py,sha256=YZchmScTn7AX_GkwV1ULEK6qjdOnJcpc3qfMwDf7cUE,5363
|
62
62
|
GameSentenceMiner/web/stats.py,sha256=daSSxWlumAyqVVtX10qHESF-tZYwCcFMp8qZA5AE0nI,22066
|
63
|
-
GameSentenceMiner/web/texthooking_page.py,sha256=
|
63
|
+
GameSentenceMiner/web/texthooking_page.py,sha256=BaYteQHNRvXgxjRUdHVf5Bt8pdPULEThmU4c0yn9fOU,13228
|
64
64
|
GameSentenceMiner/web/websockets.py,sha256=IwwQo6VtgPqeOuc-datgfJyLpX3LwB2MISDqA6EkiSA,4131
|
65
65
|
GameSentenceMiner/web/static/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
66
66
|
GameSentenceMiner/web/static/apple-touch-icon.png,sha256=OcMI8af_68DA_tweOsQ5LytTyMwm7-hPW07IfrOVgEs,46132
|
@@ -79,20 +79,20 @@ GameSentenceMiner/web/static/js/anki_stats.js,sha256=wZfr9vXGF--OTXOszjB3XX1pI2R
|
|
79
79
|
GameSentenceMiner/web/static/js/database.js,sha256=-SjMmhXzU8a3QNGrwGtJCu55ZXXfkBxlYSkySEBdclU,22097
|
80
80
|
GameSentenceMiner/web/static/js/kanji-grid.js,sha256=rUa8_TGFm4Z8CtURoAlZjCN032PLe0YmHvN52S4_sE0,7181
|
81
81
|
GameSentenceMiner/web/static/js/search.js,sha256=nXvHZelCQQlTWJwaF_j3RnU5v_JFVIDQSEtnauDy8lg,9484
|
82
|
-
GameSentenceMiner/web/static/js/shared.js,sha256=
|
83
|
-
GameSentenceMiner/web/static/js/stats.js,sha256=
|
84
|
-
GameSentenceMiner/web/templates/anki_stats.html,sha256=
|
85
|
-
GameSentenceMiner/web/templates/database.html,sha256=
|
86
|
-
GameSentenceMiner/web/templates/index.html,sha256=
|
87
|
-
GameSentenceMiner/web/templates/search.html,sha256=
|
88
|
-
GameSentenceMiner/web/templates/stats.html,sha256=
|
82
|
+
GameSentenceMiner/web/static/js/shared.js,sha256=HdQWRToX9U09h0x35K00RrHFw6mBkCPRf7JoLwN0l0c,18410
|
83
|
+
GameSentenceMiner/web/static/js/stats.js,sha256=EOyM6ZyTQu1IubBQwjnB4mE9vVH7LJwsiUl5Q6LiRCo,66673
|
84
|
+
GameSentenceMiner/web/templates/anki_stats.html,sha256=FdIMl-kY0-3as9Wn0i-wKIIkl1xXn4nWMbWPypN_1T0,10955
|
85
|
+
GameSentenceMiner/web/templates/database.html,sha256=Gd54rgZmfcV7ufoJ69COeMncs5Q5u-rSJcsIvROVCEo,13732
|
86
|
+
GameSentenceMiner/web/templates/index.html,sha256=7ChQ1j602MOiYU95wXAKP_Ezsh_JgdlGz2uXIzS2j0g,227894
|
87
|
+
GameSentenceMiner/web/templates/search.html,sha256=OGfzhNc4QP_kmJdCnEnLm5pzgW6XKERoin0oQZxvg5s,3851
|
88
|
+
GameSentenceMiner/web/templates/stats.html,sha256=sV1nea99Z6oo5ZtVChqAo3dttoU38FaUEpW9SXEv-Bs,19395
|
89
89
|
GameSentenceMiner/web/templates/utility.html,sha256=KtqnZUMAYs5XsEdC9Tlsd40NKAVic0mu6sh-ReMDJpU,16940
|
90
|
-
GameSentenceMiner/web/templates/components/navigation.html,sha256=
|
90
|
+
GameSentenceMiner/web/templates/components/navigation.html,sha256=6y9PvM3nh8LY6JWrZb6zVOm0vqkBLDc6d3gB9X5lT_w,1055
|
91
91
|
GameSentenceMiner/web/templates/components/theme-styles.html,sha256=hiq3zdJljpRjQO1iUA7gfFKwXebltG-IWW-gnKS4GHA,3439
|
92
92
|
GameSentenceMiner/wip/__init___.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
93
|
-
gamesentenceminer-2.16.
|
94
|
-
gamesentenceminer-2.16.
|
95
|
-
gamesentenceminer-2.16.
|
96
|
-
gamesentenceminer-2.16.
|
97
|
-
gamesentenceminer-2.16.
|
98
|
-
gamesentenceminer-2.16.
|
93
|
+
gamesentenceminer-2.16.3.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
94
|
+
gamesentenceminer-2.16.3.dist-info/METADATA,sha256=lGsz20X1lkBNWh1Q0OknNcqbegQiviQnXe2PTSRsHP4,7348
|
95
|
+
gamesentenceminer-2.16.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
96
|
+
gamesentenceminer-2.16.3.dist-info/entry_points.txt,sha256=2APEP25DbfjSxGeHtwBstMH8mulVhLkqF_b9bqzU6vQ,65
|
97
|
+
gamesentenceminer-2.16.3.dist-info/top_level.txt,sha256=V1hUY6xVSyUEohb0uDoN4UIE6rUZ_JYx8yMyPGX4PgQ,18
|
98
|
+
gamesentenceminer-2.16.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|