GameSentenceMiner 2.17.7__py3-none-any.whl → 2.18.1__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 (76) hide show
  1. GameSentenceMiner/ai/ai_prompting.py +6 -6
  2. GameSentenceMiner/anki.py +236 -152
  3. GameSentenceMiner/gametext.py +7 -4
  4. GameSentenceMiner/gsm.py +49 -10
  5. GameSentenceMiner/locales/en_us.json +7 -3
  6. GameSentenceMiner/locales/ja_jp.json +8 -4
  7. GameSentenceMiner/locales/zh_cn.json +8 -4
  8. GameSentenceMiner/obs.py +238 -59
  9. GameSentenceMiner/ocr/owocr_helper.py +1 -1
  10. GameSentenceMiner/tools/ss_selector.py +7 -8
  11. GameSentenceMiner/ui/__init__.py +0 -0
  12. GameSentenceMiner/ui/anki_confirmation.py +187 -0
  13. GameSentenceMiner/{config_gui.py → ui/config_gui.py} +100 -35
  14. GameSentenceMiner/ui/screenshot_selector.py +215 -0
  15. GameSentenceMiner/util/configuration.py +124 -22
  16. GameSentenceMiner/util/db.py +22 -13
  17. GameSentenceMiner/util/downloader/download_tools.py +2 -2
  18. GameSentenceMiner/util/ffmpeg.py +24 -30
  19. GameSentenceMiner/util/get_overlay_coords.py +34 -34
  20. GameSentenceMiner/util/gsm_utils.py +31 -1
  21. GameSentenceMiner/util/text_log.py +11 -9
  22. GameSentenceMiner/vad.py +31 -12
  23. GameSentenceMiner/web/database_api.py +742 -123
  24. GameSentenceMiner/web/static/css/dashboard-shared.css +241 -0
  25. GameSentenceMiner/web/static/css/kanji-grid.css +94 -2
  26. GameSentenceMiner/web/static/css/overview.css +850 -0
  27. GameSentenceMiner/web/static/css/popups-shared.css +126 -0
  28. GameSentenceMiner/web/static/css/shared.css +97 -0
  29. GameSentenceMiner/web/static/css/stats.css +192 -597
  30. GameSentenceMiner/web/static/js/anki_stats.js +6 -4
  31. GameSentenceMiner/web/static/js/database.js +209 -5
  32. GameSentenceMiner/web/static/js/goals.js +610 -0
  33. GameSentenceMiner/web/static/js/kanji-grid.js +267 -4
  34. GameSentenceMiner/web/static/js/overview.js +1176 -0
  35. GameSentenceMiner/web/static/js/shared.js +25 -0
  36. GameSentenceMiner/web/static/js/stats.js +154 -1459
  37. GameSentenceMiner/web/stats.py +2 -2
  38. GameSentenceMiner/web/templates/anki_stats.html +5 -0
  39. GameSentenceMiner/web/templates/components/kanji_grid/basic_kanji_book_bkb_v1_v2.json +17 -0
  40. GameSentenceMiner/web/templates/components/kanji_grid/duolingo_kanji.json +29 -0
  41. GameSentenceMiner/web/templates/components/kanji_grid/grade.json +17 -0
  42. GameSentenceMiner/web/templates/components/kanji_grid/hk_primary_learning.json +17 -0
  43. GameSentenceMiner/web/templates/components/kanji_grid/hkscs2016.json +13 -0
  44. GameSentenceMiner/web/templates/components/kanji_grid/hsk_levels.json +33 -0
  45. GameSentenceMiner/web/templates/components/kanji_grid/humanum_frequency_list.json +41 -0
  46. GameSentenceMiner/web/templates/components/kanji_grid/jis_levels.json +25 -0
  47. GameSentenceMiner/web/templates/components/kanji_grid/jlpt_level.json +29 -0
  48. GameSentenceMiner/web/templates/components/kanji_grid/jpdb_kanji_frequency_list.json +37 -0
  49. GameSentenceMiner/web/templates/components/kanji_grid/jpdbv2_kanji_frequency_list.json +161 -0
  50. GameSentenceMiner/web/templates/components/kanji_grid/jun_das_modern_chinese_character_frequency_list.json +13 -0
  51. GameSentenceMiner/web/templates/components/kanji_grid/kanji_in_context_revised_edition.json +37 -0
  52. GameSentenceMiner/web/templates/components/kanji_grid/kanji_kentei_level.json +61 -0
  53. GameSentenceMiner/web/templates/components/kanji_grid/mainland_china_elementary_textbook_characters.json +33 -0
  54. GameSentenceMiner/web/templates/components/kanji_grid/moe_way_quiz.json +47 -0
  55. GameSentenceMiner/web/templates/components/kanji_grid/official_kanji.json +25 -0
  56. GameSentenceMiner/web/templates/components/kanji_grid/remembering_the_kanji.json +25 -0
  57. GameSentenceMiner/web/templates/components/kanji_grid/standard_form_of_national_characters.json +25 -0
  58. GameSentenceMiner/web/templates/components/kanji_grid/table_of_general_standard_chinese_characters.json +21 -0
  59. GameSentenceMiner/web/templates/components/kanji_grid/the_kodansha_kanji_learners_course_klc.json +45 -0
  60. GameSentenceMiner/web/templates/components/kanji_grid/thousand_character_classic.json +13 -0
  61. GameSentenceMiner/web/templates/components/kanji_grid/wanikani_levels.json +249 -0
  62. GameSentenceMiner/web/templates/components/kanji_grid/words_hk_frequency_list.json +33 -0
  63. GameSentenceMiner/web/templates/components/navigation.html +3 -1
  64. GameSentenceMiner/web/templates/database.html +73 -1
  65. GameSentenceMiner/web/templates/goals.html +376 -0
  66. GameSentenceMiner/web/templates/index.html +13 -11
  67. GameSentenceMiner/web/templates/overview.html +416 -0
  68. GameSentenceMiner/web/templates/stats.html +46 -251
  69. GameSentenceMiner/web/texthooking_page.py +18 -0
  70. {gamesentenceminer-2.17.7.dist-info → gamesentenceminer-2.18.1.dist-info}/METADATA +5 -1
  71. gamesentenceminer-2.18.1.dist-info/RECORD +132 -0
  72. gamesentenceminer-2.17.7.dist-info/RECORD +0 -98
  73. {gamesentenceminer-2.17.7.dist-info → gamesentenceminer-2.18.1.dist-info}/WHEEL +0 -0
  74. {gamesentenceminer-2.17.7.dist-info → gamesentenceminer-2.18.1.dist-info}/entry_points.txt +0 -0
  75. {gamesentenceminer-2.17.7.dist-info → gamesentenceminer-2.18.1.dist-info}/licenses/LICENSE +0 -0
  76. {gamesentenceminer-2.17.7.dist-info → gamesentenceminer-2.18.1.dist-info}/top_level.txt +0 -0
