11"""
22初始化
33"""
4+ import json
45import logging .config
6+ import platform
7+ import sys
58
69from apscheduler .events import EVENT_JOB_ADDED , EVENT_JOB_REMOVED , EVENT_JOB_MODIFIED , EVENT_JOB_MISSED , \
710 EVENT_JOB_ERROR , EVENT_JOB_EXECUTED
811from apscheduler .schedulers .asyncio import AsyncIOScheduler
912
1013from config import logging_config
1114from .global_var import GlobalVar
15+ from .user_data import GameInfo , AddressInfo , UserInfo
1216
1317
1418class Logger :
1519 """
1620 日志
1721 """
1822
19- def __init__ (self ):
23+ def __init__ (self , log_control , user_log_path = None ):
2024 # 自定义日志路径与名称
21- log_path = global_var .basic_path / 'log' / 'meg_all.log'
25+ log_path = user_global_var .basic_path / 'log' / 'meg_all.log'
26+ if user_log_path :
27+ log_path = user_log_path
2228 if not log_path .parent .exists ():
2329 log_path .parent .mkdir (parents = True , exist_ok = True )
2430 logging_config .log_config ['handlers' ]['standard_file' ]['filename' ] = log_path
2531 logging .config .dictConfig (logging_config .log_config )
26- self .logger = logging .getLogger ('info_file_logger' )
32+ self .logger = logging .getLogger (log_control )
2733
2834
2935def scheduler_log_listener (event ):
@@ -32,29 +38,101 @@ def scheduler_log_listener(event):
3238 """
3339 try :
3440 if event .code == EVENT_JOB_ADDED :
35- logger .info (f"任务 { event .job_id } 已添加" )
41+ logger_file .info (f"任务 { event .job_id } 已添加" )
3642 elif event .code == EVENT_JOB_REMOVED :
37- logger .info (f"任务 { event .job_id } 已删除" )
43+ logger_file .info (f"任务 { event .job_id } 已删除" )
3844 elif event .code == EVENT_JOB_MODIFIED :
39- logger .info (f"任务 { event .job_id } 已修改" )
45+ logger_file .info (f"任务 { event .job_id } 已修改" )
4046 elif event .code == EVENT_JOB_MISSED :
41- logger .warning (f"任务 { event .job_id } 已错过" )
47+ logger_file .warning (f"任务 { event .job_id } 已错过" )
4248 elif event .code == EVENT_JOB_ERROR :
43- logger .error (f"任务 { event .job_id } 运行出错, 错误为: { event .exception } " )
49+ logger_file .error (f"任务 { event .job_id } 运行出错, 错误为: { event .exception } " )
4450 elif event .code == EVENT_JOB_EXECUTED :
45- logger .info (f"任务 { event .job_id } 已执行" )
51+ logger_file .info (f"任务 { event .job_id } 已执行" )
4652 except Exception as err :
4753 logger .error (f"运行出错, 错误为: { err } , 错误行数为: { err .__traceback__ .tb_lineno } " )
4854 return False
4955
5056
51- global_var = GlobalVar ()
52- logger = Logger ().logger
57+ def check_plat ():
58+ """
59+ 检查平台
60+ """
61+ try :
62+ if platform .system () == "Windows" :
63+ return "cls"
64+ return "clear"
65+ except KeyboardInterrupt :
66+ logger .warning ("用户强制退出" )
67+ input ("按回车键继续" )
68+ sys .exit ()
69+ except Exception as err :
70+ logger .error (f"运行出错, 错误为: { err } , 错误行数为: { err .__traceback__ .tb_lineno } " )
71+ input ("按回车键继续" )
72+ sys .exit ()
73+
74+
75+ def load_user_data ():
76+ """
77+ 加载用户数据
78+ """
79+ try :
80+ user_data_dict = {}
81+ if user_global_var .user_data_path .exists ():
82+ user_data_file_list = user_global_var .user_data_path .iterdir ()
83+ for user_data_file in user_data_file_list :
84+ logger .debug (user_data_file )
85+ with open (user_data_file , 'r' , encoding = 'utf-8' ) as f :
86+ try :
87+ user_data_load = json .load (f )
88+ logger .debug (user_data_load )
89+ user_game_list = []
90+ user_address_list = []
91+ for user_game in user_data_load ['game_list' ]:
92+ user_game_list .append (GameInfo (user_game ))
93+ user_data_load ['game_list' ] = user_game_list
94+ for user_address in user_data_load ['address_list' ]:
95+ user_address_list .append (AddressInfo (user_address ))
96+ user_data_load ['address_list' ] = user_address_list
97+ user_data_dict [user_data_load ['mys_uid' ]] = UserInfo (user_data_load )
98+ except (json .decoder .JSONDecodeError , KeyError ) as err :
99+ logger .warning (f"用户数据{ user_data_file } 解析失败, 跳过, " )
100+ logger_file .warning (f"错误为: { err } , 错误行数为: { err .__traceback__ .tb_lineno } " )
101+ continue
102+ logger .debug (user_data_dict )
103+ return user_data_dict
104+ except KeyboardInterrupt :
105+ logger .warning ("用户强制退出" )
106+ input ("按回车键继续" )
107+ sys .exit ()
108+ except Exception as err :
109+ logger .error (f"运行出错, 错误为: { err } , 错误行数为: { err .__traceback__ .tb_lineno } " )
110+ input ("按回车键继续" )
111+ sys .exit ()
112+
113+
114+ user_global_var = GlobalVar ()
115+ user_log_control = 'info_all_logger'
116+ logger_file = Logger ('only_file_logger' ).logger
117+ if not user_global_var .init_config .getboolean ('log_setting' , 'out_file' ):
118+ if user_global_var .init_config .getboolean ('log_setting' , 'debug' ):
119+ user_log_control = 'debug_console_logger'
120+ else :
121+ user_log_control = 'info_console_logger'
122+ logger_file .disabled = True
123+ else :
124+ if user_global_var .init_config .getboolean ('log_setting' , 'debug' ):
125+ user_log_control = 'debug_all_logger'
126+ else :
127+ user_log_control = 'info_all_logger'
128+ logger = Logger (user_log_control ).logger
129+ user_global_var .clear_type = check_plat ()
130+ user_global_var .user_dict = load_user_data ()
53131scheduler = AsyncIOScheduler ({'apscheduler.timezone' : 'Asia/Shanghai' })
54132scheduler .add_listener (scheduler_log_listener ,
55133 EVENT_JOB_ADDED | EVENT_JOB_REMOVED | EVENT_JOB_MODIFIED | EVENT_JOB_MISSED | EVENT_JOB_EXECUTED )
56134
57- from .com_tool import async_input , check_update , init_config
58- from .mi_tool import check_cookie , update_cookie
59- from .get_info import info_menu
60135from .exchange_goods import init_exchange , wait_tasks
136+ from .com_tool import async_input , check_update
137+ from .get_info import info_menu
138+ from .mi_tool import check_cookie , update_cookie
0 commit comments