"""애플리케이션 진입점.""" from __future__ import annotations import contextlib import logging import sys from .config import AppConfig from .constants import APP_NAME, ORG_NAME, user_data_dir def setup_logging(verbose: bool = False) -> None: log_file = user_data_dir() / "livesub.log" handlers: list[logging.Handler] = [logging.StreamHandler(sys.stderr)] with contextlib.suppress(OSError): handlers.append(logging.FileHandler(log_file, encoding="utf-8")) logging.basicConfig( level=logging.DEBUG if verbose else logging.INFO, format="%(asctime)s %(levelname)-7s %(name)s: %(message)s", handlers=handlers, force=True, ) # 모델 라이브러리들이 INFO로 너무 시끄럽다. for noisy in ("urllib3", "filelock", "huggingface_hub", "transformers"): logging.getLogger(noisy).setLevel(logging.WARNING) def main(argv: list[str] | None = None) -> int: argv = list(sys.argv if argv is None else argv) verbose = "--verbose" in argv or "-v" in argv setup_logging(verbose) from PySide6.QtCore import Qt from PySide6.QtWidgets import QApplication from .ui import MainWindow QApplication.setAttribute(Qt.ApplicationAttribute.AA_UseHighDpiPixmaps, True) app = QApplication(argv) app.setApplicationName(APP_NAME) app.setOrganizationName(ORG_NAME) app.setQuitOnLastWindowClosed(True) config = AppConfig.load() window = MainWindow(config) if not config.start_minimized: window.show() return app.exec() if __name__ == "__main__": raise SystemExit(main())