@@ -16,6 +16,10 @@
16
16
 
17
17
  <!-- Include shared CSS -->
18
18
  <link rel="stylesheet" href="/static/css/shared.css">
19
+
20
+ <!-- Include shared dashboard and popup CSS -->
21
+ <link rel="stylesheet" href="/static/css/dashboard-shared.css">
22
+ <link rel="stylesheet" href="/static/css/popups-shared.css">
19
23
 
20
24
  <!-- Include stats-specific CSS -->
21
25
  <link rel="stylesheet" href="/static/css/stats.css">
@@ -31,7 +35,6 @@
31
35
 
32
36
  <!-- Include shared navigation -->
33
37
  {% include 'components/navigation.html' %}
34
-
35
38
  <div class="dashboard-card date-range">
36
39
  <div class="dashboard-card-header">
37
40
  <h3 class="dashboard-card-title">
@@ -39,7 +42,6 @@
39
42
  Date Range
40
43
  </h3>
41
44
  </div>
42
-
43
45
  <div class="dashboard-date-range">
44
46
  <div class="dashboard-date-item tooltip" data-tooltip="Select the start date for your stats">
45
47
  <label for="fromDate">From</label>
@@ -51,7 +53,6 @@
51
53
  </div>
52
54
  </div>
53
55
  </div>
54
-
55
56
  <div id="dateErrorPopup" class="dashboard-popup hidden">
56
57
  <div class="dashboard-popup-content">
57
58
  <div class="dashboard-popup-icon">⚠️</div>
@@ -59,7 +60,6 @@
59
60
  <button id="closePopupBtn" class="dashboard-popup-btn">OK</button>
60
61
  </div>
61
62
  </div>
62
-
63
63
  <div id="noDataPopup" class="no-data-popup hidden">
64
64
  <div class="no-data-content">
65
65
  <p>No data found for the selected range.</p>
@@ -67,253 +67,6 @@
67
67
  </div>
68
68
  </div>
69
69
 
