GameSentenceMiner 2.19.13__tar.gz → 2.19.15__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.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/gsm.py +32 -7
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/configuration.py +17 -2
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner.egg-info/PKG-INFO +1 -1
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/PKG-INFO +1 -1
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/pyproject.toml +1 -1
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/__init__.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/ai/__init__.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/ai/ai_prompting.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/anki.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/assets/__init__.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/assets/icon.png +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/assets/icon128.png +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/assets/icon256.png +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/assets/icon32.png +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/assets/icon512.png +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/assets/icon64.png +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/assets/pickaxe.png +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/gametext.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/locales/en_us.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/locales/ja_jp.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/locales/zh_cn.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/obs.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/ocr/__init__.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/ocr/gsm_ocr_config.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/ocr/ocrconfig.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/ocr/owocr_area_selector.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/ocr/owocr_helper.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/ocr/ss_picker.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/owocr/owocr/__init__.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/owocr/owocr/__main__.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/owocr/owocr/config.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/owocr/owocr/lens_betterproto.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/owocr/owocr/ocr.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/owocr/owocr/run.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/owocr/owocr/screen_coordinate_picker.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/tools/__init__.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/tools/audio_offset_selector.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/tools/furigana_filter_preview.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/tools/ss_selector.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/tools/window_transparency.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/ui/__init__.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/ui/anki_confirmation.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/ui/config_gui.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/ui/furigana_filter_preview.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/ui/screenshot_selector.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/__init__.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/audio_player.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/communication/__init__.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/communication/send.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/communication/websocket.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/db.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/downloader/Untitled_json.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/downloader/__init__.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/downloader/download_tools.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/downloader/oneocr_dl.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/electron_config.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/ffmpeg.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/games_table.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/get_overlay_coords.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/gsm_utils.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/model.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/notification.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/text_log.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/win10toast/__init__.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/win10toast/__main__.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/vad.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/__init__.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/anki_api_endpoints.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/database_api.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/events.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/gsm_websocket.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/service.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/__init__.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/apple-touch-icon.png +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/css/dashboard-shared.css +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/css/kanji-grid.css +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/css/loading-skeleton.css +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/css/overview.css +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/css/popups-shared.css +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/css/search.css +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/css/shared.css +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/css/stats.css +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/favicon-96x96.png +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/favicon.ico +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/favicon.svg +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/js/anki_stats.js +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/js/database.js +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/js/goals.js +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/js/heatmap.js +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/js/kanji-grid.js +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/js/overview.js +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/js/search.js +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/js/shared.js +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/js/stats.js +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/site.webmanifest +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/style.css +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/web-app-manifest-192x192.png +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/web-app-manifest-512x512.png +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/stats.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/anki_stats.html +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/date-range.html +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/html-head.html +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/js-config.html +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/basic_kanji_book_bkb_v1_v2.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/duolingo_kanji.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/grade.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/hk_primary_learning.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/hkscs2016.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/hsk_levels.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/humanum_frequency_list.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/jis_levels.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/jlpt_level.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/jpdb_kanji_frequency_list.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/jpdbv2_kanji_frequency_list.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/jun_das_modern_chinese_character_frequency_list.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/kanji_in_context_revised_edition.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/kanji_kentei_level.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/mainland_china_elementary_textbook_characters.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/moe_way_quiz.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/official_kanji.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/remembering_the_kanji.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/standard_form_of_national_characters.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/table_of_general_standard_chinese_characters.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/the_kodansha_kanji_learners_course_klc.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/thousand_character_classic.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/wanikani_levels.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/kanji_grid/words_hk_frequency_list.json +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/navigation.html +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/popups.html +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/settings-modal.html +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/components/theme-styles.html +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/database.html +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/goals.html +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/index.html +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/overview.html +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/search.html +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/stats.html +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/utility.html +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/texthooking_page.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/wip/__init___.py +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner.egg-info/SOURCES.txt +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner.egg-info/dependency_links.txt +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner.egg-info/entry_points.txt +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner.egg-info/requires.txt +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner.egg-info/top_level.txt +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/LICENSE +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/README.md +0 -0
- {gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/setup.cfg +0 -0
|
@@ -12,8 +12,14 @@ def handle_error_in_initialization(e):
|
|
|
12
12
|
logger.info("Exiting due to initialization error.")
|
|
13
13
|
sys.exit(1)
|
|
14
14
|
|
|
15
|
+
Icon = None
|
|
15
16
|
|
|
16
17
|
try:
|
|
18
|
+
import GameSentenceMiner.util.configuration
|
|
19
|
+
from GameSentenceMiner.util.configuration import logger, gsm_state, get_config, anki_results, AnkiUpdateResult, \
|
|
20
|
+
get_temporary_directory, get_log_path, get_master_config, switch_profile_and_save, get_app_directory, gsm_status, \
|
|
21
|
+
is_windows, is_linux, get_ffmpeg_path, is_mac
|
|
22
|
+
|
|
17
23
|
import asyncio
|
|
18
24
|
import os
|
|
19
25
|
import shutil
|
|
@@ -33,16 +39,16 @@ try:
|
|
|
33
39
|
import keyboard
|
|
34
40
|
import ttkbootstrap as ttk
|
|
35
41
|
from PIL import Image
|
|
36
|
-
|
|
42
|
+
try:
|
|
43
|
+
pass
|
|
44
|
+
# from pystray import Icon, Menu, MenuItem
|
|
45
|
+
except Exception:
|
|
46
|
+
logger.warning("pystray not installed correctly, tray icon will not work.")
|
|
37
47
|
from watchdog.events import FileSystemEventHandler
|
|
38
48
|
from watchdog.observers import Observer
|
|
39
49
|
import psutil
|
|
40
50
|
|
|
41
51
|
start_time = time.time()
|
|
42
|
-
import GameSentenceMiner.util.configuration
|
|
43
|
-
from GameSentenceMiner.util.configuration import logger, gsm_state, get_config, anki_results, AnkiUpdateResult, \
|
|
44
|
-
get_temporary_directory, get_log_path, get_master_config, switch_profile_and_save, get_app_directory, gsm_status, \
|
|
45
|
-
is_windows, is_linux, get_ffmpeg_path
|
|
46
52
|
|
|
47
53
|
logger.debug(f"[Import] configuration: {time.time() - start_time:.3f}s")
|
|
48
54
|
|
|
@@ -443,9 +449,15 @@ class GSMTray(threading.Thread):
|
|
|
443
449
|
self.icon = None
|
|
444
450
|
|
|
445
451
|
def run(self):
|
|
452
|
+
if not Icon:
|
|
453
|
+
logger.warning("Tray icon functionality is not available.")
|
|
454
|
+
return
|
|
446
455
|
self.run_tray()
|
|
447
456
|
|
|
448
457
|
def run_tray(self):
|
|
458
|
+
if not Icon:
|
|
459
|
+
logger.warning("Tray icon functionality is not available.")
|
|
460
|
+
return
|
|
449
461
|
def run_anki_confirmation_window():
|
|
450
462
|
settings_window.show_anki_confirmation_dialog(expression="こんにちは",
|
|
451
463
|
sentence="こんにちは、世界!元気ですか?",
|
|
@@ -475,6 +487,8 @@ class GSMTray(threading.Thread):
|
|
|
475
487
|
|
|
476
488
|
def update_icon(self, profile=None):
|
|
477
489
|
global menu, icon
|
|
490
|
+
if not self.icon:
|
|
491
|
+
return
|
|
478
492
|
# Recreate the menu with the updated button text
|
|
479
493
|
profile_menu = Menu(
|
|
480
494
|
*[MenuItem(("Active: " if profile == get_master_config().current_profile else "") + profile, self.switch_profile) for
|
|
@@ -496,6 +510,8 @@ class GSMTray(threading.Thread):
|
|
|
496
510
|
self.icon.update_menu()
|
|
497
511
|
|
|
498
512
|
def switch_profile(self, icon, item):
|
|
513
|
+
if not self.icon:
|
|
514
|
+
return
|
|
499
515
|
if "Active:" in item.text:
|
|
500
516
|
logger.error("You cannot switch to the currently active profile!")
|
|
501
517
|
return
|
|
@@ -509,11 +525,15 @@ class GSMTray(threading.Thread):
|
|
|
509
525
|
send_restart_signal()
|
|
510
526
|
|
|
511
527
|
def play_pause(self, icon, item):
|
|
528
|
+
if not self.icon:
|
|
529
|
+
return
|
|
512
530
|
global obs_paused, menu
|
|
513
531
|
obs.toggle_replay_buffer()
|
|
514
532
|
self.update_icon()
|
|
515
533
|
|
|
516
534
|
def stop(self):
|
|
535
|
+
if not self.icon:
|
|
536
|
+
return
|
|
517
537
|
if self.icon:
|
|
518
538
|
self.icon.stop()
|
|
519
539
|
|
|
@@ -681,6 +701,9 @@ def initialize(reloading=False):
|
|
|
681
701
|
if shutil.which("ffmpeg") is None:
|
|
682
702
|
os.environ["PATH"] += os.pathsep + \
|
|
683
703
|
os.path.dirname(get_ffmpeg_path())
|
|
704
|
+
if is_mac():
|
|
705
|
+
if shutil.which("ffmpeg") is None:
|
|
706
|
+
os.environ["PATH"] += os.pathsep + "/opt/homebrew/bin"
|
|
684
707
|
if get_config().obs.open_obs:
|
|
685
708
|
obs_process = obs.start_obs()
|
|
686
709
|
# obs.connect_to_obs(start_replay=True)
|
|
@@ -861,13 +884,15 @@ async def async_main(reloading=False):
|
|
|
861
884
|
try:
|
|
862
885
|
if get_config().general.open_config_on_startup:
|
|
863
886
|
root.after(50, settings_window.show)
|
|
864
|
-
|
|
887
|
+
if Icon:
|
|
888
|
+
root.after(50, gsm_tray.start)
|
|
865
889
|
# root.after(100, settings_window.show_anki_confirmation_dialog(expression="こんにちは",
|
|
866
890
|
# sentence="こんにちは、世界!元気ですか?",
|
|
867
891
|
# screenshot_path="test_image.png",
|
|
868
892
|
# audio_path="C:/path/to/my/audio.mp3",
|
|
869
893
|
# translation="Hello world! How are you?"))
|
|
870
|
-
|
|
894
|
+
if Icon:
|
|
895
|
+
settings_window.add_save_hook(gsm_tray.update_icon)
|
|
871
896
|
settings_window.add_save_hook(on_config_changed)
|
|
872
897
|
settings_window.on_exit = exit_program
|
|
873
898
|
root.mainloop()
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/configuration.py
RENAMED
|
@@ -89,6 +89,9 @@ def is_linux():
|
|
|
89
89
|
def is_windows():
|
|
90
90
|
return platform == 'win32'
|
|
91
91
|
|
|
92
|
+
def is_mac():
|
|
93
|
+
return platform == 'darwin'
|
|
94
|
+
|
|
92
95
|
|
|
93
96
|
class Locale(Enum):
|
|
94
97
|
English = 'en_us'
|
|
@@ -1394,10 +1397,22 @@ is_beangate = os.path.exists("C:/Users/Beangate")
|
|
|
1394
1397
|
|
|
1395
1398
|
|
|
1396
1399
|
def get_ffmpeg_path():
|
|
1397
|
-
|
|
1400
|
+
path = os.path.join(get_app_directory(), "ffmpeg", "ffmpeg.exe") if is_windows() else "ffmpeg"
|
|
1401
|
+
if shutil.which(path) is not None:
|
|
1402
|
+
return path
|
|
1403
|
+
elif is_mac():
|
|
1404
|
+
if shutil.which("/opt/homebrew/bin/ffmpeg") is not None:
|
|
1405
|
+
return "/opt/homebrew/bin/ffmpeg"
|
|
1406
|
+
return path
|
|
1398
1407
|
|
|
1399
1408
|
def get_ffprobe_path():
|
|
1400
|
-
|
|
1409
|
+
path = os.path.join(get_app_directory(), "ffmpeg", "ffprobe.exe") if is_windows() else "ffprobe"
|
|
1410
|
+
if shutil.which(path) is not None:
|
|
1411
|
+
return path
|
|
1412
|
+
elif is_mac():
|
|
1413
|
+
if shutil.which("/opt/homebrew/bin/ffprobe") is not None:
|
|
1414
|
+
return "/opt/homebrew/bin/ffprobe"
|
|
1415
|
+
return path
|
|
1401
1416
|
|
|
1402
1417
|
ffmpeg_base_command_list = [get_ffmpeg_path(), "-hide_banner", "-loglevel", "error", '-nostdin']
|
|
1403
1418
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: GameSentenceMiner
|
|
3
|
-
Version: 2.19.
|
|
3
|
+
Version: 2.19.15
|
|
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.
|
|
3
|
+
Version: 2.19.15
|
|
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.
|
|
10
|
+
version = "2.19.15"
|
|
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"
|
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/ai/ai_prompting.py
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/assets/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/assets/icon128.png
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/assets/icon256.png
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/assets/icon512.png
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/assets/pickaxe.png
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/locales/en_us.json
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/locales/ja_jp.json
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/locales/zh_cn.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/ocr/gsm_ocr_config.py
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/ocr/owocr_area_selector.py
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/ocr/owocr_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/owocr/owocr/__init__.py
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/owocr/owocr/__main__.py
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/owocr/owocr/config.py
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/owocr/owocr/ocr.py
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/owocr/owocr/run.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/tools/ss_selector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/ui/anki_confirmation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/ui/screenshot_selector.py
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/audio_player.py
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/communication/send.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/electron_config.py
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/games_table.py
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/get_overlay_coords.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/util/notification.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/anki_api_endpoints.py
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/database_api.py
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/gsm_websocket.py
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/css/search.css
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/css/shared.css
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/css/stats.css
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/favicon.ico
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/favicon.svg
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/js/database.js
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/js/goals.js
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/js/heatmap.js
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/js/overview.js
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/js/search.js
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/js/shared.js
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/js/stats.js
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/static/style.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/goals.html
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/index.html
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/search.html
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/stats.html
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/templates/utility.html
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner/web/texthooking_page.py
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner.egg-info/requires.txt
RENAMED
|
File without changes
|
{gamesentenceminer-2.19.13 → gamesentenceminer-2.19.15}/GameSentenceMiner.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|