GameSentenceMiner 2.15.9__py3-none-any.whl → 2.15.11__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.
@@ -1,5 +1,5 @@
1
1
  GameSentenceMiner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- GameSentenceMiner/anki.py,sha256=SYU3gKf3RNad0dkW__8LxcGVQVallWVnscSwdD1579E,25162
2
+ GameSentenceMiner/anki.py,sha256=rm9JuRP-1Eba2wcVQ2PZUMB5P9UMEZ99Fh371K0Qfhk,26319
3
3
  GameSentenceMiner/config_gui.py,sha256=i79PrY2pP8_VKvIL7uoDv5cgHvCCQBIe0mS_YnX2AVg,140792
4
4
  GameSentenceMiner/gametext.py,sha256=fgBgLchezpauWELE9Y5G3kVCLfAneD0X4lJFoI3FYbs,10351
5
5
  GameSentenceMiner/gsm.py,sha256=t2GAhMwVEHUzCdqM4tIgAzBUvNmt_Gec515iePacD6k,31945
@@ -19,17 +19,17 @@ GameSentenceMiner/locales/en_us.json,sha256=4lCV34FnDOe0c02qHlHnfujQedmqHSL-feN3
19
19
  GameSentenceMiner/locales/ja_jp.json,sha256=LNLo2qIugMcDGiPbSo018zVAU8K_HG8Q4zvIcsHUzTA,28517
20
20
  GameSentenceMiner/locales/zh_cn.json,sha256=lZYB3HAcxhVCSVWcnvuepuCvn6_Y2mvd0-SKJEYx_ko,24829
21
21
  GameSentenceMiner/ocr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- GameSentenceMiner/ocr/gsm_ocr_config.py,sha256=DfcR3bHTu26JJerLzqfW_KpdgUBSrRV4hqSy_LYclps,5967
22
+ GameSentenceMiner/ocr/gsm_ocr_config.py,sha256=Ov04c-nKzh3sADxO-5JyZWVe4DlrHM9edM9tc7-97Jo,5970
23
23
  GameSentenceMiner/ocr/ocrconfig.py,sha256=_tY8mjnzHMJrLS8E5pHqYXZjMuLoGKYgJwdhYgN-ny4,6466
24
24
  GameSentenceMiner/ocr/owocr_area_selector.py,sha256=Rm1_nuZotJhfOfoJ_3mesh9udtOBjYqKhnAvSief6fo,29181
25
- GameSentenceMiner/ocr/owocr_helper.py,sha256=v1xIfKUwKZNEUUvFNzzalTmIl_Qj_ygFEX4AJszcAVA,31290
25
+ GameSentenceMiner/ocr/owocr_helper.py,sha256=wsI9HaDFcP9is71wf0YoLjf-FjgQ2Dps-e1e-l-HDl0,31722
26
26
  GameSentenceMiner/ocr/ss_picker.py,sha256=0IhxUdaKruFpZyBL-8SpxWg7bPrlGpy3lhTcMMZ5rwo,5224
27
27
  GameSentenceMiner/owocr/owocr/__init__.py,sha256=87hfN5u_PbL_onLfMACbc0F5j4KyIK9lKnRCj6oZgR0,49
28
28
  GameSentenceMiner/owocr/owocr/__main__.py,sha256=XQaqZY99EKoCpU-gWQjNbTs7Kg17HvBVE7JY8LqIE0o,157
29
29
  GameSentenceMiner/owocr/owocr/config.py,sha256=qM7kISHdUhuygGXOxmgU6Ef2nwBShrZtdqu4InDCViE,8103
30
30
  GameSentenceMiner/owocr/owocr/lens_betterproto.py,sha256=oNoISsPilVVRBBPVDtb4-roJtAhp8ZAuFTci3TGXtMc,39141
31
31
  GameSentenceMiner/owocr/owocr/ocr.py,sha256=vRTMKLzi6GDBFZWCyf0tYi6es3cP1cvQOBjZqaZmnBg,70482