70
- <!-- Dashboard Statistics Sections -->
71
- <div class="dashboard-container">
72
- <!-- Current Game Statistics Panel -->
73
- <div class="dashboard-card current-game" id="currentGameCard">
74
- <div class="dashboard-card-header">
75
- <div>
76
- <h3 class="dashboard-card-title">
77
- <span class="dashboard-card-icon">🎮</span>
78
- Current Game Statistics
79
- </h3>
80
- <p class="dashboard-card-subtitle" id="currentGameName">Loading...</p>
81
- </div>
82
- <div class="dashboard-streak-indicator" id="currentGameStreak" style="display: none;">
83
- <span id="currentStreakValue">0</span> day streak
84
- </div>
85
- </div>
86
-
87
- <div class="dashboard-stats-grid" id="currentGameStats">
88
- <div class="dashboard-stat-item tooltip" data-tooltip="Total characters read in this game">
89
- <span class="dashboard-stat-value" id="currentTotalChars">-</span>
90
- <span class="dashboard-stat-label">Characters</span>
91
- </div>
92
- <div class="dashboard-stat-item tooltip" data-tooltip="Total time spent reading this game">
93
- <span class="dashboard-stat-value" id="currentTotalTime">-</span>
94
- <span class="dashboard-stat-label">Time Spent</span>
95
- </div>
96
- <div class="dashboard-stat-item tooltip" data-tooltip="Average reading speed for this game">
97
- <span class="dashboard-stat-value" id="currentReadingSpeed">-</span>
98
- <span class="dashboard-stat-label">Chars/Hour</span>
99
- </div>
100
- <div class="dashboard-stat-item tooltip" data-tooltip="Number of reading sessions for this game">
101
- <span class="dashboard-stat-value" id="currentSessions">-</span>
102
- <span class="dashboard-stat-label">Sessions</span>
103
- </div>
104
- </div>
105
-
106
- <div class="dashboard-progress-section">
107
- <div class="dashboard-progress-title">Recent Progress</div>
108
- <div class="dashboard-progress-items">
109
- <div class="dashboard-progress-item">
110
- <div class="dashboard-progress-value positive" id="currentMonthlyChars">-</div>
111
- <div class="dashboard-progress-label">Monthly Characters</div>
112
- </div>
113
- <div class="dashboard-progress-item">
114
- <div class="dashboard-progress-value neutral" id="currentFirstDate">-</div>
115
- <div class="dashboard-progress-label">Started</div>
116
- </div>
117
- <div class="dashboard-progress-item">
118
- <div class="dashboard-progress-value neutral" id="currentLastDate">-</div>
119
- <div class="dashboard-progress-label">Last Activity</div>
120
- </div>
121
- </div>
122
- </div>
123
- </div>
124
-
125
- <!-- All Games Historical Overview -->
126
- <div class="dashboard-card all-games" id="allGamesCard">
127
- <div class="dashboard-card-header">
128
- <div>
129
- <h3 class="dashboard-card-title">
130
- <span class="dashboard-card-icon">📚</span>
131
- All Games Overview
132
- </h3>
133
- <p class="dashboard-card-subtitle" id="totalGamesCount">Loading...</p>
134
- </div>
135
- <div class="dashboard-streak-indicator" id="allGamesStreak" style="display: none;">
136
- <span id="allStreakValue">0</span> day streak
137
- </div>
138
- </div>
139
-
140
- <div class="dashboard-stats-grid" id="allGamesStats">
141
- <div class="dashboard-stat-item tooltip" data-tooltip="Total characters read across all games">
142
- <span class="dashboard-stat-value" id="allTotalChars">-</span>
143
- <span class="dashboard-stat-label">Characters</span>
144
- </div>
145
- <div class="dashboard-stat-item tooltip" data-tooltip="Total time spent reading across all games">
146
- <span class="dashboard-stat-value" id="allTotalTime">-</span>
147
- <span class="dashboard-stat-label">Time Spent</span>
148
- </div>
149
- <div class="dashboard-stat-item tooltip" data-tooltip="Overall average reading speed">
150
- <span class="dashboard-stat-value" id="allReadingSpeed">-</span>
151
- <span class="dashboard-stat-label">Chars/Hour</span>
152
- </div>
153
- <div class="dashboard-stat-item tooltip" data-tooltip="Total number of reading sessions">
154
- <span class="dashboard-stat-value" id="allSessions">-</span>
155
- <span class="dashboard-stat-label">Sessions</span>
156
- </div>
157
- </div>
158
-
159
- <div class="dashboard-progress-section">
160
- <div class="dashboard-progress-title">Overall Progress</div>
161
- <div class="dashboard-progress-items">
162
- <div class="dashboard-progress-item">
163
- <div class="dashboard-progress-value positive" id="allMonthlyChars">-</div>
164
- <div class="dashboard-progress-label">Monthly Characters</div>
165
- </div>
166
- <div class="dashboard-progress-item">
167
- <div class="dashboard-progress-value neutral" id="allUniqueGames">-</div>
168
- <div class="dashboard-progress-label">Games Played</div>
169
- </div>
170
- <div class="dashboard-progress-item">
171
- <div class="dashboard-progress-value neutral" id="allTotalSentences">-</div>
172
- <div class="dashboard-progress-label">Total Sentences</div>
173
- </div>
174
- </div>
175
- </div>
176
- </div>
177
- </div>
178
-
179
- <!-- Loading/Error states for dashboard -->
180
- <div class="dashboard-loading" id="dashboardLoading" style="display: none;">
181
- <div class="spinner"></div>
182
- <span>Loading dashboard statistics...</span>
183
- </div>
184
-
185
- <div class="dashboard-error" id="dashboardError" style="display: none;">
186
- <div class="dashboard-error-icon">⚠️</div>
187
- <div class="dashboard-error-message">Failed to load dashboard statistics</div>
188
- <button class="dashboard-retry-btn" data-action="loadDashboardData">Retry</button>
189
- </div>
190
-
191
-
192
- <!-- Today's Overview Card -->
193
- <div class="dashboard-card today-overview" id="todayOverviewCard" style="margin-bottom: 24px;">
194
- <div class="dashboard-card-header">
195
- <h3 class="dashboard-card-title">
196
- <span class="dashboard-card-icon">📅</span>
197
- Today's Overview
198
- </h3>
199
- <p class="dashboard-card-subtitle" id="todayDate">Loading...</p>
200
- </div>
201
- <div class="dashboard-stats-grid" id="todayStats">
202
- <div class="dashboard-stat-item tooltip" data-tooltip="Total hours spent reading today">
203
- <span class="dashboard-stat-value" id="todayTotalHours">-</span>
204
- <span class="dashboard-stat-label">Hours Spent</span>
205
- </div>
206
- <div class="dashboard-stat-item tooltip" data-tooltip="Total characters read today">
207
- <span class="dashboard-stat-value" id="todayTotalChars">-</span>
208
- <span class="dashboard-stat-label">Characters</span>
209
- </div>
210
- <div class="dashboard-stat-item tooltip" data-tooltip="Number of reading sessions today">
211
- <span class="dashboard-stat-value" id="todaySessions">-</span>
212
- <span class="dashboard-stat-label">Sessions</span>
213
- </div>
214
- <div class="dashboard-stat-item tooltip" data-tooltip="Average reading speed today">
215
- <span class="dashboard-stat-value" id="todayCharsPerHour">-</span>
216
- <span class="dashboard-stat-label">Chars/Hour</span>
217
- </div>
218
- </div>
219
- </div>
220
-
221
- <!-- Goal Progress Chart -->
222
- <div class="dashboard-card goal-progress-chart" id="goalProgressChart" style="margin-bottom: 30px;">
223
- <div class="dashboard-card-header">
224
- <h3 class="dashboard-card-title">
225
- <span class="dashboard-card-icon">🎯</span>
226
- Goal Progress Chart
227
- </h3>
228
- <p class="dashboard-card-subtitle">Track your reading goals and projected completion dates</p>
229
- </div>
230
-
231
- <div class="goal-progress-grid">
232
- <!-- Reading Hours Goal -->
233
- <div class="goal-progress-item">
234
- <div class="goal-progress-header">
235
- <div class="goal-progress-label">
236
- <span class="goal-icon">⏱️</span>
237
- Reading Hours
238
- </div>
239
- <div class="goal-progress-values">
240
- <span class="goal-current" id="goalHoursCurrent">-</span>
241
- <span class="goal-separator">/</span>
242
- <span class="goal-target" id="goalHoursTarget">-</span>
243
- </div>
244
- </div>
245
- <div class="goal-progress-bar">
246
- <div class="goal-progress-fill" id="goalHoursProgress" data-percentage="0"></div>
247
- </div>
248
- <div class="goal-progress-info">
249
- <span class="goal-percentage" id="goalHoursPercentage">0%</span>
250
- <span class="goal-projection" id="goalHoursProjection">-</span>
251
- </div>
252
- </div>
253
-
254
- <!-- Character Count Goal -->
255
- <div class="goal-progress-item">
256
- <div class="goal-progress-header">
257
- <div class="goal-progress-label">
258
- <span class="goal-icon">📖</span>
259
- Characters Read
260
- </div>
261
- <div class="goal-progress-values">
262
- <span class="goal-current" id="goalCharsCurrent">-</span>
263
- <span class="goal-separator">/</span>
264
- <span class="goal-target" id="goalCharsTarget">-</span>
265
- </div>
266
- </div>
267
- <div class="goal-progress-bar">
268
- <div class="goal-progress-fill" id="goalCharsProgress" data-percentage="0"></div>
269
- </div>
270
- <div class="goal-progress-info">
271
- <span class="goal-percentage" id="goalCharsPercentage">0%</span>
272
- <span class="goal-projection" id="goalCharsProjection">-</span>
273
- </div>
274
- </div>
275
-
276
- <!-- Games Goal -->
277
- <div class="goal-progress-item">
278
- <div class="goal-progress-header">
279
- <div class="goal-progress-label">
280
- <span class="goal-icon">🎮</span>
281
- Games
282
- </div>
283
- <div class="goal-progress-values">
284
- <span class="goal-current" id="goalGamesCurrent">-</span>
285
- <span class="goal-separator">/</span>
286
- <span class="goal-target" id="goalGamesTarget">-</span>
287
- </div>
288
- </div>
289
- <div class="goal-progress-bar">
290
- <div class="goal-progress-fill" id="goalGamesProgress" data-percentage="0"></div>
291
- </div>
292
- <div class="goal-progress-info">
293
- <span class="goal-percentage" id="goalGamesPercentage">0%</span>
294
- <span class="goal-projection" id="goalGamesProjection">-</span>
295
- </div>
296
- </div>
297
- </div>
298
-
299
- <!-- Loading/Error states -->
300
- <div class="goal-progress-loading" id="goalProgressLoading" style="display: none;">
301
- <div class="spinner"></div>
302
- <span>Loading goal progress...</span>
303
- </div>
304
-
305
- <div class="goal-progress-error" id="goalProgressError" style="display: none;">
306
- <div class="goal-progress-error-icon">⚠️</div>
307
- <div class="goal-progress-error-message">Failed to load goal progress</div>
308
- <button class="retry-btn" onclick="loadGoalProgress()">Retry</button>
309
- </div>
310
- </div>
311
-
312
- <div class="chart-container">
313
- <h2>Activity Heatmap</h2>
314
- <div id="heatmapContainer"></div>
315
- </div>
316
-
317
70
  <div class="chart-container">
