GameSentenceMiner 2.18.1__tar.gz → 2.18.3__tar.gz

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.
Files changed (137) hide show
  1. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/util/configuration.py +2 -1
  2. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/util/get_overlay_coords.py +32 -31
  3. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner.egg-info/PKG-INFO +1 -1
  4. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/PKG-INFO +1 -1
  5. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/pyproject.toml +1 -1
  6. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/__init__.py +0 -0
  7. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/ai/__init__.py +0 -0
  8. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/ai/ai_prompting.py +0 -0
  9. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/anki.py +0 -0
  10. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/assets/__init__.py +0 -0
  11. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/assets/icon.png +0 -0
  12. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/assets/icon128.png +0 -0
  13. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/assets/icon256.png +0 -0
  14. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/assets/icon32.png +0 -0
  15. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/assets/icon512.png +0 -0
  16. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/assets/icon64.png +0 -0
  17. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/assets/pickaxe.png +0 -0
  18. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/gametext.py +0 -0
  19. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/gsm.py +0 -0
  20. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/locales/en_us.json +0 -0
  21. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/locales/ja_jp.json +0 -0
  22. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/locales/zh_cn.json +0 -0
  23. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/obs.py +0 -0
  24. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/ocr/__init__.py +0 -0
  25. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/ocr/gsm_ocr_config.py +0 -0
  26. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/ocr/ocrconfig.py +0 -0
  27. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/ocr/owocr_area_selector.py +0 -0
  28. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/ocr/owocr_helper.py +0 -0
  29. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/ocr/ss_picker.py +0 -0
  30. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/owocr/owocr/__init__.py +0 -0
  31. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/owocr/owocr/__main__.py +0 -0
  32. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/owocr/owocr/config.py +0 -0
  33. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/owocr/owocr/lens_betterproto.py +0 -0
  34. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/owocr/owocr/ocr.py +0 -0
  35. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/owocr/owocr/run.py +0 -0
  36. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/owocr/owocr/screen_coordinate_picker.py +0 -0
  37. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/tools/__init__.py +0 -0
  38. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/tools/audio_offset_selector.py +0 -0
  39. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/tools/furigana_filter_preview.py +0 -0
  40. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/tools/ss_selector.py +0 -0
  41. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/tools/window_transparency.py +0 -0
  42. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/ui/__init__.py +0 -0
  43. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/ui/anki_confirmation.py +0 -0
  44. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/ui/config_gui.py +0 -0
  45. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/ui/screenshot_selector.py +0 -0
  46. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/util/__init__.py +0 -0
  47. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/util/communication/__init__.py +0 -0
  48. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/util/communication/send.py +0 -0
  49. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/util/communication/websocket.py +0 -0
  50. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/util/db.py +0 -0
  51. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/util/downloader/Untitled_json.py +0 -0
  52. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/util/downloader/__init__.py +0 -0
  53. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/util/downloader/download_tools.py +0 -0
  54. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/util/downloader/oneocr_dl.py +0 -0
  55. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/util/electron_config.py +0 -0
  56. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/util/ffmpeg.py +0 -0
  57. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/util/gsm_utils.py +0 -0
  58. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/util/model.py +0 -0
  59. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/util/notification.py +0 -0
  60. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/util/text_log.py +0 -0
  61. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/util/win10toast/__init__.py +0 -0
  62. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/util/win10toast/__main__.py +0 -0
  63. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/vad.py +0 -0
  64. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/__init__.py +0 -0
  65. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/database_api.py +0 -0
  66. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/events.py +0 -0
  67. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/gsm_websocket.py +0 -0
  68. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/service.py +0 -0
  69. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/__init__.py +0 -0
  70. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/apple-touch-icon.png +0 -0
  71. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/css/dashboard-shared.css +0 -0
  72. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/css/kanji-grid.css +0 -0
  73. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/css/overview.css +0 -0
  74. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/css/popups-shared.css +0 -0
  75. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/css/search.css +0 -0
  76. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/css/shared.css +0 -0
  77. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/css/stats.css +0 -0
  78. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/favicon-96x96.png +0 -0
  79. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/favicon.ico +0 -0
  80. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/favicon.svg +0 -0
  81. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/js/anki_stats.js +0 -0
  82. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/js/database.js +0 -0
  83. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/js/goals.js +0 -0
  84. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/js/kanji-grid.js +0 -0
  85. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/js/overview.js +0 -0
  86. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/js/search.js +0 -0
  87. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/js/shared.js +0 -0
  88. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/js/stats.js +0 -0
  89. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/site.webmanifest +0 -0
  90. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/style.css +0 -0
  91. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/web-app-manifest-192x192.png +0 -0
  92. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/static/web-app-manifest-512x512.png +0 -0
  93. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/stats.py +0 -0
  94. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/anki_stats.html +0 -0
  95. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/basic_kanji_book_bkb_v1_v2.json +0 -0
  96. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/duolingo_kanji.json +0 -0
  97. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/grade.json +0 -0
  98. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/hk_primary_learning.json +0 -0
  99. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/hkscs2016.json +0 -0
  100. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/hsk_levels.json +0 -0
  101. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/humanum_frequency_list.json +0 -0
  102. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/jis_levels.json +0 -0
  103. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/jlpt_level.json +0 -0
  104. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/jpdb_kanji_frequency_list.json +0 -0
  105. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/jpdbv2_kanji_frequency_list.json +0 -0
  106. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/jun_das_modern_chinese_character_frequency_list.json +0 -0
  107. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/kanji_in_context_revised_edition.json +0 -0
  108. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/kanji_kentei_level.json +0 -0
  109. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/mainland_china_elementary_textbook_characters.json +0 -0
  110. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/moe_way_quiz.json +0 -0
  111. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/official_kanji.json +0 -0
  112. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/remembering_the_kanji.json +0 -0
  113. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/standard_form_of_national_characters.json +0 -0
  114. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/table_of_general_standard_chinese_characters.json +0 -0
  115. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/the_kodansha_kanji_learners_course_klc.json +0 -0
  116. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/thousand_character_classic.json +0 -0
  117. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/wanikani_levels.json +0 -0
  118. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/kanji_grid/words_hk_frequency_list.json +0 -0
  119. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/navigation.html +0 -0
  120. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/components/theme-styles.html +0 -0
  121. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/database.html +0 -0
  122. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/goals.html +0 -0
  123. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/index.html +0 -0
  124. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/overview.html +0 -0
  125. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/search.html +0 -0
  126. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/stats.html +0 -0
  127. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/templates/utility.html +0 -0
  128. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/web/texthooking_page.py +0 -0
  129. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner/wip/__init___.py +0 -0
  130. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner.egg-info/SOURCES.txt +0 -0
  131. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner.egg-info/dependency_links.txt +0 -0
  132. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner.egg-info/entry_points.txt +0 -0
  133. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner.egg-info/requires.txt +0 -0
  134. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/GameSentenceMiner.egg-info/top_level.txt +0 -0
  135. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/LICENSE +0 -0
  136. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/README.md +0 -0
  137. {gamesentenceminer-2.18.1 → gamesentenceminer-2.18.3}/setup.cfg +0 -0