32
- GameSentenceMiner/owocr/owocr/run.py,sha256=ctzAhX8nwTYy7E-tqiYFHK51XfY8Y_ze7rBHbDkVPqI,81240
32
+ GameSentenceMiner/owocr/owocr/run.py,sha256=9Z_gIMCZkP5AGY6Lqz3QamSc6YOa5PeweXz9f4o8Msg,81222
33
33
  GameSentenceMiner/owocr/owocr/screen_coordinate_picker.py,sha256=Na6XStbQBtpQUSdbN3QhEswtKuU1JjReFk_K8t5ezQE,3395
34
34
  GameSentenceMiner/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
35
  GameSentenceMiner/tools/audio_offset_selector.py,sha256=8Stk3BP-XVIuzRv9nl9Eqd2D-1yD3JrgU-CamBywJmY,8542
@@ -37,7 +37,7 @@ 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=cpgusOu4lItCBsZyB8QoAJaXjDovIXNlqyKzh2GMYzw,40241
40
+ GameSentenceMiner/util/configuration.py,sha256=0S8rf_TTy7qbUZc7PLUXEZVScx27tV0cDZR_GcM1QKk,40412
41
41
  GameSentenceMiner/util/db.py,sha256=2bO0rD4i8A1hhsRBER-wgZy9IK17ibRbI8DHxdKvYsI,16598
42
42
  GameSentenceMiner/util/electron_config.py,sha256=KfeJToeFFVw0IR5MKa-gBzpzaGrU-lyJbR9z-sDEHYU,8767
43
43
  GameSentenceMiner/util/ffmpeg.py,sha256=jA-cFtCmdCWrUSPpdtFSLr-GSoqs4qNUzW20v4HPHf0,28715
@@ -45,7 +45,7 @@ GameSentenceMiner/util/get_overlay_coords.py,sha256=P5tI7H0cnveGs33aQdvJGy9DV6aI
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
48
- GameSentenceMiner/util/text_log.py,sha256=zB9--7J_Wwck74IOEI4aWhmCYouqjSE6Sm0sCznF63Q,6731
48
+ GameSentenceMiner/util/text_log.py,sha256=eqLchRrRsWeuex13f5IoxENLWMhjfZtJgUnh9N5jnJQ,6782
49
49
  GameSentenceMiner/util/communication/__init__.py,sha256=xh__yn2MhzXi9eLi89PeZWlJPn-cbBSjskhi1BRraXg,643
50
50
  GameSentenceMiner/util/communication/send.py,sha256=Wki9qIY2CgYnuHbmnyKVIYkcKAN_oYS4up93XMikBaI,222
51
51
  GameSentenceMiner/util/communication/websocket.py,sha256=Zpnqsy8RUeYxMFNGVUaPrWrlbAHjuNxCsn908iWL_kU,3344
@@ -56,8 +56,12 @@ 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
60
+ GameSentenceMiner/web/events.py,sha256=6Vyz5c9MdpMIa7Zqljqhap2XFQnAVYJ0CdQV64TSZsA,5119
59
61
  GameSentenceMiner/web/service.py,sha256=YZchmScTn7AX_GkwV1ULEK6qjdOnJcpc3qfMwDf7cUE,5363
60
- GameSentenceMiner/web/texthooking_page.py,sha256=JhuApKUeQGwqGUO_92Z6yMY0_-kqHQceT4FGzhbGlGE,19269
62
+ GameSentenceMiner/web/stats.py,sha256=daSSxWlumAyqVVtX10qHESF-tZYwCcFMp8qZA5AE0nI,22066
63
+ GameSentenceMiner/web/texthooking_page.py,sha256=gKCajF_SrIXdiLOTMxtSziXuQ7T4I7B0iBKqIhcN_Og,12943
64
+ GameSentenceMiner/web/websockets.py,sha256=IwwQo6VtgPqeOuc-datgfJyLpX3LwB2MISDqA6EkiSA,4131
61
65
  GameSentenceMiner/web/static/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
66
  GameSentenceMiner/web/static/apple-touch-icon.png,sha256=OcMI8af_68DA_tweOsQ5LytTyMwm7-hPW07IfrOVgEs,46132
63
67
  GameSentenceMiner/web/static/favicon-96x96.png,sha256=lOePzjiKl1JY2J1kT_PMdyEnrlJmi5GWbmXJunM12B4,16502