318
71
  <h2>Lines Received Over Time</h2>
319
72
  <canvas id="linesChart"></canvas>
@@ -474,6 +227,34 @@
474
227
  </small>
475
228
  </div>
476
229
 
230
+ <div style="margin-bottom: 15px;">
231
+ <label for="readingHoursTargetDate"
232
+ style="display: block; font-weight: 600; margin-bottom: 8px; color: var(--text-primary);">
233
+ Reading Hours Target Date
234
+ </label>
235
+ <input type="date" id="readingHoursTargetDate" name="reading_hours_target_date"
236
+ style="width: 90%; padding: 10px; border: 1px solid var(--border-color); border-radius: 5px; background: var(--bg-tertiary); color: var(--text-primary); font-size: 14px;"
237
+ data-date-format="yyyy-mm-dd">
238
+ <small
239
+ style="color: var(--text-tertiary); font-size: 12px; margin-top: 4px; display: block;">
240
+ Target date to achieve your reading hours goal
241
+ </small>
242
+ </div>
243
+
244
+ <div style="margin-bottom: 15px;">
245
+ <label for="characterCountTargetDate"
246
+ style="display: block; font-weight: 600; margin-bottom: 8px; color: var(--text-primary);">
247
+ Character Count Target Date
248
+ </label>
249
+ <input type="date" id="characterCountTargetDate" name="character_count_target_date"
250
+ style="width: 90%; padding: 10px; border: 1px solid var(--border-color); border-radius: 5px; background: var(--bg-tertiary); color: var(--text-primary); font-size: 14px;"
251
+ data-date-format="yyyy-mm-dd">
252
+ <small
253
+ style="color: var(--text-tertiary); font-size: 12px; margin-top: 4px; display: block;">
254
+ Target date to achieve your character count goal
255
+ </small>
256
+ </div>
257
+
477
258
  <div style="margin-bottom: 15px;">
478
259
  <label for="gamesTarget"
479
260
  style="display: block; font-weight: 600; margin-bottom: 8px; color: var(--text-primary);">
@@ -488,6 +269,20 @@
488
269
  standards
489
270
  </small>
490
271
  </div>
272
+
273
+ <div style="margin-bottom: 15px;">
274
+ <label for="gamesTargetDate"
275
+ style="display: block; font-weight: 600; margin-bottom: 8px; color: var(--text-primary);">
276
+ Games/Visual Novels Target Date
277
+ </label>
278
+ <input type="date" id="gamesTargetDate" name="games_target_date"
279
+ style="width: 90%; padding: 10px; border: 1px solid var(--border-color); border-radius: 5px; background: var(--bg-tertiary); color: var(--text-primary); font-size: 14px;"
280
+ data-date-format="yyyy-mm-dd">
281
+ <small
282
+ style="color: var(--text-tertiary); font-size: 12px; margin-top: 4px; display: block;">
283
+ Target date to achieve your games goal
284
+ </small>
285
+ </div>
491
286
  </div>
492
287
 
493
288
  <!-- Import ExStatic Lines Section -->
@@ -260,6 +260,15 @@ def datetimeformat(value, format='%Y-%m-%d %H:%M:%S'):
260
260
  return datetime.datetime.fromtimestamp(float(value)).strftime(format)
261
261
 
262
262
 
263
+ @app.route('/overview')
264
+ def overview():
265
+ """Renders the overview page."""
266
+ from GameSentenceMiner.util.configuration import get_master_config, get_stats_config
267
+ return render_template('overview.html',
268
+ config=get_config(),
269
+ master_config=get_master_config(),
270
+ stats_config=get_stats_config())
271
+
263
272
  @app.route('/stats')
264
273
  def stats():
265
274
  """Renders the stats page."""
@@ -269,6 +278,15 @@ def stats():
269
278
  master_config=get_master_config(),
270
279
  stats_config=get_stats_config())
271
280
 
