GameSentenceMiner 2.19.15__tar.gz → 2.19.17__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.

Potentially problematic release.


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

Files changed (148) hide show
  1. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/gsm.py +3 -1
  2. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/ocr/owocr_helper.py +3 -3
  3. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/ffmpeg.py +23 -4
  4. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner.egg-info/PKG-INFO +1 -1
  5. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/PKG-INFO +1 -1
  6. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/pyproject.toml +1 -1
  7. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/__init__.py +0 -0
  8. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/ai/__init__.py +0 -0
  9. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/ai/ai_prompting.py +0 -0
  10. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/anki.py +0 -0
  11. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/assets/__init__.py +0 -0
  12. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/assets/icon.png +0 -0
  13. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/assets/icon128.png +0 -0
  14. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/assets/icon256.png +0 -0
  15. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/assets/icon32.png +0 -0
  16. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/assets/icon512.png +0 -0
  17. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/assets/icon64.png +0 -0
  18. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/assets/pickaxe.png +0 -0
  19. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/gametext.py +0 -0
  20. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/locales/en_us.json +0 -0
  21. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/locales/ja_jp.json +0 -0
  22. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/locales/zh_cn.json +0 -0
  23. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/obs.py +0 -0
  24. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/ocr/__init__.py +0 -0
  25. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/ocr/gsm_ocr_config.py +0 -0
  26. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/ocr/ocrconfig.py +0 -0
  27. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/ocr/owocr_area_selector.py +0 -0
  28. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/ocr/ss_picker.py +0 -0
  29. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/owocr/owocr/__init__.py +0 -0
  30. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/owocr/owocr/__main__.py +0 -0
  31. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/owocr/owocr/config.py +0 -0
  32. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/owocr/owocr/lens_betterproto.py +0 -0
  33. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/owocr/owocr/ocr.py +0 -0
  34. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/owocr/owocr/run.py +0 -0
  35. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/owocr/owocr/screen_coordinate_picker.py +0 -0
  36. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/tools/__init__.py +0 -0
  37. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/tools/audio_offset_selector.py +0 -0
  38. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/tools/furigana_filter_preview.py +0 -0
  39. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/tools/ss_selector.py +0 -0
  40. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/tools/window_transparency.py +0 -0
  41. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/ui/__init__.py +0 -0
  42. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/ui/anki_confirmation.py +0 -0
  43. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/ui/config_gui.py +0 -0
  44. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/ui/furigana_filter_preview.py +0 -0
  45. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/ui/screenshot_selector.py +0 -0
  46. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/__init__.py +0 -0
  47. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/audio_player.py +0 -0
  48. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/communication/__init__.py +0 -0
  49. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/communication/send.py +0 -0
  50. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/communication/websocket.py +0 -0
  51. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/configuration.py +0 -0
  52. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/db.py +0 -0
  53. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/downloader/Untitled_json.py +0 -0
  54. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/downloader/__init__.py +0 -0
  55. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/downloader/download_tools.py +0 -0
  56. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/downloader/oneocr_dl.py +0 -0
  57. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/electron_config.py +0 -0
  58. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/games_table.py +0 -0
  59. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/get_overlay_coords.py +0 -0
  60. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/gsm_utils.py +0 -0
  61. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/model.py +0 -0
  62. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/notification.py +0 -0
  63. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/text_log.py +0 -0
  64. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/win10toast/__init__.py +0 -0
  65. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/util/win10toast/__main__.py +0 -0
  66. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/vad.py +0 -0
  67. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/__init__.py +0 -0
  68. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/anki_api_endpoints.py +0 -0
  69. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/database_api.py +0 -0
  70. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/events.py +0 -0
  71. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/gsm_websocket.py +0 -0
  72. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/service.py +0 -0
  73. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/__init__.py +0 -0
  74. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/apple-touch-icon.png +0 -0
  75. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/css/dashboard-shared.css +0 -0
  76. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/css/kanji-grid.css +0 -0
  77. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/css/loading-skeleton.css +0 -0
  78. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/css/overview.css +0 -0
  79. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/css/popups-shared.css +0 -0
  80. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/css/search.css +0 -0
  81. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/css/shared.css +0 -0
  82. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/css/stats.css +0 -0
  83. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/favicon-96x96.png +0 -0
  84. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/favicon.ico +0 -0
  85. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/favicon.svg +0 -0
  86. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/js/anki_stats.js +0 -0
  87. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/js/database.js +0 -0
  88. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/js/goals.js +0 -0
  89. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/js/heatmap.js +0 -0
  90. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/js/kanji-grid.js +0 -0
  91. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/js/overview.js +0 -0
  92. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/js/search.js +0 -0
  93. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/js/shared.js +0 -0
  94. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/js/stats.js +0 -0
  95. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/site.webmanifest +0 -0
  96. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/style.css +0 -0
  97. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/web-app-manifest-192x192.png +0 -0
  98. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/static/web-app-manifest-512x512.png +0 -0
  99. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/stats.py +0 -0
  100. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/anki_stats.html +0 -0
  101. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/date-range.html +0 -0
  102. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/html-head.html +0 -0
  103. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/js-config.html +0 -0
  104. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/basic_kanji_book_bkb_v1_v2.json +0 -0
  105. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/duolingo_kanji.json +0 -0
  106. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/grade.json +0 -0
  107. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/hk_primary_learning.json +0 -0
  108. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/hkscs2016.json +0 -0
  109. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/hsk_levels.json +0 -0
  110. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/humanum_frequency_list.json +0 -0
  111. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/jis_levels.json +0 -0
  112. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/jlpt_level.json +0 -0
  113. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/jpdb_kanji_frequency_list.json +0 -0
  114. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/jpdbv2_kanji_frequency_list.json +0 -0
  115. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/jun_das_modern_chinese_character_frequency_list.json +0 -0
  116. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/kanji_in_context_revised_edition.json +0 -0
  117. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/kanji_kentei_level.json +0 -0
  118. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/mainland_china_elementary_textbook_characters.json +0 -0
  119. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/moe_way_quiz.json +0 -0
  120. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/official_kanji.json +0 -0
  121. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/remembering_the_kanji.json +0 -0
  122. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/standard_form_of_national_characters.json +0 -0
  123. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/table_of_general_standard_chinese_characters.json +0 -0
  124. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/the_kodansha_kanji_learners_course_klc.json +0 -0
  125. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/thousand_character_classic.json +0 -0
  126. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/wanikani_levels.json +0 -0
  127. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/kanji_grid/words_hk_frequency_list.json +0 -0
  128. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/navigation.html +0 -0
  129. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/popups.html +0 -0
  130. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/settings-modal.html +0 -0
  131. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/components/theme-styles.html +0 -0
  132. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/database.html +0 -0
  133. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/goals.html +0 -0
  134. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/index.html +0 -0
  135. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/overview.html +0 -0
  136. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/search.html +0 -0
  137. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/stats.html +0 -0
  138. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/templates/utility.html +0 -0
  139. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/web/texthooking_page.py +0 -0
  140. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner/wip/__init___.py +0 -0
  141. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner.egg-info/SOURCES.txt +0 -0
  142. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner.egg-info/dependency_links.txt +0 -0
  143. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner.egg-info/entry_points.txt +0 -0
  144. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner.egg-info/requires.txt +0 -0
  145. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/GameSentenceMiner.egg-info/top_level.txt +0 -0
  146. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/LICENSE +0 -0
  147. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/README.md +0 -0
  148. {gamesentenceminer-2.19.15 → gamesentenceminer-2.19.17}/setup.cfg +0 -0