@@ -67,14 +71,16 @@ GameSentenceMiner/web/static/site.webmanifest,sha256=kaeNT-FjFt-T7JGzOhXH7YSqsrD
67
71
  GameSentenceMiner/web/static/style.css,sha256=bPZK0NVMuyRl5NNDuT7ZTzVLKlvSsdmeVHmAW4y5FM0,7001
68
72
  GameSentenceMiner/web/static/web-app-manifest-192x192.png,sha256=EfSNnBmsSaLfESbkGfYwbKzcjKOdzuWo18ABADfN974,51117
69
73
  GameSentenceMiner/web/static/web-app-manifest-512x512.png,sha256=wyqgCWCrLEUxSRXmaA3iJEESd-vM-ZmlTtZFBY4V8Pk,230819
70
- GameSentenceMiner/web/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
+ GameSentenceMiner/web/templates/anki_stats.html,sha256=XXONeWFhMA6KZQx0gBJyxDKxLnX1zYTGoGhZlC7kbpA,10784
75
+ GameSentenceMiner/web/templates/database.html,sha256=iEJWQvvH_RGWmHuFx0iwNeamBV5FoVxZgFKgfm-4zc4,13582
71
76
  GameSentenceMiner/web/templates/index.html,sha256=LqXZx7-NE42pXSpHNZ3To680rD-vt9wEJoFYBlgp1qU,216923
72
- GameSentenceMiner/web/templates/text_replacements.html,sha256=tV5c8mCaWSt_vKuUpbdbLAzXZ3ATZeDvQ9PnnAfqY0M,8598
73
- GameSentenceMiner/web/templates/utility.html,sha256=3flZinKNqUJ7pvrZk6xu__v67z44rXnaK7UTZ303R-8,16946
77
+ GameSentenceMiner/web/templates/search.html,sha256=Fat3hOjQwkYBbdFhgWzRzZ5iEB78-2_0LpT7uK2aURE,3701
78
+ GameSentenceMiner/web/templates/stats.html,sha256=jXHhp4fcSHgZ5kNGaFX5ArCf-4WCsktrw3uvV7lctPI,16827
79
+ GameSentenceMiner/web/templates/utility.html,sha256=KtqnZUMAYs5XsEdC9Tlsd40NKAVic0mu6sh-ReMDJpU,16940
74
80
  GameSentenceMiner/wip/__init___.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