281
+ @app.route('/goals')
282
+ def goals():
283
+ """Renders the goals page."""
284
+ from GameSentenceMiner.util.configuration import get_master_config, get_stats_config
285
+ return render_template('goals.html',
286
+ config=get_config(),
287
+ master_config=get_master_config(),
288
+ stats_config=get_stats_config())
289
+
272
290
  @app.route('/api/anki_earliest_date')
273
291
  def anki_earliest_date():
274
292
  """Returns the timestamp of earliest available card in anki collection."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GameSentenceMiner
3
- Version: 2.17.7
3
+ Version: 2.18.1
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
@@ -163,6 +163,10 @@ If you encounter issues, please ask for help in my [Discord](https://discord.gg/
163
163
 
164
164
  * https://github.com/Saplling/transparent-texthooker-overlay
165
165
 
166
+ * [exSTATic](https://github.com/KamWithK/exSTATic) for inspiration for GSM's Stats.
167
+
168
+ * [Kanji Grid](https://github.com/Kuuuube/kanjigrid)
169
+
166
170
  ## Donations
167
171
 
168
172
  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).
@@ -0,0 +1,132 @@
1
+ GameSentenceMiner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ GameSentenceMiner/anki.py,sha256=TgLJIGZq6qPfmXV378BzG_SEnL6KvHK74u4ztTggzbM,31139
3
+ GameSentenceMiner/gametext.py,sha256=FBL3kgJ71hCg5Nczuo9dAEi_sLGdVIGgvc62bT5KhCc,10691
4
+ GameSentenceMiner/gsm.py,sha256=0hEpEBDbI9FtiKtHeyrSLKV1nys-mKTKfxLY0Dk7mOQ,36387
5
+ GameSentenceMiner/obs.py,sha256=R2Rsq2rMnWIoIb4tArTY7oAFIsyxfp1Nf-XnX_E95io,35858
6
+ GameSentenceMiner/vad.py,sha256=dhZpbTsVI4scqXZ0M701BenUur0EzYM96tnyGXo8iI0,21021
7
+ GameSentenceMiner/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ GameSentenceMiner/ai/ai_prompting.py,sha256=mq9Odv_FpohXagU-OoSZbLWttdrEl1M1NiqnodeUpD8,29126
9
+ GameSentenceMiner/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ GameSentenceMiner/assets/icon.png,sha256=9GRL8uXUAgkUSlvbm9Pv9o2poFVRGdW6s2ub_DeUD9M,937624
11
+ GameSentenceMiner/assets/icon128.png,sha256=l90j7biwdz5ahwOd5wZ-406ryEV9Pan93dquJQ3e1CI,18395
12
+ GameSentenceMiner/assets/icon256.png,sha256=JEW46wOrG1KR-907rvFaEdNbPtj5gu0HJmG7qUnIHxQ,51874
13
+ GameSentenceMiner/assets/icon32.png,sha256=Kww0hU_qke9_22wBuO_Nq0Dv2SfnOLwMhCyGgbgXdg8,6089
14
+ GameSentenceMiner/assets/icon512.png,sha256=HxUj2GHjyQsk8NV433256UxU9phPhtjCY-YB_7W4sqs,192487
15
+ GameSentenceMiner/assets/icon64.png,sha256=N8xgdZXvhqVQP9QUK3wX5iqxX9LxHljD7c-Bmgim6tM,9301
16
+ GameSentenceMiner/assets/pickaxe.png,sha256=VfIGyXyIZdzEnVcc4PmG3wszPMO1W4KCT7Q_nFK6eSE,1403829
17
+ GameSentenceMiner/locales/en_us.json,sha256=FMoG9Nggx3G48ydy9bXgEBwQv9lxb4UZI7WzXatdBtY,28202
18
+ GameSentenceMiner/locales/ja_jp.json,sha256=ilCa04D4MbtCc2dlnij_a5qpZ_ity4CLtmSrRJ2h_7M,30172
19
+ GameSentenceMiner/locales/zh_cn.json,sha256=tFhxETRemkhFOcNIF_1R4TiFDdKHrSqq8BoIbZ5KoHc,26190
20
+ GameSentenceMiner/ocr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
+ GameSentenceMiner/ocr/gsm_ocr_config.py,sha256=Ov04c-nKzh3sADxO-5JyZWVe4DlrHM9edM9tc7-97Jo,5970
22
+ GameSentenceMiner/ocr/ocrconfig.py,sha256=_tY8mjnzHMJrLS8E5pHqYXZjMuLoGKYgJwdhYgN-ny4,6466
23
+ GameSentenceMiner/ocr/owocr_area_selector.py,sha256=4MjItlaZ78Smxa3uxMxbjU0n2z_IBTG-iBpDB9COSL8,29270
24
+ GameSentenceMiner/ocr/owocr_helper.py,sha256=GL16SZa48LwmVQ7xKYRtEgbj8V-7JwOfAHUw-CPwfp4,32370
25
+ GameSentenceMiner/ocr/ss_picker.py,sha256=0IhxUdaKruFpZyBL-8SpxWg7bPrlGpy3lhTcMMZ5rwo,5224
26
+ GameSentenceMiner/owocr/owocr/__init__.py,sha256=87hfN5u_PbL_onLfMACbc0F5j4KyIK9lKnRCj6oZgR0,49
27
+ GameSentenceMiner/owocr/owocr/__main__.py,sha256=XQaqZY99EKoCpU-gWQjNbTs7Kg17HvBVE7JY8LqIE0o,157
28
+ GameSentenceMiner/owocr/owocr/config.py,sha256=qM7kISHdUhuygGXOxmgU6Ef2nwBShrZtdqu4InDCViE,8103
29
+ GameSentenceMiner/owocr/owocr/lens_betterproto.py,sha256=oNoISsPilVVRBBPVDtb4-roJtAhp8ZAuFTci3TGXtMc,39141
30
+ GameSentenceMiner/owocr/owocr/ocr.py,sha256=7VCTBl4-8mO9P73olLMihUFtu3idBdyZIWP6XQhCte4,70484
31
+ GameSentenceMiner/owocr/owocr/run.py,sha256=Z7VkoFrsoQbMTHc6CmwpcMzsOROK9A_RJRwhlxw15oA,81871
32
+ GameSentenceMiner/owocr/owocr/screen_coordinate_picker.py,sha256=Na6XStbQBtpQUSdbN3QhEswtKuU1JjReFk_K8t5ezQE,3395
33
+ GameSentenceMiner/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
+ GameSentenceMiner/tools/audio_offset_selector.py,sha256=8Stk3BP-XVIuzRv9nl9Eqd2D-1yD3JrgU-CamBywJmY,8542
35
+ GameSentenceMiner/tools/furigana_filter_preview.py,sha256=BXv7FChPEJW_VeG5XYt6suAsMKVArsjr3cEduE9KhYg,13642
36
+ GameSentenceMiner/tools/ss_selector.py,sha256=ob2oJdiYreDMMau7CvsglpnhZ1CDnJqop3lV54-PjRo,4782
37
+ GameSentenceMiner/tools/window_transparency.py,sha256=GtbxbmZg0-UYPXhfHff-7IKZyY2DKe4B9GdyovfmpeM,8166
38
+ GameSentenceMiner/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
+ GameSentenceMiner/ui/anki_confirmation.py,sha256=m27IcWbUwb6o6Klh3NwXBc2FtMX9Da3vbLc2Bdht1G8,8593
40
+ GameSentenceMiner/ui/config_gui.py,sha256=Nt6uuJrinOrSpDdrw92zdd1GvyQNjOoGvkZQdGWA9ds,151913
41
+ GameSentenceMiner/ui/screenshot_selector.py,sha256=AKML87MpgYQeSuj1F10GngpNrn9qp06zLLzNRwrQWM8,8900
42
+ GameSentenceMiner/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
+ GameSentenceMiner/util/configuration.py,sha256=K3NIcqwMtAgB_ZytucTgBgDqV1243yrWM5mp5qj2WlE,46577
44
+ GameSentenceMiner/util/db.py,sha256=3Fs75pGJyf8-3y3k6Zfpgp8z9tYL9-ZvQUk_FgDc9Vw,28664
45
+ GameSentenceMiner/util/electron_config.py,sha256=KfeJToeFFVw0IR5MKa-gBzpzaGrU-lyJbR9z-sDEHYU,8767
46
+ GameSentenceMiner/util/ffmpeg.py,sha256=cAzztfY36Xf2WvsJDjavoiMOvA9ac2GVdCrSB4LzHk4,29007
47
+ GameSentenceMiner/util/get_overlay_coords.py,sha256=aYmSxJzyCeIRLNEwL2V8GxMVIsj8qvUv4ysE4YxpWNM,22144
48
+ GameSentenceMiner/util/gsm_utils.py,sha256=mASECTmN10c2yPL4NEfLg0Y0YWwFso1i6r_hhJPR3MY,10974
49
+ GameSentenceMiner/util/model.py,sha256=R-_RYTYLSDNgBoVTPuPBcIHeOznIqi_vBzQ7VQ20WYk,6727
50
+ GameSentenceMiner/util/notification.py,sha256=YBhf_mSo_i3cjBz-pmeTPx3wchKiG9BK2VBdZSa2prQ,4597
51
+ GameSentenceMiner/util/text_log.py,sha256=ZR98XFiOx9OWbZz5DzviHLjbg-j01OnPtIj6MnSfFU4,6877
52
+ GameSentenceMiner/util/communication/__init__.py,sha256=xh__yn2MhzXi9eLi89PeZWlJPn-cbBSjskhi1BRraXg,643
53
+ GameSentenceMiner/util/communication/send.py,sha256=Wki9qIY2CgYnuHbmnyKVIYkcKAN_oYS4up93XMikBaI,222
54
+ GameSentenceMiner/util/communication/websocket.py,sha256=Zpnqsy8RUeYxMFNGVUaPrWrlbAHjuNxCsn908iWL_kU,3344
55
+ GameSentenceMiner/util/downloader/Untitled_json.py,sha256=RUUl2bbbCpUDUUS0fP0tdvf5FngZ7ILdA_J5TFYAXUQ,15272
56
+ GameSentenceMiner/util/downloader/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
+ GameSentenceMiner/util/downloader/download_tools.py,sha256=pcT-lQDAwEgEVIK1smwfysXGNWWMGnRT-Xu93Km_A6o,11529
58
+ GameSentenceMiner/util/downloader/oneocr_dl.py,sha256=l3s9Z-x1b57GX048o5h-MVv0UTZo4H-Q-zb-JREkMLI,10439
59
+ GameSentenceMiner/util/win10toast/__init__.py,sha256=6TL2w6rzNmpJEp6_v2cAJP_7ExA3UsKzwdM08pNcVfE,5341
60
+ GameSentenceMiner/util/win10toast/__main__.py,sha256=5MYnBcFj8y_6Dyc1kiPd0_FsUuh4yl1cv5wsleU6V4w,668
61
+ GameSentenceMiner/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
+ GameSentenceMiner/web/database_api.py,sha256=pY1j8b1H5VdkDv5aaZjBnpx4tSNfJhfsuukyty6jbi0,84812
63
+ GameSentenceMiner/web/events.py,sha256=6Vyz5c9MdpMIa7Zqljqhap2XFQnAVYJ0CdQV64TSZsA,5119
64
+ GameSentenceMiner/web/gsm_websocket.py,sha256=B0VKpxmsRu0WRh5nFWlpDPBQ6-K2ed7TEIa0O6YWeoo,4166
65
+ GameSentenceMiner/web/service.py,sha256=YZchmScTn7AX_GkwV1ULEK6qjdOnJcpc3qfMwDf7cUE,5363
66
+ GameSentenceMiner/web/stats.py,sha256=zIK0ZzyInvvlJh87KhAKYl2CCuMJWW6Wyv7UssURFbE,22366
67
+ GameSentenceMiner/web/texthooking_page.py,sha256=f_-oqyb4NoU4ZrveDkPhGbHR4REdYiceceohKDq2e_I,15253
68
+ GameSentenceMiner/web/static/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
+ GameSentenceMiner/web/static/apple-touch-icon.png,sha256=OcMI8af_68DA_tweOsQ5LytTyMwm7-hPW07IfrOVgEs,46132
70
+ GameSentenceMiner/web/static/favicon-96x96.png,sha256=lOePzjiKl1JY2J1kT_PMdyEnrlJmi5GWbmXJunM12B4,16502
71
+ GameSentenceMiner/web/static/favicon.ico,sha256=7d25r_FBqRSNsAoEHpSzNoT7zyVt2DJRLNDNq_HYoX8,15086
72
+ GameSentenceMiner/web/static/favicon.svg,sha256=x305AP6WlXGtrXIZlaQspdLmwteoFYUoe5FyJ9MYlJ8,11517
73
+ GameSentenceMiner/web/static/site.webmanifest,sha256=kaeNT-FjFt-T7JGzOhXH7YSqsrDeiplZ2kDxCN_CFU4,436
74
+ GameSentenceMiner/web/static/style.css,sha256=bPZK0NVMuyRl5NNDuT7ZTzVLKlvSsdmeVHmAW4y5FM0,7001
75
+ GameSentenceMiner/web/static/web-app-manifest-192x192.png,sha256=EfSNnBmsSaLfESbkGfYwbKzcjKOdzuWo18ABADfN974,51117
76
+ GameSentenceMiner/web/static/web-app-manifest-512x512.png,sha256=wyqgCWCrLEUxSRXmaA3iJEESd-vM-ZmlTtZFBY4V8Pk,230819
77
+ GameSentenceMiner/web/static/css/dashboard-shared.css,sha256=qWE6OXcMyVJrCd-UO2jQEq-6sPkJJDA4rJsrpfeodMU,5392
78
+ GameSentenceMiner/web/static/css/kanji-grid.css,sha256=NzJg0Y85mMn4y0Ri5PPm7ATyIgfwGhTHDETQGogzeFM,4328
79
+ GameSentenceMiner/web/static/css/overview.css,sha256=FW1ZKLbMRvCm2do0Z5dfzA4sYLQkCTJuLO77aUiJIYU,16313
80
+ GameSentenceMiner/web/static/css/popups-shared.css,sha256=OMbDk6rF5spkFp2Zk3CkkE84Sl4RP4H4h-AhA8lCjhM,2393
81
+ GameSentenceMiner/web/static/css/search.css,sha256=x06xsErfThUpE1NAG4CA2sCPSZ-ofNWEI_ekV2Ok5hY,253
82
+ GameSentenceMiner/web/static/css/shared.css,sha256=qIah6fFXr7ckRxnHSMfT79qu_tJ67fN-fCcDpU4exHA,19589
83
+ GameSentenceMiner/web/static/css/stats.css,sha256=MJTzhC0gjRa9szN5ZpZSOwiXAuwr5nGoA2AplYGhw68,16670
84
+ GameSentenceMiner/web/static/js/anki_stats.js,sha256=ZZqvqvePan9w17Nry7ui1ozR0SM0lAjfvZNI4XDPSzU,6871
85
+ GameSentenceMiner/web/static/js/database.js,sha256=Yz72C0u2KbL8w9mkenNzeBi_v8mZrMyM3dEsxps7r5E,31133
86
+ GameSentenceMiner/web/static/js/goals.js,sha256=PaJNS1jR1pIpBxYrI8Gog6XFQNPrnbaNWZ1QX7JVlAo,30938
87
+ GameSentenceMiner/web/static/js/kanji-grid.js,sha256=k9y25X4TvFYi2CEO7cusrcFVSQRBFWAT1LQ3zJhewYc,16365
88
+ GameSentenceMiner/web/static/js/overview.js,sha256=V9doaiu8axN5xl6cA0d7lAjc4R56W66XP7pnIFI0gr0,51858
89
+ GameSentenceMiner/web/static/js/search.js,sha256=QrjsVXf90c1LzD09TPaK93RbIN9yEiXF8IKAKrDY4hw,10482
90
+ GameSentenceMiner/web/static/js/shared.js,sha256=ZNibQkJxdypg93uMhmr_NEgoT5hJfxikzF6RKGz5Wy0,20416
91
+ GameSentenceMiner/web/static/js/stats.js,sha256=kfJ756a9JPK8l9S8YUldxXuICAGMIHMGaDoJCKpjfEs,35604
92
+ GameSentenceMiner/web/templates/anki_stats.html,sha256=0Y5lT-wGlliqgWHx9bgRZyiT_y2p-kqZcBA-ufwzR48,12715
93
+ GameSentenceMiner/web/templates/database.html,sha256=fwqNfS4yX_LOXAMCSL3ieuuvzWz8KuwXizFplPFyzSs,17972
94
+ GameSentenceMiner/web/templates/goals.html,sha256=kYUIteYzIArDWyZguuNzJScwMrrezWjFXxreU-LzzRk,21755
95
+ GameSentenceMiner/web/templates/index.html,sha256=y1mrlcKWRdwmfBP8B06p1CBk1avAJOr32388nX8YX4A,229074
96
+ GameSentenceMiner/web/templates/overview.html,sha256=mSlASGqiRO4oUsUDIhZhaPhFF396_xjE5sMJKtLmhqQ,23924
97
+ GameSentenceMiner/web/templates/search.html,sha256=nao3M_hAbm5ftzThi91NtQ3ZiINMPUNx4ngFmqLnLQ4,4060
98
+ GameSentenceMiner/web/templates/stats.html,sha256=IOOFK3DXa3UVSrTLR_kLLNl6iy3ei-_C4EGqdbvZCos,22811
99
+ GameSentenceMiner/web/templates/utility.html,sha256=KtqnZUMAYs5XsEdC9Tlsd40NKAVic0mu6sh-ReMDJpU,16940
100
+ GameSentenceMiner/web/templates/components/navigation.html,sha256=7FGv59-4QocYy3b_BolkPXsp2drwwLjHraL5GUM27b4,1165
101
+ GameSentenceMiner/web/templates/components/theme-styles.html,sha256=hiq3zdJljpRjQO1iUA7gfFKwXebltG-IWW-gnKS4GHA,3439
102
+ GameSentenceMiner/web/templates/components/kanji_grid/basic_kanji_book_bkb_v1_v2.json,sha256=jVf6zp1qCEng0YFZQJsBmHwJyWWgT-Q__bhkFzc9dHo,1868
103
+ GameSentenceMiner/web/templates/components/kanji_grid/duolingo_kanji.json,sha256=0DqxCTtR2D6QxnXMHkr022254_OLRvc2lLSiybxEsJw,6338
104
+ GameSentenceMiner/web/templates/components/kanji_grid/grade.json,sha256=H-CHtRgg8cftACK-YAYiia7S3G348f_z9zUSxwLHMR0,955
105
+ GameSentenceMiner/web/templates/components/kanji_grid/hk_primary_learning.json,sha256=Y0gx6ICvjN0uk_b-pLFTGaPc5bgJh8m_Ozy8-s0EoTE,14912
106
+ GameSentenceMiner/web/templates/components/kanji_grid/hkscs2016.json,sha256=ZE0EdvLuHK4Nmu1kVGMuVzbaw-v40aTXpwVk--wsvhM,15872
107
+ GameSentenceMiner/web/templates/components/kanji_grid/hsk_levels.json,sha256=9vUd4LL6tWLzM-5QRkIXsZgDtCbL3aFmLJ8C_Ye30aY,8676
108
+ GameSentenceMiner/web/templates/components/kanji_grid/humanum_frequency_list.json,sha256=toJYMeZv8hIt0sYFPjiZ4_Xfg2_TR_QyFuzalxPxw1A,22135
109
+ GameSentenceMiner/web/templates/components/kanji_grid/jis_levels.json,sha256=Kd6Jc2TcoPQr8DQEqC9r7-x-a3mCCcXcziiEK-XDc3U,31158
110
+ GameSentenceMiner/web/templates/components/kanji_grid/jlpt_level.json,sha256=_MbOGoQb4PQCe5OCcx9w8mcfM-RLTkXvTZBIeAQ0pus,7286
111
+ GameSentenceMiner/web/templates/components/kanji_grid/jpdb_kanji_frequency_list.json,sha256=QVeL0qXAfipfh8z0cN5IKxcApC0b1daLrDu10iMhuBQ,20332
112
+ GameSentenceMiner/web/templates/components/kanji_grid/jpdbv2_kanji_frequency_list.json,sha256=WmyHWC40LvN4kmMTxqLXF4M2HfXG6AOvzNQj3yeUCZg,18808
113
+ GameSentenceMiner/web/templates/components/kanji_grid/jun_das_modern_chinese_character_frequency_list.json,sha256=YhUStuRA0p3CIQQuwbK57pcYrnMnyUtivYkhy7Z2X3s,30231
114
+ GameSentenceMiner/web/templates/components/kanji_grid/kanji_in_context_revised_edition.json,sha256=NVYcUFaQpQaX3XdhjE8ic9KBaSj5EtnzDuWbI-xqH0Y,7305
115
+ GameSentenceMiner/web/templates/components/kanji_grid/kanji_kentei_level.json,sha256=CXvuGzOk15obg1AC8MBCnhu-0Tp8z0YLsX5aMfCIb8I,20324
116
+ GameSentenceMiner/web/templates/components/kanji_grid/mainland_china_elementary_textbook_characters.json,sha256=BzffVdN0wuFIb2hkOJ6Ak_zHEPlKZ3VEqiWL5CV0QyA,14142
117
+ GameSentenceMiner/web/templates/components/kanji_grid/moe_way_quiz.json,sha256=pP0Y-ggRqhfhqXAxQb8i0ILtwKd3eYuPTbgSw5TE6KU,20628
118
+ GameSentenceMiner/web/templates/components/kanji_grid/official_kanji.json,sha256=UOLnFs38Uq-Bf3q7mQeMae8VCG6k5nJ-sifDBqVSLS4,18349
119
+ GameSentenceMiner/web/templates/components/kanji_grid/remembering_the_kanji.json,sha256=-fEnibYFjz4xh4nbe1uS6fcNi-1Jt8ltsvqgo50Pg-k,12315
120
+ GameSentenceMiner/web/templates/components/kanji_grid/standard_form_of_national_characters.json,sha256=9fK0agGB4dxaSt2aZZPb89sCmF-5GBCGLkaNMsk8RrA,101574
121
+ GameSentenceMiner/web/templates/components/kanji_grid/table_of_general_standard_chinese_characters.json,sha256=9SkCWqPpOPEPCPQE3yoHQAlxwnGpiStfphFU_-FxLHw,21432
122
+ GameSentenceMiner/web/templates/components/kanji_grid/the_kodansha_kanji_learners_course_klc.json,sha256=hW9IrodP6OjjbvgdZGMfqi0DzqjYEZw7raZXaxslB04,7844
123
+ GameSentenceMiner/web/templates/components/kanji_grid/thousand_character_classic.json,sha256=Dgi0gSPzEgrPUIHz5MkLT6ooGDHWbZEmMm1GmYSFPZ0,3400
124
+ GameSentenceMiner/web/templates/components/kanji_grid/wanikani_levels.json,sha256=8wjnnaYQqmho6t5tMxrIAc03512A2tYhQh5dfsQnfAM,11372
125
+ GameSentenceMiner/web/templates/components/kanji_grid/words_hk_frequency_list.json,sha256=wRkqZNPzz6DT9OTPHpXwfqW96Qb96stCQNNgOL-ZdKk,17535
126
+ GameSentenceMiner/wip/__init___.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
+ gamesentenceminer-2.18.1.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
128
+ gamesentenceminer-2.18.1.dist-info/METADATA,sha256=2z6qsUbbScQ_odYmkBVXbiihS4fcatapu249dtgK2Cs,7487
129
+ gamesentenceminer-2.18.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
130
+ gamesentenceminer-2.18.1.dist-info/entry_points.txt,sha256=2APEP25DbfjSxGeHtwBstMH8mulVhLkqF_b9bqzU6vQ,65
131
+ gamesentenceminer-2.18.1.dist-info/top_level.txt,sha256=V1hUY6xVSyUEohb0uDoN4UIE6rUZ_JYx8yMyPGX4PgQ,18
132
+ gamesentenceminer-2.18.1.dist-info/RECORD,,