GameSentenceMiner 2.19.16__py3-none-any.whl → 2.20.0__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.

Potentially problematic release.


This version of GameSentenceMiner might be problematic. Click here for more details.

Files changed (70) hide show
  1. GameSentenceMiner/__init__.py +39 -0
  2. GameSentenceMiner/anki.py +6 -3
  3. GameSentenceMiner/gametext.py +13 -2
  4. GameSentenceMiner/gsm.py +40 -3
  5. GameSentenceMiner/locales/en_us.json +4 -0
  6. GameSentenceMiner/locales/ja_jp.json +4 -0
  7. GameSentenceMiner/locales/zh_cn.json +4 -0
  8. GameSentenceMiner/obs.py +4 -1
  9. GameSentenceMiner/owocr/owocr/ocr.py +304 -134
  10. GameSentenceMiner/owocr/owocr/run.py +1 -1
  11. GameSentenceMiner/ui/anki_confirmation.py +4 -2
  12. GameSentenceMiner/ui/config_gui.py +12 -0
  13. GameSentenceMiner/util/configuration.py +6 -2
  14. GameSentenceMiner/util/cron/__init__.py +12 -0
  15. GameSentenceMiner/util/cron/daily_rollup.py +613 -0
  16. GameSentenceMiner/util/cron/jiten_update.py +397 -0
  17. GameSentenceMiner/util/cron/populate_games.py +154 -0
  18. GameSentenceMiner/util/cron/run_crons.py +148 -0
  19. GameSentenceMiner/util/cron/setup_populate_games_cron.py +118 -0
  20. GameSentenceMiner/util/cron_table.py +334 -0
  21. GameSentenceMiner/util/db.py +236 -49
  22. GameSentenceMiner/util/ffmpeg.py +23 -4
  23. GameSentenceMiner/util/games_table.py +340 -93
  24. GameSentenceMiner/util/jiten_api_client.py +188 -0
  25. GameSentenceMiner/util/stats_rollup_table.py +216 -0
  26. GameSentenceMiner/web/anki_api_endpoints.py +438 -220
  27. GameSentenceMiner/web/database_api.py +955 -1259
  28. GameSentenceMiner/web/jiten_database_api.py +1015 -0
  29. GameSentenceMiner/web/rollup_stats.py +672 -0
  30. GameSentenceMiner/web/static/css/dashboard-shared.css +75 -13
  31. GameSentenceMiner/web/static/css/overview.css +604 -47
  32. GameSentenceMiner/web/static/css/search.css +226 -0
  33. GameSentenceMiner/web/static/css/shared.css +762 -0
  34. GameSentenceMiner/web/static/css/stats.css +221 -0
  35. GameSentenceMiner/web/static/js/components/bar-chart.js +339 -0
  36. GameSentenceMiner/web/static/js/database-bulk-operations.js +320 -0
  37. GameSentenceMiner/web/static/js/database-game-data.js +390 -0
  38. GameSentenceMiner/web/static/js/database-game-operations.js +213 -0
  39. GameSentenceMiner/web/static/js/database-helpers.js +44 -0
  40. GameSentenceMiner/web/static/js/database-jiten-integration.js +750 -0
  41. GameSentenceMiner/web/static/js/database-popups.js +89 -0
  42. GameSentenceMiner/web/static/js/database-tabs.js +64 -0
  43. GameSentenceMiner/web/static/js/database-text-management.js +371 -0
  44. GameSentenceMiner/web/static/js/database.js +86 -718
  45. GameSentenceMiner/web/static/js/goals.js +79 -18
  46. GameSentenceMiner/web/static/js/heatmap.js +29 -23
  47. GameSentenceMiner/web/static/js/overview.js +1205 -339
  48. GameSentenceMiner/web/static/js/regex-patterns.js +100 -0
  49. GameSentenceMiner/web/static/js/search.js +215 -18
  50. GameSentenceMiner/web/static/js/shared.js +193 -39
  51. GameSentenceMiner/web/static/js/stats.js +1536 -179
  52. GameSentenceMiner/web/stats.py +1142 -269
  53. GameSentenceMiner/web/stats_api.py +2104 -0
  54. GameSentenceMiner/web/templates/anki_stats.html +4 -18
  55. GameSentenceMiner/web/templates/components/date-range.html +118 -3
  56. GameSentenceMiner/web/templates/components/html-head.html +40 -6
  57. GameSentenceMiner/web/templates/components/js-config.html +8 -8
  58. GameSentenceMiner/web/templates/components/regex-input.html +160 -0
  59. GameSentenceMiner/web/templates/database.html +564 -117
  60. GameSentenceMiner/web/templates/goals.html +41 -5
  61. GameSentenceMiner/web/templates/overview.html +159 -129
  62. GameSentenceMiner/web/templates/search.html +78 -9
  63. GameSentenceMiner/web/templates/stats.html +159 -5
  64. GameSentenceMiner/web/texthooking_page.py +280 -111
  65. {gamesentenceminer-2.19.16.dist-info → gamesentenceminer-2.20.0.dist-info}/METADATA +43 -2
  66. {gamesentenceminer-2.19.16.dist-info → gamesentenceminer-2.20.0.dist-info}/RECORD +70 -47
  67. {gamesentenceminer-2.19.16.dist-info → gamesentenceminer-2.20.0.dist-info}/WHEEL +0 -0
  68. {gamesentenceminer-2.19.16.dist-info → gamesentenceminer-2.20.0.dist-info}/entry_points.txt +0 -0
  69. {gamesentenceminer-2.19.16.dist-info → gamesentenceminer-2.20.0.dist-info}/licenses/LICENSE +0 -0
  70. {gamesentenceminer-2.19.16.dist-info → gamesentenceminer-2.20.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GameSentenceMiner
3
- Version: 2.19.16
3
+ Version: 2.20.0
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
@@ -50,6 +50,8 @@ Requires-Dist: torchaudio==2.8.0
50
50
  Requires-Dist: pillow~=12.0.0
51
51
  Requires-Dist: openai~=2.6.0
52
52
  Requires-Dist: pynput~=1.8.1
53
+ Requires-Dist: flask-compress~=1.15
54
+ Requires-Dist: meikiocr~=0.1.1
53
55
  Dynamic: license-file
54
56
 
55
57
  # GSM - An Immersion toolkit for Games.
@@ -64,7 +66,7 @@ Installation: https://www.youtube.com/watch?v=sVL9omRbGc4
64
66
 
65
67
  Discord: https://discord.gg/yP8Qse6bb8
66
68
 
67
- ## Features - [Anki Card Enhancement](#anki-card-enhancement) | [OCR](#ocr) | [Overlay](#overlay)
69
+ ## Features - [Anki Card Enhancement](#anki-card-enhancement) | [OCR](#ocr) | [Overlay](#overlay) | [Stats](#stats)
68
70
 
69
71
  ### Anki Card Enhancement
70
72
 
@@ -132,6 +134,43 @@ This is probably the feature I care least about, but if you are lazy like me, yo
132
134
  This feature simplifies the process of launching games and (potentially) hooking them, making the entire workflow more efficient.
133
135
 
134
136
  <img width="2560" height="1392" alt="GameSentenceMiner_1zuov0R9xK" src="https://github.com/user-attachments/assets/205769bb-3dd2-493b-9383-2d6e2ca05c2d" />-->
137
+ ---
138
+
139
+ ### Stats
140
+
141
+ GSM has a statistics page with currently **32 graphs** chock full of pretty data.
142
+
143
+ ![stats](docs/images/overview2.png)
144
+
145
+ The stats are not just pretty.
146
+
147
+ They are designed to help you grow.
148
+
149
+ Set goals and see exactly what daily tasks you need to do to achieve them:
150
+
151
+ ![stats](docs/images/goals2.png)
152
+
153
+ See all the Kanji you've read in whatever order you want:
154
+
155
+ ![stats](docs/images/kanji_grid2.png)
156
+
157
+ And click on them to see every sentence you've read with that Kanji:
158
+
159
+ ![stats](docs/images/search2.png)
160
+
161
+ Use Anki? Find Kanji you read a lot but aren't in Anki yet
162
+
163
+ ![stats](docs/images/anki2.png)
164
+
165
+ Clean up your data, anyway you want with advanced tools.
166
+
167
+ ![stats](docs/images/db_management2.png)
168
+
169
+ These statistics aren't just meant to look pretty, they are meant to help you answer questions:
170
+ * What can I play to maximise both fun and learning?
171
+ * Do I read better in the evening, or in the mornings?
172
+ * Am I progressing in this language?
173
+ * How long should I immerse to reach my goals?
135
174
 
136
175
  ## Basic Requirements
137
176
 
@@ -179,6 +218,8 @@ If you encounter issues, please ask for help in my [Discord](https://discord.gg/
179
218
 
180
219
  * [Kanji Grid](https://github.com/Kuuuube/kanjigrid)
181
220
 
221
+ * [Jiten.moe for metadata](https://jiten.moe)
222
+
182
223
  ## Donations
183
224
 
184
225
  If you've found this or any of my other projects helpful, please consider supporting my work through [GitHub Sponsors](https://github.com/sponsors/bpwhelan), or [Ko-fi](https://ko-fi.com/beangate).
@@ -1,8 +1,8 @@
1
- GameSentenceMiner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- GameSentenceMiner/anki.py,sha256=SvmkL-7AqMKtCWfgwyxALvEHBOoxmQabi_uSYahf5nU,29982
3
- GameSentenceMiner/gametext.py,sha256=4PPm7QSWDmvsyooVjFANkd1Vnoy5ixbGRMHfYfhwGs0,13320
4
- GameSentenceMiner/gsm.py,sha256=3jmcW5NZ8VDsGgwr_RaWEcTtd_HdBSA-smdtAeGbZlo,36938
5
- GameSentenceMiner/obs.py,sha256=UB4_OJ-vZQbHyuupB8JmwhSFdYyQX_5f5TpRXU1D7Kk,43300
1
+ GameSentenceMiner/__init__.py,sha256=h31j3cRa0fs1Kzl1LhR8Q58-bYzZXdqlocaPydP1vUk,1200
2
+ GameSentenceMiner/anki.py,sha256=UDfngnU_52VlW-cfekJ8YHinVVplfF5Y4Z516aBaTcg,30157
3
+ GameSentenceMiner/gametext.py,sha256=jtDrTI-ILR9FdF1s7Dt3Fail4qyfrwOjHeyr-qkwZHI,13808
4
+ GameSentenceMiner/gsm.py,sha256=TBoztzcnBrzFhGanFZ-X9Rzf8dzd6ehldwq_iJxyteE,38818
5
+ GameSentenceMiner/obs.py,sha256=PKKmGZHlPirIQ8BA2YZKd4MHfAyveLdWiQUfF7dzm7s,43375
6
6
  GameSentenceMiner/vad.py,sha256=iMSsoUZ7-aNoWKzDKfOHdB3Zk5U2hV7x5hqTny6rj08,21501
7
7
  GameSentenceMiner/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  GameSentenceMiner/ai/ai_prompting.py,sha256=pjhNMcCjYLfmOz3n9IPFtKTkvFDBbQXsXwT5-vAhrBY,29429
@@ -14,9 +14,9 @@ GameSentenceMiner/assets/icon32.png,sha256=Kww0hU_qke9_22wBuO_Nq0Dv2SfnOLwMhCyGg
14
14
  GameSentenceMiner/assets/icon512.png,sha256=HxUj2GHjyQsk8NV433256UxU9phPhtjCY-YB_7W4sqs,192487
15
15
  GameSentenceMiner/assets/icon64.png,sha256=N8xgdZXvhqVQP9QUK3wX5iqxX9LxHljD7c-Bmgim6tM,9301
16
16
  GameSentenceMiner/assets/pickaxe.png,sha256=VfIGyXyIZdzEnVcc4PmG3wszPMO1W4KCT7Q_nFK6eSE,1403829
17
- GameSentenceMiner/locales/en_us.json,sha256=V79_n1GGqDXOwTnNXPtsfD0Zvs4apMJTlZGUAGjnlBs,28989
18
- GameSentenceMiner/locales/ja_jp.json,sha256=N_T6VtU8la2PAefUeZN3_sM88qxBIR4SPXA7ngRV4mk,31118
19
- GameSentenceMiner/locales/zh_cn.json,sha256=Dx-CbeUa2hGfRl1st1O0j-jOCnITQ87tjQYZxdSUPOE,26853
17
+ GameSentenceMiner/locales/en_us.json,sha256=CY0dlK__w9ssgnpdMECmnIQ7_9Drf3RbG-7YL-O5mNQ,29150
18
+ GameSentenceMiner/locales/ja_jp.json,sha256=OcNs24CZxclxd1obm88ZqBOfU6EEs91iQfUz3hiBjjc,31309
19
+ GameSentenceMiner/locales/zh_cn.json,sha256=Oc_XqKogOcsgsHXkUCb9E_kgD_AMlxoBCj3BqCGxn7A,27010
20
20
  GameSentenceMiner/ocr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  GameSentenceMiner/ocr/gsm_ocr_config.py,sha256=Ov04c-nKzh3sADxO-5JyZWVe4DlrHM9edM9tc7-97Jo,5970
22
22
  GameSentenceMiner/ocr/ocrconfig.py,sha256=_tY8mjnzHMJrLS8E5pHqYXZjMuLoGKYgJwdhYgN-ny4,6466
@@ -27,8 +27,8 @@ GameSentenceMiner/owocr/owocr/__init__.py,sha256=87hfN5u_PbL_onLfMACbc0F5j4KyIK9
27
27
  GameSentenceMiner/owocr/owocr/__main__.py,sha256=XQaqZY99EKoCpU-gWQjNbTs7Kg17HvBVE7JY8LqIE0o,157
28
28
  GameSentenceMiner/owocr/owocr/config.py,sha256=qM7kISHdUhuygGXOxmgU6Ef2nwBShrZtdqu4InDCViE,8103
29
29
  GameSentenceMiner/owocr/owocr/lens_betterproto.py,sha256=oNoISsPilVVRBBPVDtb4-roJtAhp8ZAuFTci3TGXtMc,39141
30
- GameSentenceMiner/owocr/owocr/ocr.py,sha256=Phud8ABUW2i5Q0HBa6vKLwznS3kBR64NzCcDFSL1pS4,95324
31
- GameSentenceMiner/owocr/owocr/run.py,sha256=4fyA6r4LLOJWIehwNHPfnZOb_2ebDGtS9i5bhZ3DsNo,82779
30
+ GameSentenceMiner/owocr/owocr/ocr.py,sha256=jHf4cVwjkZZ0Km0uw0JJaJ2B6_Yt1YQVbqYW721B5YA,102535
31
+ GameSentenceMiner/owocr/owocr/run.py,sha256=hzbuFegBDFx0ztRMq0B3lYYPbLeDuoH1GyeiVfSCpyk,82820
32
32
  GameSentenceMiner/owocr/owocr/screen_coordinate_picker.py,sha256=Na6XStbQBtpQUSdbN3QhEswtKuU1JjReFk_K8t5ezQE,3395
33
33
  GameSentenceMiner/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
34
  GameSentenceMiner/tools/audio_offset_selector.py,sha256=8Stk3BP-XVIuzRv9nl9Eqd2D-1yD3JrgU-CamBywJmY,8542
@@ -36,25 +36,34 @@ GameSentenceMiner/tools/furigana_filter_preview.py,sha256=DAT2-j6vSDHr9ufk6PiaLi
36
36
  GameSentenceMiner/tools/ss_selector.py,sha256=ob2oJdiYreDMMau7CvsglpnhZ1CDnJqop3lV54-PjRo,4782
37
37
  GameSentenceMiner/tools/window_transparency.py,sha256=GtbxbmZg0-UYPXhfHff-7IKZyY2DKe4B9GdyovfmpeM,8166
38
38
  GameSentenceMiner/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
- GameSentenceMiner/ui/anki_confirmation.py,sha256=krrT3q3anTtXNTPHz5ahXSd4genEnEvS07v1JYftBFg,15174
40
- GameSentenceMiner/ui/config_gui.py,sha256=EpxWuwrTBKOrsg4kf9w_iT5oybhtanlFG6XtH98W9Ng,159987
39
+ GameSentenceMiner/ui/anki_confirmation.py,sha256=62Q0CRYU3LLXe_fk9FKuv-H-USNjSx5cwsVUV3Yyoc0,15372
40
+ GameSentenceMiner/ui/config_gui.py,sha256=548LA1gTRqXRwUfaryMI9Ix4gSanJXKI8z-hCabiuXQ,160823
41
41
  GameSentenceMiner/ui/furigana_filter_preview.py,sha256=DAT2-j6vSDHr9ufk6PiaLikEsbIp56B_OHIEeYLMwlk,17135
42
42
  GameSentenceMiner/ui/screenshot_selector.py,sha256=MnR1MZWRUeHXCFTHc5ACK3WS08f9MUK5fJ6IQEGdCEY,9127
43
43
  GameSentenceMiner/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
44
  GameSentenceMiner/util/audio_player.py,sha256=-yFsf0qoTSS1ga5rCmEJZJGUSJzXCvfZHY3t0NxycDk,7896
45
- GameSentenceMiner/util/configuration.py,sha256=lmk0CEGbu-wFU40O-1X8MvLZNNpNT3g1apghgOjidCM,49265
46
- GameSentenceMiner/util/db.py,sha256=iCHUzlgOJgNjQ5-oDa7gnDWmzdlEryOzbXfn9ToQPfY,33034
45
+ GameSentenceMiner/util/configuration.py,sha256=XPriwspffF5cYAFFDgFXSA7Xg2A7slUx5R846jOHiUs,49544
46
+ GameSentenceMiner/util/cron_table.py,sha256=uqLnaqI5OmLXFvCcbh7L9fZhur9LltWcSC9pEy1aKoQ,11460
47
+ GameSentenceMiner/util/db.py,sha256=r2FZ7XO92jQ2wkQufV9_GF9izt9wX0Oj57FTHvWaCNI,43221
47
48
  GameSentenceMiner/util/electron_config.py,sha256=KfeJToeFFVw0IR5MKa-gBzpzaGrU-lyJbR9z-sDEHYU,8767
48
- GameSentenceMiner/util/ffmpeg.py,sha256=KZhoVVCGnlPIoVJ83XVQmjHDnzO4WefZRoLyceS6pEE,40100
49
- GameSentenceMiner/util/games_table.py,sha256=VM68MAsdyE6tpdwM4bDSk67qioBOvsEO8-TpnRmUnSo,12003
49
+ GameSentenceMiner/util/ffmpeg.py,sha256=tK-bSfmODmCPqi5y5tXitCInhx-4Et5iAa1fucYDvnQ,41150
50
+ GameSentenceMiner/util/games_table.py,sha256=YZnBfPDApfUGGqSnvkoooO0X6qweFqEBmpBz59ijMWk,21559
50
51
  GameSentenceMiner/util/get_overlay_coords.py,sha256=jQ0hcrEh9CfvjlBRJez3Ly-er4MjBWC2zirA-hYz5hQ,26462
51
52
  GameSentenceMiner/util/gsm_utils.py,sha256=mASECTmN10c2yPL4NEfLg0Y0YWwFso1i6r_hhJPR3MY,10974
53
+ GameSentenceMiner/util/jiten_api_client.py,sha256=-iQcOgcPuR31FXJu8iE3D7Zqv3RIQWCkAsCeMIQMRiA,6404
52
54
  GameSentenceMiner/util/model.py,sha256=R-_RYTYLSDNgBoVTPuPBcIHeOznIqi_vBzQ7VQ20WYk,6727
53
55
  GameSentenceMiner/util/notification.py,sha256=YBhf_mSo_i3cjBz-pmeTPx3wchKiG9BK2VBdZSa2prQ,4597
56
+ GameSentenceMiner/util/stats_rollup_table.py,sha256=SUw_ARnmXZyzQAalF02yo3yZH-hn0Tdz2dXmIikwIM0,8475
54
57
  GameSentenceMiner/util/text_log.py,sha256=6eekK0TTuh65YHDw6tjGFQUrCmV1P1ebNzkdxRNXP9k,6903
55
58
  GameSentenceMiner/util/communication/__init__.py,sha256=xh__yn2MhzXi9eLi89PeZWlJPn-cbBSjskhi1BRraXg,643
56
59
  GameSentenceMiner/util/communication/send.py,sha256=9tEpbodt1nqsA-XqyXZGMHK_80EJPnhMJJxvDF-w3Ug,578
57
60
  GameSentenceMiner/util/communication/websocket.py,sha256=RWPN9V6Gddqw1PmR_Ql8z0yjVihGvwSLSPQHXSxRlqM,3357
61
+ GameSentenceMiner/util/cron/__init__.py,sha256=BaHg5PxwJzuF-in1FTL0lAJiEFfNr8_3jZ0_HyH4P3Q,457
62
+ GameSentenceMiner/util/cron/daily_rollup.py,sha256=GYCD-2Yb6_UpgIyZKnhLsJdYBOoAHS0FD8mtmex0Buw,25104
63
+ GameSentenceMiner/util/cron/jiten_update.py,sha256=3v0JeWXxfh5uTNufomeCCnaXaypGH_W0DtfcsKojBlc,14384
64
+ GameSentenceMiner/util/cron/populate_games.py,sha256=Ae5mGFVI6Kk3Ohjydxe5ENAlC2K47FAk6FIXpCyORz0,5614
65
+ GameSentenceMiner/util/cron/run_crons.py,sha256=GgMARQQt1GBaEhdXWuu5zvtZ7tKTujWteQOR3JyhHgA,5404
66
+ GameSentenceMiner/util/cron/setup_populate_games_cron.py,sha256=Hqu8W0-X-bLjl6hrD0sXJGGgLz0h3stZCbcCkH6N6uA,4181
58
67
  GameSentenceMiner/util/downloader/Untitled_json.py,sha256=RUUl2bbbCpUDUUS0fP0tdvf5FngZ7ILdA_J5TFYAXUQ,15272
59
68
  GameSentenceMiner/util/downloader/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
69
  GameSentenceMiner/util/downloader/download_tools.py,sha256=GAqhZz0LoMsG5YRFWmOeTX3NIzw2TrtM2K52QvQd7C0,12698
@@ -62,13 +71,16 @@ GameSentenceMiner/util/downloader/oneocr_dl.py,sha256=l3s9Z-x1b57GX048o5h-MVv0UT
62
71
  GameSentenceMiner/util/win10toast/__init__.py,sha256=6TL2w6rzNmpJEp6_v2cAJP_7ExA3UsKzwdM08pNcVfE,5341
63
72
  GameSentenceMiner/util/win10toast/__main__.py,sha256=5MYnBcFj8y_6Dyc1kiPd0_FsUuh4yl1cv5wsleU6V4w,668
64
73
  GameSentenceMiner/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
- GameSentenceMiner/web/anki_api_endpoints.py,sha256=r30OTT3YVfgbF6aJ-EGWZLF-j2D9L63jLkRXMycU0p8,23681
66
- GameSentenceMiner/web/database_api.py,sha256=wJGFwrPbB7qQMIqwg0w6hn_henFhjAUCIpwjhdUNMGU,89903
74
+ GameSentenceMiner/web/anki_api_endpoints.py,sha256=C6dui2yJ2yNaGRmzmesnG8q32t7MCBurg4CXyavGte4,29675
75
+ GameSentenceMiner/web/database_api.py,sha256=Zh-rOtV-CBBCAN5W0ZAX4Ci9GYypckpY9Lxu9d-RBH8,66589
67
76
  GameSentenceMiner/web/events.py,sha256=RJ8tIK8WUn7Fbgny23UJWrZ1SlhYzzT5p55E1uXRwDs,2747
68
77
  GameSentenceMiner/web/gsm_websocket.py,sha256=jX1JS89FHIwGK7sJIYwu9-drE1_0YIsqGNLo9o3GybQ,4087
78
+ GameSentenceMiner/web/jiten_database_api.py,sha256=fGcSFBqFiDImXF7-RQCow7nM2qDmCc4QsPejagctz6M,42166
79
+ GameSentenceMiner/web/rollup_stats.py,sha256=nR9Xpr5Vm1r5LtG0tA3W1hYV38V_Q39X9Ej0hnio7_k,26316
69
80
  GameSentenceMiner/web/service.py,sha256=6cgUmDgtp3ZKzuPFszowjPoq-BDtC1bS3ux6sykeaqo,6662
70
- GameSentenceMiner/web/stats.py,sha256=LYMhekifcQo-cbfy2--b6vycKcu8RAoTnQA4TefcS6U,29037
71
- GameSentenceMiner/web/texthooking_page.py,sha256=IJNvprv3crWzYE9pWQMI30XPTkdwOdhanBgnIqAWdYQ,15283
81
+ GameSentenceMiner/web/stats.py,sha256=9MWvalVhAN5cbqFbRM1LApALOghGEIP9B7algOGaipQ,61439
82
+ GameSentenceMiner/web/stats_api.py,sha256=lO9LIMMWNJpuNyyMbjQCRRxl4ZOBt8QWtA4bxlbkSx0,97071
83
+ GameSentenceMiner/web/texthooking_page.py,sha256=hrVIBBR7xOlF8wUnLddEqdRyiO20Ln38ruTB9zJsYkA,18576
72
84
  GameSentenceMiner/web/static/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
85
  GameSentenceMiner/web/static/apple-touch-icon.png,sha256=OcMI8af_68DA_tweOsQ5LytTyMwm7-hPW07IfrOVgEs,46132
74
86
  GameSentenceMiner/web/static/favicon-96x96.png,sha256=lOePzjiKl1JY2J1kT_PMdyEnrlJmi5GWbmXJunM12B4,16502
@@ -78,36 +90,47 @@ GameSentenceMiner/web/static/site.webmanifest,sha256=kaeNT-FjFt-T7JGzOhXH7YSqsrD
78
90
  GameSentenceMiner/web/static/style.css,sha256=bPZK0NVMuyRl5NNDuT7ZTzVLKlvSsdmeVHmAW4y5FM0,7001
79
91
  GameSentenceMiner/web/static/web-app-manifest-192x192.png,sha256=EfSNnBmsSaLfESbkGfYwbKzcjKOdzuWo18ABADfN974,51117
80
92
  GameSentenceMiner/web/static/web-app-manifest-512x512.png,sha256=wyqgCWCrLEUxSRXmaA3iJEESd-vM-ZmlTtZFBY4V8Pk,230819
81
- GameSentenceMiner/web/static/css/dashboard-shared.css,sha256=qWE6OXcMyVJrCd-UO2jQEq-6sPkJJDA4rJsrpfeodMU,5392
93
+ GameSentenceMiner/web/static/css/dashboard-shared.css,sha256=jGLui7gx52Ew2DKVQc3jnWBy1o1RPtgsS3NZjO-9300,7388
82
94
  GameSentenceMiner/web/static/css/kanji-grid.css,sha256=NzJg0Y85mMn4y0Ri5PPm7ATyIgfwGhTHDETQGogzeFM,4328
83
95
  GameSentenceMiner/web/static/css/loading-skeleton.css,sha256=4DHa8AdnMvxpA8nH86m8abmm8oWkVfZaNECSl3g2iZk,855
84
- GameSentenceMiner/web/static/css/overview.css,sha256=FW1ZKLbMRvCm2do0Z5dfzA4sYLQkCTJuLO77aUiJIYU,16313
96
+ GameSentenceMiner/web/static/css/overview.css,sha256=2_4ijDvBdxZN1gaFUoH6dF614oXUCbMKOyk8skpWgTo,27413
85
97
  GameSentenceMiner/web/static/css/popups-shared.css,sha256=OMbDk6rF5spkFp2Zk3CkkE84Sl4RP4H4h-AhA8lCjhM,2393
86
- GameSentenceMiner/web/static/css/search.css,sha256=30O89k05YkvFR_CMVTwKYh4W9Mqrvh05zHxZuqEz7eM,1182
87
- GameSentenceMiner/web/static/css/shared.css,sha256=qIah6fFXr7ckRxnHSMfT79qu_tJ67fN-fCcDpU4exHA,19589
88
- GameSentenceMiner/web/static/css/stats.css,sha256=3K9M8qgFJzkU6-xiXRJXd85krK4desi7R8BpxIfHvUU,18093
98
+ GameSentenceMiner/web/static/css/search.css,sha256=FJjk3ZxR_0xjcQdK9yUxQr3WqaXDOGJyObzuJizIVeY,6128
99
+ GameSentenceMiner/web/static/css/shared.css,sha256=FTQixghVsnLG-MZA_7Q0BHEcosIFHkGzh2yLfM34i9w,33718
100
+ GameSentenceMiner/web/static/css/stats.css,sha256=EB9_HXDyNnhPuaY7HIyS0NaTY-rfonR5MiHwAlt1Zro,22275
89
101
  GameSentenceMiner/web/static/js/anki_stats.js,sha256=WlfWDvVROSk13g2up9R29Tc8eI_ctsRmzTtLE5v_PxE,18231
90
- GameSentenceMiner/web/static/js/database.js,sha256=kM5hDl0merhKjbKQhWklLGi1L_O1_tJbkqFXxRTZxe4,33202
91
- GameSentenceMiner/web/static/js/goals.js,sha256=PaJNS1jR1pIpBxYrI8Gog6XFQNPrnbaNWZ1QX7JVlAo,30938
92
- GameSentenceMiner/web/static/js/heatmap.js,sha256=9E4SPGxjWX5-EWbXtiKFzNLGY3LtpbUmfmeATcrYRDU,14704
102
+ GameSentenceMiner/web/static/js/database-bulk-operations.js,sha256=WHWWeYj3Px1kPb9vs9NEKISthFcjoGWXlMbA3u9P9t0,12908
103
+ GameSentenceMiner/web/static/js/database-game-data.js,sha256=-7z88ALEdX866EkNG-O7XzJBcOqqhS02iZMD24tHlY4,19075
104
+ GameSentenceMiner/web/static/js/database-game-operations.js,sha256=JMzZpiLL6r_cu7w8-hs3HRTOTLu0IknfUGPPDB0AEFg,8265
105
+ GameSentenceMiner/web/static/js/database-helpers.js,sha256=pYvrQxOsKfnLwtCMvQJDMlliBL1uJnbPUBGsOBE94oM,1449
106
+ GameSentenceMiner/web/static/js/database-jiten-integration.js,sha256=sz3aKnOagZrKoEW2Ki4KKTvRXRuCot1TmrRhJ37O2hU,30612
107
+ GameSentenceMiner/web/static/js/database-popups.js,sha256=mvk73aoMCpQkWwdEnilF2UN-64qpkaPnmMwcgFUfeS0,3074
108
+ GameSentenceMiner/web/static/js/database-tabs.js,sha256=ghZH0xwFkSITJcSiLxCJGE_C7YZeyAWueCdqnkxNZ-c,1997
109
+ GameSentenceMiner/web/static/js/database-text-management.js,sha256=px6-6o5zMVm9KzoTrdT3sON2NvAlXdkeib5LApv75wM,16903
110
+ GameSentenceMiner/web/static/js/database.js,sha256=IHsvlv1xmoIioq-DFKVNDS-0UJCSK4oh1kFXj9GPlrs,5431
111
+ GameSentenceMiner/web/static/js/goals.js,sha256=nlwiUacjz9_pdnpV2TQHur-HzrG9WiISL0-swBgKD2c,36189
112
+ GameSentenceMiner/web/static/js/heatmap.js,sha256=eaXeKh4UlL39PLSYRRCWsJGH-qNU6TAC-iro7PfS4CQ,15171
93
113
  GameSentenceMiner/web/static/js/kanji-grid.js,sha256=k9y25X4TvFYi2CEO7cusrcFVSQRBFWAT1LQ3zJhewYc,16365
94
- GameSentenceMiner/web/static/js/overview.js,sha256=9aqIozJ_s8MQxTmdYii7y50LXm3N_RidUymxrvG_V_c,54376
95
- GameSentenceMiner/web/static/js/search.js,sha256=QYbIpmBhFNaQ2O7mPN8k9ChSCikIGJvEo-3jOEU2WPM,16158
96
- GameSentenceMiner/web/static/js/shared.js,sha256=ZNibQkJxdypg93uMhmr_NEgoT5hJfxikzF6RKGz5Wy0,20416
97
- GameSentenceMiner/web/static/js/stats.js,sha256=zPhkdY3RXiQrhPmZyFyh6xwOn3DxQI8Jm6fqbJbjeDk,51322
98
- GameSentenceMiner/web/templates/anki_stats.html,sha256=nq0vcDbJzWNggybatYECs16OsqcBvb5viyJzSOBECwQ,18238
99
- GameSentenceMiner/web/templates/database.html,sha256=5SE7cSYa-ZDVLm0ykb1T11Yd4Bm_E600EWaQi2UWip8,18577
100
- GameSentenceMiner/web/templates/goals.html,sha256=X5ViEeUT3YnCVM_kofCJ6A0_Wn2TVQQdmBiblZN5Gpo,20909
114
+ GameSentenceMiner/web/static/js/overview.js,sha256=70-K6W6tHnFwwMCMHFLCOGGK6MayGS62MZfg_ICuRyY,92723
115
+ GameSentenceMiner/web/static/js/regex-patterns.js,sha256=qoihBGXbZbUA0v21oj0mjby3gSTZWl9m15qM2uYMmxU,2637
116
+ GameSentenceMiner/web/static/js/search.js,sha256=4dLJRHO2PWd_SNTH3GH-B9MV2J5QwLAQiBdlLjWNdto,24677
117
+ GameSentenceMiner/web/static/js/shared.js,sha256=SoxwFscaUl_HU9B3sBV1E1rcLlcBqoTTqBSV64zRm0Q,25319
118
+ GameSentenceMiner/web/static/js/stats.js,sha256=TpLFDEr-hT1WyKhWC6-4-HqfPRjaBKH21vxGyAZj33s,106953
119
+ GameSentenceMiner/web/static/js/components/bar-chart.js,sha256=gGYOTvxkSqDaNM5L8ILCv-_XQ4Y5DMLNEO9otSVBphA,14166
120
+ GameSentenceMiner/web/templates/anki_stats.html,sha256=lYTNO8IU83t0Fm3C7RxMlHx1ETWeQX_HnXX7Vqm6Crs,17614
121
+ GameSentenceMiner/web/templates/database.html,sha256=JBCRjmfKAccbC2wZQ3wykl81-DDIc0JMw97Pozm4I9k,43946
122
+ GameSentenceMiner/web/templates/goals.html,sha256=SZ9BXJVjvrziw3mhaSd-jy-SDMolJY3c9ups_MxCAaM,23416
101
123
  GameSentenceMiner/web/templates/index.html,sha256=_8DDW21RfbcfmcgZ5PF_tAVn2Itt1zxQxn4Ju9xT7HI,230834
102
- GameSentenceMiner/web/templates/overview.html,sha256=7hX1rrFhwCWHo9mH-Ia_39FSD3ACCoWTXtVUl7gc1kM,13248
103
- GameSentenceMiner/web/templates/search.html,sha256=34mv69GQXBGq-TdagyZ82QpXH9JYWGOXMDbCfoGUoGI,6150
104
- GameSentenceMiner/web/templates/stats.html,sha256=RJhWQ1lyOGkYWrqxJNutnJs703IVdCQhBG9Cud0CMPs,5605
124
+ GameSentenceMiner/web/templates/overview.html,sha256=sw3FwELZ8XfMZEsyFxq6QzMpYs1netVyBh6kPmRmPAk,15355
125
+ GameSentenceMiner/web/templates/search.html,sha256=wOvfbRIhzQ81zvr2FoGao7b6wPWFVCIoiYjyOhYhGS8,11279
126
+ GameSentenceMiner/web/templates/stats.html,sha256=b2eDh2HNFKjJdE_ovxRrGrVfzq919ucZ0cieghaRQYw,13120
105
127
  GameSentenceMiner/web/templates/utility.html,sha256=KtqnZUMAYs5XsEdC9Tlsd40NKAVic0mu6sh-ReMDJpU,16940
106
- GameSentenceMiner/web/templates/components/date-range.html,sha256=kgfsPCJYKbqn8N5mEZTpC8s2aPE6xSrXWEeSQyPfcdE,950
107
- GameSentenceMiner/web/templates/components/html-head.html,sha256=8gD3iu3YhM3-q6PVfhLZ9L6rdWfbbpKKXY0CSXAitZc,1579
108
- GameSentenceMiner/web/templates/components/js-config.html,sha256=-ZnbMWGJ7Ck190kqcEIBdjuglSiGUCt307ixztHuo0M,960
128
+ GameSentenceMiner/web/templates/components/date-range.html,sha256=gBixRKaY8s-iupslRkQQjowHiFXDpYC-DaMqoYTVz8A,6265
129
+ GameSentenceMiner/web/templates/components/html-head.html,sha256=Uz6wFeSLAiNVuLtnJZ1WJjI8m-3nUV7ppaqr1iI7i2s,3400
130
+ GameSentenceMiner/web/templates/components/js-config.html,sha256=AaKzdYEFjxvgEunpczTSCfx4etvR0LhlHGIC-QAceGE,1092
109
131
  GameSentenceMiner/web/templates/components/navigation.html,sha256=7FGv59-4QocYy3b_BolkPXsp2drwwLjHraL5GUM27b4,1165
110
132
  GameSentenceMiner/web/templates/components/popups.html,sha256=hSe3HCp_TA8lEEOxI4ZLCTJvGH7RO8EI1b3ktxDgbls,789
133
+ GameSentenceMiner/web/templates/components/regex-input.html,sha256=AQE2sqk9E0oY3p3uoWcQHuUHwA2t0EUDHf0mk15IeXo,6269
111
134
  GameSentenceMiner/web/templates/components/settings-modal.html,sha256=6d47ov5nVlHMFgFugGkq89Z9_Zp_yqmj7YfU0U7q-Y8,15779
112
135
  GameSentenceMiner/web/templates/components/theme-styles.html,sha256=hiq3zdJljpRjQO1iUA7gfFKwXebltG-IWW-gnKS4GHA,3439
113
136
  GameSentenceMiner/web/templates/components/kanji_grid/basic_kanji_book_bkb_v1_v2.json,sha256=jVf6zp1qCEng0YFZQJsBmHwJyWWgT-Q__bhkFzc9dHo,1868
@@ -135,9 +158,9 @@ GameSentenceMiner/web/templates/components/kanji_grid/thousand_character_classic
135
158
  GameSentenceMiner/web/templates/components/kanji_grid/wanikani_levels.json,sha256=8wjnnaYQqmho6t5tMxrIAc03512A2tYhQh5dfsQnfAM,11372
136
159
  GameSentenceMiner/web/templates/components/kanji_grid/words_hk_frequency_list.json,sha256=wRkqZNPzz6DT9OTPHpXwfqW96Qb96stCQNNgOL-ZdKk,17535
137
160
  GameSentenceMiner/wip/__init___.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
- gamesentenceminer-2.19.16.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
139
- gamesentenceminer-2.19.16.dist-info/METADATA,sha256=MM_hRX6w_NZIzWWtjo1bk0RmG66SkAx0EkMoYC6K15E,8187
140
- gamesentenceminer-2.19.16.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
141
- gamesentenceminer-2.19.16.dist-info/entry_points.txt,sha256=2APEP25DbfjSxGeHtwBstMH8mulVhLkqF_b9bqzU6vQ,65
142
- gamesentenceminer-2.19.16.dist-info/top_level.txt,sha256=V1hUY6xVSyUEohb0uDoN4UIE6rUZ_JYx8yMyPGX4PgQ,18
143
- gamesentenceminer-2.19.16.dist-info/RECORD,,
161
+ gamesentenceminer-2.20.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
162
+ gamesentenceminer-2.20.0.dist-info/METADATA,sha256=S-N0yR5oUFj-z8Tfwj87FdtSQQFc3XnSLa-poqIzA6A,9317
163
+ gamesentenceminer-2.20.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
164
+ gamesentenceminer-2.20.0.dist-info/entry_points.txt,sha256=2APEP25DbfjSxGeHtwBstMH8mulVhLkqF_b9bqzU6vQ,65
165
+ gamesentenceminer-2.20.0.dist-info/top_level.txt,sha256=V1hUY6xVSyUEohb0uDoN4UIE6rUZ_JYx8yMyPGX4PgQ,18
166
+ gamesentenceminer-2.20.0.dist-info/RECORD,,