GameSentenceMiner 2.19.2.dev0__tar.gz → 2.19.4__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.
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/anki.py +3 -3
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/gsm.py +4 -4
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/obs.py +2 -1
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/ocr/owocr_helper.py +63 -3
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/owocr/owocr/ocr.py +573 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/owocr/owocr/run.py +7 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/ui/config_gui.py +8 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/text_log.py +6 -4
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/texthooking_page.py +17 -2
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner.egg-info/PKG-INFO +35 -34
- gamesentenceminer-2.19.4/GameSentenceMiner.egg-info/requires.txt +39 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/PKG-INFO +35 -34
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/pyproject.toml +36 -35
- gamesentenceminer-2.19.2.dev0/GameSentenceMiner.egg-info/requires.txt +0 -38
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/__init__.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/ai/__init__.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/ai/ai_prompting.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/assets/__init__.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/assets/icon.png +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/assets/icon128.png +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/assets/icon256.png +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/assets/icon32.png +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/assets/icon512.png +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/assets/icon64.png +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/assets/pickaxe.png +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/gametext.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/locales/en_us.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/locales/ja_jp.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/locales/zh_cn.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/ocr/__init__.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/ocr/gsm_ocr_config.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/ocr/ocrconfig.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/ocr/owocr_area_selector.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/ocr/ss_picker.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/owocr/owocr/__init__.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/owocr/owocr/__main__.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/owocr/owocr/config.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/owocr/owocr/lens_betterproto.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/owocr/owocr/screen_coordinate_picker.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/tools/__init__.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/tools/audio_offset_selector.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/tools/furigana_filter_preview.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/tools/ss_selector.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/tools/window_transparency.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/ui/__init__.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/ui/anki_confirmation.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/ui/furigana_filter_preview.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/ui/screenshot_selector.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/__init__.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/audio_player.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/communication/__init__.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/communication/send.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/communication/websocket.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/configuration.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/db.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/downloader/Untitled_json.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/downloader/__init__.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/downloader/download_tools.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/downloader/oneocr_dl.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/electron_config.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/ffmpeg.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/games_table.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/get_overlay_coords.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/gsm_utils.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/model.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/notification.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/win10toast/__init__.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/util/win10toast/__main__.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/vad.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/__init__.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/anki_api_endpoints.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/database_api.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/events.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/gsm_websocket.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/service.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/__init__.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/apple-touch-icon.png +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/css/dashboard-shared.css +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/css/kanji-grid.css +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/css/loading-skeleton.css +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/css/overview.css +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/css/popups-shared.css +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/css/search.css +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/css/shared.css +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/css/stats.css +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/favicon-96x96.png +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/favicon.ico +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/favicon.svg +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/js/anki_stats.js +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/js/database.js +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/js/goals.js +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/js/heatmap.js +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/js/kanji-grid.js +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/js/overview.js +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/js/search.js +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/js/shared.js +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/js/stats.js +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/site.webmanifest +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/style.css +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/web-app-manifest-192x192.png +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/static/web-app-manifest-512x512.png +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/stats.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/anki_stats.html +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/date-range.html +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/html-head.html +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/js-config.html +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/basic_kanji_book_bkb_v1_v2.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/duolingo_kanji.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/grade.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/hk_primary_learning.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/hkscs2016.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/hsk_levels.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/humanum_frequency_list.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/jis_levels.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/jlpt_level.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/jpdb_kanji_frequency_list.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/jpdbv2_kanji_frequency_list.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/jun_das_modern_chinese_character_frequency_list.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/kanji_in_context_revised_edition.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/kanji_kentei_level.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/mainland_china_elementary_textbook_characters.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/moe_way_quiz.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/official_kanji.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/remembering_the_kanji.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/standard_form_of_national_characters.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/table_of_general_standard_chinese_characters.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/the_kodansha_kanji_learners_course_klc.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/thousand_character_classic.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/wanikani_levels.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/kanji_grid/words_hk_frequency_list.json +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/navigation.html +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/popups.html +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/settings-modal.html +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/components/theme-styles.html +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/database.html +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/goals.html +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/index.html +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/overview.html +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/search.html +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/stats.html +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/web/templates/utility.html +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/wip/__init___.py +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner.egg-info/SOURCES.txt +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner.egg-info/dependency_links.txt +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner.egg-info/entry_points.txt +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner.egg-info/top_level.txt +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/LICENSE +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/README.md +0 -0
- {gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/setup.cfg +0 -0
|
@@ -559,10 +559,10 @@ def update_new_card():
|
|
|
559
559
|
else:
|
|
560
560
|
logger.info("New card(s) detected! Added to Processing Queue!")
|
|
561
561
|
gsm_state.last_mined_line = game_line
|
|
562
|
-
queue_card_for_processing(last_card, lines)
|
|
562
|
+
queue_card_for_processing(last_card, lines, game_line)
|
|
563
563
|
|
|
564
|
-
def queue_card_for_processing(last_card, lines):
|
|
565
|
-
card_queue.append((last_card, datetime.now(), lines))
|
|
564
|
+
def queue_card_for_processing(last_card, lines, last_mined_line):
|
|
565
|
+
card_queue.append((last_card, datetime.now(), lines, last_mined_line))
|
|
566
566
|
texthooking_page.reset_checked_lines()
|
|
567
567
|
try:
|
|
568
568
|
obs.save_replay_buffer()
|
|
@@ -32,7 +32,7 @@ try:
|
|
|
32
32
|
|
|
33
33
|
import keyboard
|
|
34
34
|
import ttkbootstrap as ttk
|
|
35
|
-
from PIL import Image
|
|
35
|
+
from PIL import Image
|
|
36
36
|
from pystray import Icon, Menu, MenuItem
|
|
37
37
|
from watchdog.events import FileSystemEventHandler
|
|
38
38
|
from watchdog.observers import Observer
|
|
@@ -187,7 +187,7 @@ class VideoToAudioHandler(FileSystemEventHandler):
|
|
|
187
187
|
return
|
|
188
188
|
try:
|
|
189
189
|
if anki.card_queue and len(anki.card_queue) > 0:
|
|
190
|
-
last_note, anki_card_creation_time, selected_lines = anki.card_queue.pop(
|
|
190
|
+
last_note, anki_card_creation_time, selected_lines, mined_line = anki.card_queue.pop(
|
|
191
191
|
0)
|
|
192
192
|
else:
|
|
193
193
|
logger.info(
|
|
@@ -211,11 +211,11 @@ class VideoToAudioHandler(FileSystemEventHandler):
|
|
|
211
211
|
full_text = ''
|
|
212
212
|
if selected_lines:
|
|
213
213
|
start_line = selected_lines[0]
|
|
214
|
-
mined_line = get_mined_line(last_note, selected_lines)
|
|
214
|
+
# mined_line = get_mined_line(last_note, selected_lines)
|
|
215
215
|
line_cutoff = selected_lines[-1].get_next_time()
|
|
216
216
|
full_text = remove_html_and_cloze_tags(note['fields'][get_config().anki.sentence_field])
|
|
217
217
|
else:
|
|
218
|
-
mined_line = get_text_event(last_note)
|
|
218
|
+
# mined_line = get_text_event(last_note)
|
|
219
219
|
if mined_line:
|
|
220
220
|
start_line = mined_line
|
|
221
221
|
if mined_line.next:
|
|
@@ -64,7 +64,8 @@ class OBSConnectionPool:
|
|
|
64
64
|
except Exception as e:
|
|
65
65
|
if str(e) == self.last_error_shown[i]:
|
|
66
66
|
continue
|
|
67
|
-
|
|
67
|
+
if self.connected_once:
|
|
68
|
+
logger.error(f"Failed to create client {i} in pool during initial connection: {e}")
|
|
68
69
|
self.last_error_shown[i] = str(e)
|
|
69
70
|
return True
|
|
70
71
|
|
{gamesentenceminer-2.19.2.dev0 → gamesentenceminer-2.19.4}/GameSentenceMiner/ocr/owocr_helper.py
RENAMED
|
@@ -344,15 +344,75 @@ def reset_callback_vars():
|
|
|
344
344
|
|
|
345
345
|
# def get_ocr_ocr2(self):
|
|
346
346
|
# return self.ocr2
|
|
347
|
+
last_meiki_crop_coords = None
|
|
348
|
+
last_meiki_crop_time = None
|
|
349
|
+
last_meiki_success = None
|
|
347
350
|
|
|
348
|
-
|
|
349
|
-
|
|
351
|
+
|
|
352
|
+
def text_callback(text, orig_text, time, img=None, came_from_ss=False, filtering=None, crop_coords=None, meiki_boxes=None):
|
|
353
|
+
global twopassocr, ocr2, previous_text, last_oneocr_time, text_stable_start_time, previous_orig_text, previous_img, force_stable, previous_ocr1_result, previous_text_list, last_sent_result, last_meiki_crop_coords, last_meiki_success, last_meiki_crop_time
|
|
350
354
|
orig_text_string = ''.join([item for item in orig_text if item is not None]) if orig_text else ""
|
|
351
355
|
if came_from_ss:
|
|
352
356
|
save_result_image(img)
|
|
353
357
|
asyncio.run(send_result(text, time))
|
|
354
358
|
return
|
|
355
|
-
|
|
359
|
+
|
|
360
|
+
if meiki_boxes:
|
|
361
|
+
# If we don't have a previous meiki crop coords, store this one and wait for the next run
|
|
362
|
+
try:
|
|
363
|
+
if last_meiki_crop_coords is None:
|
|
364
|
+
last_meiki_crop_coords = crop_coords
|
|
365
|
+
last_meiki_crop_time = time
|
|
366
|
+
previous_img = img
|
|
367
|
+
return
|
|
368
|
+
|
|
369
|
+
# Ensure both coords exist
|
|
370
|
+
if not crop_coords or not last_meiki_crop_coords:
|
|
371
|
+
last_meiki_crop_coords = crop_coords
|
|
372
|
+
last_meiki_crop_time = time
|
|
373
|
+
return
|
|
374
|
+
|
|
375
|
+
# Compare coordinates within tolerance (pixels)
|
|
376
|
+
tol = 5
|
|
377
|
+
try:
|
|
378
|
+
close = all(abs(int(crop_coords[i]) - int(last_meiki_crop_coords[i])) <= tol for i in range(4))
|
|
379
|
+
except Exception:
|
|
380
|
+
# Fallback: if values not int-convertible, set not close
|
|
381
|
+
close = False
|
|
382
|
+
|
|
383
|
+
if close:
|
|
384
|
+
if all(last_meiki_success and abs(int(crop_coords[i]) - int(last_meiki_success[i])) <= tol for i in range(4)):
|
|
385
|
+
# Reset last_meiki_crop_coords and time so we require another matching pair for a future queue
|
|
386
|
+
last_meiki_crop_coords = None
|
|
387
|
+
last_meiki_crop_time = None
|
|
388
|
+
return
|
|
389
|
+
# Stable crop: queue second OCR immediately
|
|
390
|
+
try:
|
|
391
|
+
stable_time = last_meiki_crop_time
|
|
392
|
+
previous_img_local = previous_img
|
|
393
|
+
pre_crop_image = previous_img_local
|
|
394
|
+
ocr2_image = get_ocr2_image(crop_coords, og_image=previous_img_local, ocr2_engine=get_ocr_ocr2())
|
|
395
|
+
# Use the earlier timestamp for when the stable crop started if available
|
|
396
|
+
# ocr2_image.show()
|
|
397
|
+
second_ocr_queue.put((text, stable_time, ocr2_image, filtering, pre_crop_image))
|
|
398
|
+
run.set_last_image(img)
|
|
399
|
+
last_meiki_success = crop_coords
|
|
400
|
+
except Exception as e:
|
|
401
|
+
logger.info(f"Failed to queue second OCR task: {e}", exc_info=True)
|
|
402
|
+
# Reset last_meiki_crop_coords and time so we require another matching pair for a future queue
|
|
403
|
+
last_meiki_crop_coords = None
|
|
404
|
+
last_meiki_crop_time = None
|
|
405
|
+
return
|
|
406
|
+
else:
|
|
407
|
+
# Not stable: replace last and wait for the next run
|
|
408
|
+
last_meiki_crop_coords = crop_coords
|
|
409
|
+
last_meiki_success = None
|
|
410
|
+
previous_img = img
|
|
411
|
+
return
|
|
412
|
+
except Exception as e:
|
|
413
|
+
logger.debug(f"Error handling meiki crop coords stability check: {e}")
|
|
414
|
+
last_meiki_crop_coords = crop_coords
|
|
415
|
+
|
|
356
416
|
if not text:
|
|
357
417
|
run.set_last_image(img)
|
|
358
418
|
|