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.
@@ -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
- # debug=True provides helpful error messages during development
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GameSentenceMiner
3
- Version: 2.16.1
3
+ Version: 2.16.3
4
4
  Summary: A tool for mining sentences from games. Update: Overlay?
5
5
  Author-email: Beangate <bpwhelan95@gmail.com>
6
6
  License: MIT License
@@ -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=i79PrY2pP8_VKvIL7uoDv5cgHvCCQBIe0mS_YnX2AVg,140792
3
+ GameSentenceMiner/config_gui.py,sha256=xpv2g7LaKOmv98nHTkOtYpsl3dMFMwmHbp5Ioms2v54,141667
4
4
  GameSentenceMiner/gametext.py,sha256=fgBgLchezpauWELE9Y5G3kVCLfAneD0X4lJFoI3FYbs,10351
5
- GameSentenceMiner/gsm.py,sha256=t2GAhMwVEHUzCdqM4tIgAzBUvNmt_Gec515iePacD6k,31945
5
+ GameSentenceMiner/gsm.py,sha256=CcXGZI8K7cYB9FJfCRaOujlWDk08sQGQXhTiMewMhFg,31889
6
6
  GameSentenceMiner/obs.py,sha256=EyAYhaLvMjoeC-3j7fuvkqZN5logFFanPfb8Wn1C6m0,27296
7
- GameSentenceMiner/vad.py,sha256=N-urlVOT6ayk4BFuIeZhxK1VxLD4Flxu-IStuy8FAVc,20190
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=4lCV34FnDOe0c02qHlHnfujQedmqHSL-feN3lYCCCfs,26744
19
- GameSentenceMiner/locales/ja_jp.json,sha256=LNLo2qIugMcDGiPbSo018zVAU8K_HG8Q4zvIcsHUzTA,28517
20
- GameSentenceMiner/locales/zh_cn.json,sha256=lZYB3HAcxhVCSVWcnvuepuCvn6_Y2mvd0-SKJEYx_ko,24829
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=0S8rf_TTy7qbUZc7PLUXEZVScx27tV0cDZR_GcM1QKk,40412
41
- GameSentenceMiner/util/db.py,sha256=2bO0rD4i8A1hhsRBER-wgZy9IK17ibRbI8DHxdKvYsI,16598
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=P5tI7H0cnveGs33aQdvJGy9DV6aIAGh8K8Al1XjNPzw,15114
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=kcyTWPuw_qtrK5qBzCFTIP0tqIvPmL-NEtiRL9BNbe8,35079
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=gKCajF_SrIXdiLOTMxtSziXuQ7T4I7B0iBKqIhcN_Og,12943
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=cblau-bQM1sdpBLtb4I0VTTxwrmYkwfn1IvUjBAEssY,16147
83
- GameSentenceMiner/web/static/js/stats.js,sha256=_B5QQWv1Wxx8fPyX4VDmTxs31Ds1EmX0XERt2uJj_9M,60882
84
- GameSentenceMiner/web/templates/anki_stats.html,sha256=XXONeWFhMA6KZQx0gBJyxDKxLnX1zYTGoGhZlC7kbpA,10784
85
- GameSentenceMiner/web/templates/database.html,sha256=eT6qkzxhWtJt11FMNRsyxTkS4Utty6bCVtvjAJGZ-Eo,13566
86
- GameSentenceMiner/web/templates/index.html,sha256=1VVIaCDLE6hsezXoo9Qetz9zAyhBCtOR111Xd7ZRLTE,225798
87
- GameSentenceMiner/web/templates/search.html,sha256=9NV03tHT3D0ZsxU_G5sh0oMYQc8tN4wi4SnEYUXVujE,3685
88
- GameSentenceMiner/web/templates/stats.html,sha256=01qa1czy7CthknJV4WlhhbsL_5IbT5vikTrjVbxhFTI,16810
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=wxhz-T6ZQYoJmjONvrfeTm1XFlTA2O-RhKJgBd9zjrU,906
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.1.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
94
- gamesentenceminer-2.16.1.dist-info/METADATA,sha256=VlJ-BcgAiuw91soTbrrLgBz1RdwmJQkSHVcEeoXcuno,7348
95
- gamesentenceminer-2.16.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
96
- gamesentenceminer-2.16.1.dist-info/entry_points.txt,sha256=2APEP25DbfjSxGeHtwBstMH8mulVhLkqF_b9bqzU6vQ,65
97
- gamesentenceminer-2.16.1.dist-info/top_level.txt,sha256=V1hUY6xVSyUEohb0uDoN4UIE6rUZ_JYx8yMyPGX4PgQ,18
98
- gamesentenceminer-2.16.1.dist-info/RECORD,,
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,,