92 lines
3.0 KiB
Python
92 lines
3.0 KiB
Python
import sys
|
|
import logging
|
|
from PySide6.QtWidgets import QApplication
|
|
from src.mainWindow import MainWindow
|
|
from src.databaseManager import DatabaseManager
|
|
# from src.databaseManager_duck import DatabaseManager
|
|
|
|
from src.loggerModule import Logger
|
|
from login.login_dialog import LoginDialog
|
|
import configparser
|
|
|
|
import ctypes, os
|
|
|
|
|
|
# COM 초기화 (멀티스레드 모드)
|
|
def initialize_com():
|
|
COINIT_MULTITHREADED = 0x0
|
|
ctypes.windll.ole32.CoInitializeEx(None, COINIT_MULTITHREADED)
|
|
|
|
# COM 해제
|
|
def uninitialize_com():
|
|
ctypes.windll.ole32.CoUninitialize()
|
|
|
|
def get_base_dir():
|
|
"""
|
|
실행 환경에 따라 base_dir을 설정하는 메서드.
|
|
"""
|
|
if getattr(sys, 'frozen', False): # 패키징된 경우
|
|
base_dir = os.path.dirname(sys.executable)
|
|
internal_dir = os.path.join(base_dir, '_internal') # _internal 디렉토리 포함
|
|
if os.path.exists(internal_dir):
|
|
return internal_dir
|
|
else:
|
|
base_dir = os.path.dirname(os.path.abspath(__file__))
|
|
return base_dir
|
|
|
|
def load_config(logger, file_path: str) -> configparser.ConfigParser:
|
|
"""
|
|
config.ini 파일을 읽어서 ConfigParser 객체로 반환
|
|
"""
|
|
config = configparser.ConfigParser()
|
|
try:
|
|
config.read(file_path, encoding="utf-8") # UTF-8 인코딩으로 설정 파일 읽기
|
|
logger.log(f"Config 파일 '{file_path}' 로드 성공", level=logging.INFO)
|
|
except Exception as e:
|
|
logger.log(f"Config 파일 로드 중 오류 발생: {e}", level=logging.ERROR, exc_info=True)
|
|
return config
|
|
|
|
if __name__ == "__main__":
|
|
initialize_com() # COM 초기화
|
|
logger = Logger(log_file="Scrapper2.log", logger_name="Scrapper_Logger", level=logging.DEBUG)
|
|
|
|
base_dir = get_base_dir()
|
|
config_path = os.path.join(base_dir, "config.ini")
|
|
config = load_config(logger, config_path)
|
|
|
|
app = QApplication(sys.argv)
|
|
|
|
|
|
db_manager = DatabaseManager(logger) # 데이터베이스 매니저 인스턴스 생성
|
|
|
|
# 로그인 다이얼로그 실행 (모달)
|
|
login_dialog = LoginDialog(logger)
|
|
if login_dialog.exec() == LoginDialog.Accepted:
|
|
user_info = login_dialog.get_user_info()
|
|
supabase_manager = login_dialog.get_supabase_manager()
|
|
else:
|
|
sys.exit("로그인 실패 또는 취소되었습니다.")
|
|
|
|
# 로그인 성공 후, 멤버십 유효성 검사
|
|
valid = supabase_manager.check_membership_validity(user_info)
|
|
if valid:
|
|
# 전체 프로그램 GUI 실행
|
|
window = MainWindow(logger, db_manager, supabase_manager, user_info, config)
|
|
window.show()
|
|
sys.exit(app.exec()) # 메인 UI 실행
|
|
|
|
else: # 로그인 실패 시
|
|
sys.exit(0) # 프로그램 종료
|
|
|
|
|
|
uninitialize_com() # COM 해제
|
|
|
|
# # 로그인 다이얼로그 실행
|
|
# login_dialog = UserInfoDialog()
|
|
# if login_dialog.exec(): # 로그인 성공 시
|
|
# window = MainWindow(logger, db_manager)
|
|
# window.show()
|
|
# sys.exit(app.exec()) # 메인 UI 실행
|
|
# else: # 로그인 실패 시
|
|
# sys.exit(0) # 프로그램 종료
|