@@ -13,6 +13,8 @@ def handle_error_in_initialization(e):
13
13
  sys.exit(1)
14
14
 
15
15
  Icon = None
16
+ Menu = None
17
+ MenuItem = None
16
18
 
17
19
  try:
18
20
  import GameSentenceMiner.util.configuration
@@ -41,7 +43,7 @@ try:
41
43
  from PIL import Image
42
44
  try:
43
45
  pass
44
- # from pystray import Icon, Menu, MenuItem
46
+ from pystray import Icon, Menu, MenuItem
45
47
  except Exception:
46
48
  logger.warning("pystray not installed correctly, tray icon will not work.")
47
49
  from watchdog.events import FileSystemEventHandler
@@ -21,7 +21,7 @@ from rapidfuzz import fuzz
21
21
  from GameSentenceMiner import obs
22
22
  from GameSentenceMiner.ocr.ss_picker import ScreenCropper
23
23
  from GameSentenceMiner.owocr.owocr.run import TextFiltering
24
- from GameSentenceMiner.util.configuration import get_config, get_app_directory, get_temporary_directory
24
+ from GameSentenceMiner.util.configuration import get_config, get_app_directory, get_temporary_directory, is_windows
25
25
  from GameSentenceMiner.ocr.gsm_ocr_config import OCRConfig, has_config_changed, set_dpi_awareness, get_window, get_ocr_config_path
26
26
  from GameSentenceMiner.owocr.owocr import run
27
27
  from GameSentenceMiner.util.electron_config import get_ocr_ocr2, get_ocr_send_to_clipboard, get_ocr_scan_rate, \
@@ -619,7 +619,6 @@ def process_task_queue():
619
619
 
620
620
  def run_oneocr(ocr_config: OCRConfig, rectangles, config_check_thread):
621
621
  global done
622
- print("Running OneOCR")
623
622
  screen_area = None
624
623
  screen_areas = [",".join(str(c) for c in rect_config.coordinates) for rect_config in rectangles if not rect_config.is_excluded]
625
624
  exclusions = list(rect.coordinates for rect in list(filter(lambda x: x.is_excluded, rectangles)))
@@ -808,7 +807,8 @@ if __name__ == "__main__":
808
807
  worker_thread.start()
809
808
  websocket_server_thread = WebsocketServerThread(read=True)