- gamesentenceminer-2.15.9.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
76
- gamesentenceminer-2.15.9.dist-info/METADATA,sha256=vWy-FqnzvL3rvGZqUO185nT6IaAUmJfPKB143Bm73GU,7348
77
- gamesentenceminer-2.15.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
78
- gamesentenceminer-2.15.9.dist-info/entry_points.txt,sha256=2APEP25DbfjSxGeHtwBstMH8mulVhLkqF_b9bqzU6vQ,65
79
- gamesentenceminer-2.15.9.dist-info/top_level.txt,sha256=V1hUY6xVSyUEohb0uDoN4UIE6rUZ_JYx8yMyPGX4PgQ,18
80
- gamesentenceminer-2.15.9.dist-info/RECORD,,
81
+ gamesentenceminer-2.15.11.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
82
+ gamesentenceminer-2.15.11.dist-info/METADATA,sha256=ZDnbGQL2dL520Tzv5Cb_EpfLbOYzxLDz8Iqb9YwuzbI,7349
83
+ gamesentenceminer-2.15.11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
84
+ gamesentenceminer-2.15.11.dist-info/entry_points.txt,sha256=2APEP25DbfjSxGeHtwBstMH8mulVhLkqF_b9bqzU6vQ,65
85
+ gamesentenceminer-2.15.11.dist-info/top_level.txt,sha256=V1hUY6xVSyUEohb0uDoN4UIE6rUZ_JYx8yMyPGX4PgQ,18
86
+ gamesentenceminer-2.15.11.dist-info/RECORD,,
File without changes
@@ -1,238 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Text Error Fixes (Electron)</title>
7
- <link rel="stylesheet" href="/static/style.css">
8
- <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap" rel="stylesheet">
9
- </head>
10
- <body> <div class="container">
11
- <h1>Text Error Fixes</h1>
12
-
13
- <div class="control"> <button id="add-new-btn" class="button-blue">Add New Entry</button> <div class="search-container"> <input type="text" id="search-input" placeholder="Search key or value..." class="inputField"> <button id="search-button" class="button-green">Search</button> </div>
14
- <button id="go-back-btn" class="button-gray">Go Back</button>
15
- </div>
16
-
17
- <div id="data-table-container" class="table-container"> <table id="data-table" class="data-table"> <thead>
18
- <tr>
19
- <th>
20
- Text To Replace (Key)
21
- </th>
22
- <th>
23
- Replacement Text (Value)
24
- </th>
25
- <th>
26
- Actions
27
- </th>
28
- </tr>
29
- </thead>
30
- <tbody id="data-table-body">
31
- </tbody>
32
- </table>
33
- <p id="no-entries-message" class="no-entries-message hidden">No entries found.</p> </div>
34
- </div>
35
-
36
- <div id="entry-modal" class="modal"> <div class="modal-content"> <span class="close-button">&times;</span> <h2 id="modal-title">Add New Entry</h2> <form id="entry-form">
37
- <p>"re:" at the beginning = regex pattern (ex. re:.{3,}) </p>
38
- <div class="form-group"> <label for="key-input" class="form-label">Text To Replace (Key):</label> <input type="text" id="key-input" name="key" required class="form-input"> <input type="hidden" id="original-key-input">
39
- </div>
40
- <div class="form-group"> <label for="value-input" class="form-label">Replacement Text (Value):</label> <input type="text" id="value-input" name="value" class="form-input">
41
- </div>
42
- <div class="flex-end"> <button type="submit" class="button-blue">Save Entry</button> </div>
43
- </form>
44
- </div>
45
- </div>
46
-
47
- <script>
48
-
49
- let textData = {};
50
- let data = {};
51
-
52
- async function loadData() {
53
- try {
54
- const response = await fetch('/load-data');
55
- if (response.ok) {
56
- data = await response.json();
57
- textData = data.args?.replacements || {};
58
- } else {
59
- console.error('Failed to load data from server');
60
- }
61
- } catch (error) {
62
- console.error('Error loading data:', error);
63
- }
64
- renderTable();
65
- }
66
-
67
- async function saveData() {
68
- try {
69
- data.args.replacements = textData;
70
- const response = await fetch('/save-data', {
71
- method: 'POST',
72
- headers: { 'Content-Type': 'application/json' },
73
- body: JSON.stringify(data),
74
- });
75
- if (!response.ok) {
76
- console.error('Failed to save data to server');
77
- }
78
- } catch (error) {
79
- console.error('Error saving data:', error);
80
- }
81
- }
82
-
83
- function renderTable(dataToRender = textData) {
84
- const tableBody = document.getElementById('data-table-body');
85
- let tableHtml = '';
86
- const noEntriesMessage = document.getElementById('no-entries-message');
87
- const dataTable = document.getElementById('data-table');
88
- const keys = Object.keys(dataToRender);
89
-
90
- if (keys.length === 0) {
91
- noEntriesMessage.classList.remove('hidden');
92
- dataTable.classList.add('hidden');
93
- } else {
94
- noEntriesMessage.classList.add('hidden');
95
- dataTable.classList.remove('hidden');
96
- keys.forEach(key => {
97
- const value = dataToRender[key];
98
- tableHtml += `
99
- <tr>
100
- <td>${escapeHTML(key)}</td> <td>${escapeHTML(value)}</td> <td>
101
- <button class="action-button edit-btn" data-key="${escapeHTML(key)}">Edit</button>
102
- <button class="action-button delete-button delete-btn" data-key="${escapeHTML(key)}">Delete</button>
103
- </td>
104
- </tr>
105
- `;
106
- });
107
- tableBody.innerHTML = tableHtml;
108
- document.querySelectorAll('.edit-btn').forEach(button => {
109
- button.addEventListener('click', handleEditClick);
110
- });
111
- document.querySelectorAll('.delete-btn').forEach(button => {
112
- button.addEventListener('click', handleDeleteClick);
113
- });
114
- }
115
- }
116
-
117
- function escapeHTML(str) {
118
- const div = document.createElement('div');
119
- div.appendChild(document.createTextNode(str));
120
- return div.innerHTML;
121
- }
122
-
123
- const modal = document.getElementById('entry-modal');
124
- const modalTitle = document.getElementById('modal-title');
125
- const entryForm = document.getElementById('entry-form');
126
- const keyInput = document.getElementById('key-input');
127
- const valueInput = document.getElementById('value-input');
128
- const originalKeyInput = document.getElementById('original-key-input');
129
- const closeButton = document.querySelector('.close-button');
130
- const addNewBtn = document.getElementById('add-new-btn');
131
-
132
- addNewBtn.addEventListener('click', () => {
133
- modalTitle.textContent = 'Add New Entry';
134
- keyInput.value = '';
135
- valueInput.value = '';
136
- originalKeyInput.value = '';
137
- keyInput.disabled = false;
138
- modal.style.display = 'flex';
139
- });
140
-
141
- function handleEditClick(event) {
142
- const keyToEdit = event.target.dataset.key;
143
- const valueToEdit = textData[keyToEdit];
144
- modalTitle.textContent = 'Edit Entry';
145
- keyInput.value = keyToEdit;
146
- valueInput.value = valueToEdit;
147
- originalKeyInput.value = keyToEdit;
148
- modal.style.display = 'flex';
149
- }
150
-
151
- closeButton.addEventListener('click', () => {
152
- modal.style.display = 'none';
153
- });
154
-
155
- window.addEventListener('mousedown', (event) => {
156
- if (event.target === modal) {
157
- modal.style.display = 'none';
158
- }
159
- });
160
-
161
- entryForm.addEventListener('submit', async (event) => {
162
- event.preventDefault();
163
- const key = keyInput.value.trim();
164
- const value = valueInput.value.trim() || "";
165
- const originalKey = originalKeyInput.value;
166
-
167
- if (!key) {
168
- // Basic validation
169
- alert('Key and Value cannot be empty.');
170
- return;
171
- }
172
-
173
- let keyEdited = false;
174
- if (originalKey && originalKey !== key) {
175
- delete textData[originalKey];
176
- keyEdited = true;
177
- }
178
-
179
- if (originalKey) {
180
- if (keyEdited) {
181
- textData = { [key]: value, ...textData };
182
- } else {
183
- textData[key] = value;
184
- }
185
- } else {
186
- if (textData.hasOwnProperty(key)) {
187
- alert(`Key "${key}" already exists. Please use the Edit function to modify it.`);
188
- return;
189
- }
190
- textData = { [key]: value, ...textData };
191
- }
192
-
193
- await saveData();
194
- renderTable();
195
- modal.style.display = 'none';
196
- });
197
-
198
- function handleDeleteClick(event) {
199
- const keyToDelete = event.target.dataset.key;
200
- if (confirm(`Are you sure you want to delete the entry with key "${keyToDelete}"?`)) {
201
- if (textData.hasOwnProperty(keyToDelete)) {
202
- delete textData[keyToDelete];
203
- saveData();
204
- renderTable();
205
- }
206
- }
207
- }
208
-
209
- const searchInput = document.getElementById('search-input');
210
- const searchButton = document.getElementById('search-button');
211
-
212
- function performSearch() {
213
- const query = searchInput.value.toLowerCase();
214
- const filteredData = {};
215
- for (const key in textData) {
216
- if (textData.hasOwnProperty(key)) {
217
- const value = textData[key];
218
- if (key.toLowerCase().includes(query) || value.toLowerCase().includes(query)) {
219
- filteredData[key] = value;
220
- }
221
- }
222
- }
223
- renderTable(filteredData);
224
- }
225
-
226
- searchButton.addEventListener('click', performSearch);
227
- searchInput.addEventListener('input', performSearch);
228
-
229
- const goBackBtn = document.getElementById('go-back-btn');
230
- goBackBtn.addEventListener('click', () => {
231
- window.history.back();
232
- });
233
-
234
- loadData();
235
-
236
- </script>
237
- </body>
238
- </html>