@@ -864,10 +864,11 @@ class Config:
864
864
  # Add a way to migrate certain things based on version if needed, also help with better defaults
865
865
  if self.version:
866
866
  if self.version != get_current_version():
867
+ from packaging import version
867
868
  logger.info(f"Config version mismatch detected: {self.version} != {get_current_version()}")
868
869
  # Handle version mismatch
869
870
  changed = False
870
- if self.version < "2.18.0":
871
+ if version.parse(self.version) < version.parse("2.18.0"):
871
872
  changed = True
872
873
  # Example, doesn't need to be done
873
874
  for profile in self.configs.values():
@@ -188,40 +188,41 @@ class OverlayProcessor:
188
188
  For primary monitor, excludes taskbar. For others, returns full monitor area.
189
189
  monitor_index: 0 = primary monitor, 1+ = others (as in mss.monitors).
190
190
  """
191
+ # set_dpi_awareness()
191
192
  with mss.mss() as sct:
192
193
  monitors = sct.monitors[1:]
193
- return monitors[monitor_index] if 0 <= monitor_index < len(monitors) else monitors[0]
194
- # if is_windows() and monitor_index == 0:
195
- # from ctypes import wintypes
196
- # import ctypes
197
- # # Get work area for primary monitor (ignores taskbar)
198
- # SPI_GETWORKAREA = 0x0030
199
- # rect = wintypes.RECT()
200
- # res = ctypes.windll.user32.SystemParametersInfoW(
201
- # SPI_GETWORKAREA, 0, ctypes.byref(rect), 0
202
- # )
203
- # if not res:
204
- # raise ctypes.WinError()
194
+ # return monitors[monitor_index] if 0 <= monitor_index < len(monitors) else monitors[0]
195
+ if is_windows() and monitor_index == 0:
196
+ from ctypes import wintypes
197
+ import ctypes
198
+ # Get work area for primary monitor (ignores taskbar)
199
+ SPI_GETWORKAREA = 0x0030
200
+ rect = wintypes.RECT()
201
+ res = ctypes.windll.user32.SystemParametersInfoW(
202
+ SPI_GETWORKAREA, 0, ctypes.byref(rect), 0
203
+ )
204
+ if not res:
205
+ raise ctypes.WinError()
205
206
 
206
- # return {
207
- # "left": rect.left,
208
- # "top": rect.top,
209
- # "width": rect.right - rect.left,
210
- # "height": rect.bottom - rect.top,
211
- # }
212
- # elif is_windows() and monitor_index > 0:
213
- # # Secondary monitors: just return with a guess of how tall the taskbar is
214
- # taskbar_height_guess = 48 # A common taskbar height, may vary
215
- # mon = monitors[monitor_index]
216
- # return {
217
- # "left": mon["left"],
218
- # "top": mon["top"],
219
- # "width": mon["width"],
220
- # "height": mon["height"] - taskbar_height_guess
221
- # }
222
- # else:
223
- # # For non-Windows systems or unspecified monitors, return the monitor area as-is
224
- # return monitors[monitor_index] if 0 <= monitor_index < len(monitors) else monitors[0]
207
+ return {
208
+ "left": rect.left,
209
+ "top": rect.top,
210
+ "width": rect.right - rect.left,
211
+ "height": rect.bottom - rect.top,
212
+ }
213
+ elif is_windows() and monitor_index > 0:
214
+ # Secondary monitors: just return with a guess of how tall the taskbar is
215
+ taskbar_height_guess = 48 # A common taskbar height, may vary
216
+ mon = monitors[monitor_index]
217
+ return {
218
+ "left": mon["left"],
219
+ "top": mon["top"],
220
+ "width": mon["width"],
221
+ "height": mon["height"] - taskbar_height_guess
222
+ }
223
+ else:
224
+ # For non-Windows systems or unspecified monitors, return the monitor area as-is
225
+ return monitors[monitor_index] if 0 <= monitor_index < len(monitors) else monitors[0]
225
226
 
226
227
 
227
228
  def _get_full_screenshot(self) -> Tuple[Image.Image | None, int, int]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GameSentenceMiner
3
- Version: 2.18.1
3
+ Version: 2.18.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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GameSentenceMiner
3
- Version: 2.18.1
3
+ Version: 2.18.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
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
7
7
 
8
8
  [project]
9
9
  name = "GameSentenceMiner"
10
- version = "2.18.1"
10
+ version = "2.18.3"
11
11
  description = "A tool for mining sentences from games. Update: Overlay?"
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.10"