810
809
  websocket_server_thread.start()
811
- add_ss_hotkey(ss_hotkey)
810
+ if is_windows():
811
+ add_ss_hotkey(ss_hotkey)
812
812
  try:
813
813
  while not done:
814
814
  time.sleep(1)
@@ -228,9 +228,19 @@ def get_screenshot(video_file, screenshot_timing, try_selector=False):
228
228
  output_image = make_unique_file_name(os.path.join(
229
229
  get_temporary_directory(), f"{obs.get_current_game(sanitize=True)}.{get_config().screenshot.extension}"))
230
230
 
231
+ pre_input_args = []
232
+ pre_input_args_string = ""
233
+ if get_config().screenshot.custom_ffmpeg_settings:
234
+ if '-hwaccel' in get_config().screenshot.custom_ffmpeg_settings:
235
+ hwaccel_args = get_config().screenshot.custom_ffmpeg_settings.split(" ")
236
+ hwaccel_index = hwaccel_args.index('-hwaccel')
237
+ pre_input_args.extend(hwaccel_args[hwaccel_index:hwaccel_index + 2])
238
+ pre_input_args_string = " ".join(pre_input_args)
239
+
231
240
  # Base command for extracting the frame
232
241
  ffmpeg_command = ffmpeg_base_command_list + [
233
242
  "-ss", f"{screenshot_timing}",
243
+ ] + pre_input_args + [
234
244
  "-i", f"{video_file}",
235
245
  "-vframes", "1" # Extract only one frame
236
246
  ]
@@ -252,7 +262,7 @@ def get_screenshot(video_file, screenshot_timing, try_selector=False):
252
262
  ffmpeg_command.extend(["-vf", ",".join(video_filters)])
253
263
 
254
264
  if get_config().screenshot.custom_ffmpeg_settings:
255
- ffmpeg_command.extend(get_config().screenshot.custom_ffmpeg_settings.replace("\"", "").split(" "))
265
+ ffmpeg_command.extend(get_config().screenshot.custom_ffmpeg_settings.replace("\"", "").replace(pre_input_args_string, "").split())
256
266
  else:
257
267
  # Ensure quality settings are strings
258
268
  ffmpeg_command.extend(["-compression_level", "6", "-q:v", str(get_config().screenshot.quality)])
@@ -598,14 +608,23 @@ def get_screenshot_time(video_path, game_line, default_beginning=False, vad_resu
598
608
  def process_image(image_file):
599
609
  output_image = make_unique_file_name(
600
610
  os.path.join(get_temporary_directory(), f"{obs.get_current_game(sanitize=True)}.{get_config().screenshot.extension}"))
611
+
612
+ pre_input_args = []
613
+ pre_input_args_string = ""
614
+ if get_config().screenshot.custom_ffmpeg_settings:
615
+ if '-hwaccel' in get_config().screenshot.custom_ffmpeg_settings:
616
+ hwaccel_args = get_config().screenshot.custom_ffmpeg_settings.split()
617
+ hwaccel_index = hwaccel_args.index('-hwaccel')
618
+ pre_input_args.extend(hwaccel_args[hwaccel_index:hwaccel_index + 2])
619
+ pre_input_args_string = " ".join(pre_input_args)
601
620
 
602
621
  # FFmpeg command to process the input image
603
- ffmpeg_command = ffmpeg_base_command_list + [
622
+ ffmpeg_command = ffmpeg_base_command_list + pre_input_args + [
604
623
  "-i", image_file
605
624
  ]
606
625
 
607
626
  if get_config().screenshot.custom_ffmpeg_settings:
608
- ffmpeg_command.extend(get_config().screenshot.custom_ffmpeg_settings.split(" "))
627
+ ffmpeg_command.extend(get_config().screenshot.custom_ffmpeg_settings.replace(pre_input_args_string, "").split())
609
628
  else:
610
629
  ffmpeg_command.extend(["-compression_level", "6", "-q:v", get_config().screenshot.quality])
611
630
 
@@ -769,7 +788,7 @@ def reencode_file_with_user_config(input_file, final_output_audio, user_ffmpeg_o
769
788
  command = ffmpeg_base_command_list + [
770
789
  "-i", input_file,
771
790
  "-map", "0:a"
772
- ] + user_ffmpeg_options.replace("\"", "").split(" ") + [
791
+ ] + user_ffmpeg_options.replace("\"", "").split() + [
773
792
  temp_file
774
793
  ]
775
794
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GameSentenceMiner
3
- Version: 2.19.15
3
+ Version: 2.19.17
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GameSentenceMiner
3
- Version: 2.19.15
3
+ Version: 2.19.17
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
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
7
7
 
8
8
  [project]
9
9
  name = "GameSentenceMiner"
10
- version = "2.19.15"
10
+ version = "2.19.17"
11
11
  description = "A tool for mining sentences from games. Update: Dependencies, replay buffer based line searching, and bug fixes."
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.10, <3.14"