Skip to content

Commit 48ad0ac

Browse files
authored
Merge pull request #22 from GOOD-AN/dev
Dev
2 parents d748bf2 + cc4c387 commit 48ad0ac

File tree

13 files changed

+211
-172
lines changed

13 files changed

+211
-172
lines changed

config/default_config.ini

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name = Mys_Exch_Goods
33
env = local
44
branch = main
5-
version = 3.0.0
5+
version = 3.0.1
66

77
[update_setting]
88
check_enable = true
@@ -21,3 +21,6 @@ enable = false
2121
enable = true
2222
ntp_server = ntp.aliyun.com
2323

24+
[log_setting]
25+
out_file = true
26+
debug = false

config/logging_config.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@
3636
}
3737
},
3838
"loggers": {
39-
"info_file_logger": {
39+
"info_all_logger": {
4040
"handlers": ["standard_console", "standard_file"],
4141
"level": "INFO",
4242
"propagate": False
4343
},
44-
"debug_file_logger": {
45-
"handlers": ["standard_console", "standard_file"],
44+
"debug_all_logger": {
45+
"handlers": ["debug_console", "standard_file"],
4646
"level": "DEBUG",
4747
"propagate": False
4848
},
@@ -55,6 +55,11 @@
5555
"handlers": ["debug_console"],
5656
"level": "DEBUG",
5757
"propagate": False
58+
},
59+
"only_file_logger": {
60+
"handlers": ["standard_file"],
61+
"level": "INFO",
62+
"propagate": False
5863
}
5964
},
6065
"root": {},

docs/CHANGELOG.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
# 更新日志
22

3-
## [3.0.0.230420 Alpha] - 2023-0420
3+
## [3.0.1.230504 Alpha] - 2023-0504
4+
5+
### Added
6+
- 添加日志配置
7+
8+
### Changed
9+
- 优化部分代码逻辑
10+
11+
## [3.0.0.230503 Alpha] - 2023-0503
412

513
### Added
614
- 添加了对多账号多商品的支持

docs/配置文件说明.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
name = Mys_Exch_Goods
1111
env = local
1212
branch = main
13-
version = 3.0.0
13+
version = 3.0.1
1414
>>> 默认应用信息,除非确定,勿动!!!
1515
```
1616

@@ -39,4 +39,12 @@ retry = 5
3939
enable = true
4040
ntp_server = ntp.aliyun.com
4141
>>> 获取时间是否使用ntp,ntp_server为ntp服务器地址
42+
```
43+
44+
### 日志设置
45+
```ini
46+
[log_setting]
47+
out_file = true
48+
debug = false
49+
>>> out_file为是否输出到文件,debug为是否输出debug信息
4250
```

main.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
import time
99
from getpass import getuser
1010

11-
from myseg import async_input, check_update, init_config, info_menu, init_exchange, wait_tasks
11+
from myseg import async_input, check_update, info_menu, init_exchange, wait_tasks
1212
from myseg import check_cookie, update_cookie
13-
from myseg import global_var as gl, logger
13+
from myseg import user_global_var as gl, logger
1414

15-
MAIN_VERSION = '3.0.0'
15+
MAIN_VERSION = '3.0.1'
1616
MESSAGE = f"""\
1717
===========================================
1818
| Mys Exchange Goods v{MAIN_VERSION:13s}|
@@ -148,7 +148,6 @@ def start_info():
148148

149149
if __name__ == '__main__':
150150
try:
151-
init_config() # 需优化
152151
start_info()
153152
if gl.init_config.getboolean("update_setting", "check_enable"):
154153
asyncio.run(check_update(MAIN_VERSION))

myseg/__init__.py

Lines changed: 92 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,35 @@
11
"""
22
初始化
33
"""
4+
import json
45
import logging.config
6+
import platform
7+
import sys
58

69
from apscheduler.events import EVENT_JOB_ADDED, EVENT_JOB_REMOVED, EVENT_JOB_MODIFIED, EVENT_JOB_MISSED, \
710
EVENT_JOB_ERROR, EVENT_JOB_EXECUTED
811
from apscheduler.schedulers.asyncio import AsyncIOScheduler
912

1013
from config import logging_config
1114
from .global_var import GlobalVar
15+
from .user_data import GameInfo, AddressInfo, UserInfo
1216

1317

1418
class 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

2935
def 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()
53131
scheduler = AsyncIOScheduler({'apscheduler.timezone': 'Asia/Shanghai'})
54132
scheduler.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
60135
from .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

myseg/com_tool.py

Lines changed: 11 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,14 @@
33
"""
44
import asyncio
55
import json
6-
import platform
76
import sys
87
import time
9-
from configparser import ConfigParser
108
from hashlib import md5
11-
from shutil import copyfile
129

1310
import httpx
11+
from ntplib import NTPClient
1412

15-
from . import global_var as gl, logger
16-
from .user_data import GameInfo, AddressInfo, UserInfo
13+
from . import user_global_var as gl, logger, logger_file
1714

1815
CHECK_UPDATE_URL_LIST = [
1916
'https://cdn.jsdelivr.net/gh/GOOD-AN/mys_exch_goods@latest/',
@@ -22,48 +19,19 @@
2219
]
2320

2421

25-
def check_plat():
22+
def get_time() -> float:
2623
"""
27-
检查平台
24+
获取当前时间
2825
"""
2926
try:
30-
if platform.system() == "Windows":
31-
return "cls"
32-
return "clear"
33-
except KeyboardInterrupt:
34-
logger.warning("用户强制退出")
35-
input("按回车键继续")
36-
sys.exit()
37-
except Exception as err:
38-
logger.error(f"运行出错, 错误为: {err}, 错误行数为: {err.__traceback__.tb_lineno}")
39-
input("按回车键继续")
40-
sys.exit()
41-
42-
43-
def load_config():
44-
"""
45-
加载配置文件
46-
"""
47-
config_data = ConfigParser()
48-
try:
49-
config_path = gl.config_path / 'config.ini'
50-
default_config_path = gl.config_path / 'default_config.ini'
51-
if not config_path.exists() and not default_config_path.exists():
52-
logger.error("配置文件不存在, 请检查")
53-
input("按回车键继续")
54-
sys.exit()
55-
if not config_path.exists() and default_config_path.exists():
56-
copyfile(default_config_path, config_path)
57-
config_data.read_file(open(config_path, "r", encoding="utf-8"))
58-
return config_data
59-
except KeyboardInterrupt:
60-
logger.warning("用户强制退出")
61-
input("按回车键继续")
62-
sys.exit()
27+
ntp_enable = gl.init_config.getboolean('ntp', 'enable')
28+
ntp_server = gl.init_config.get('ntp', 'ntp_server')
29+
if not ntp_enable:
30+
return time.time()
31+
return NTPClient().request(ntp_server).tx_time
6332
except Exception as err:
64-
logger.error(f"运行出错, 错误为: {err}, 错误行数为: {err.__traceback__.tb_lineno}")
65-
input("按回车键继续")
66-
sys.exit()
33+
logger_file.warning(f"网络时间获取失败, 原因为{err}, 转为本地时间")
34+
return time.time()
6735

6836

6937
async def compare_version(old_version, new_version):
@@ -168,61 +136,6 @@ async def md5_encode(text):
168136
sys.exit()
169137

170138

171-
def load_user_data():
172-
"""
173-
加载用户数据
174-
"""
175-
try:
176-
user_data_dict = {}
177-
if gl.user_data_path.exists():
178-
user_data_file_list = gl.user_data_path.iterdir()
179-
for user_data_file in user_data_file_list:
180-
with open(gl.user_data_path / user_data_file, 'r', encoding='utf-8') as f:
181-
try:
182-
user_data = json.load(f)
183-
user_game_list = []
184-
user_address_list = []
185-
for user_game in user_data['game_list']:
186-
user_game_list.append(GameInfo(user_game))
187-
user_data['game_list'] = user_game_list
188-
for user_address in user_data['address_list']:
189-
user_address_list.append(AddressInfo(user_address))
190-
user_data['address_list'] = user_address_list
191-
user_data_dict[user_data['mys_uid']] = UserInfo(user_data)
192-
except (json.decoder.JSONDecodeError, KeyError) as err:
193-
logger.warning(f"用户数据{user_data_file}解析失败, 跳过, ", end='')
194-
logger.warning(f"错误为: {err}, 错误行数为: {err.__traceback__.tb_lineno}")
195-
continue
196-
return user_data_dict
197-
except KeyboardInterrupt:
198-
logger.warning("用户强制退出")
199-
input("按回车键继续")
200-
sys.exit()
201-
except Exception as err:
202-
logger.error(f"运行出错, 错误为: {err}, 错误行数为: {err.__traceback__.tb_lineno}")
203-
input("按回车键继续")
204-
sys.exit()
205-
206-
207-
def init_config():
208-
"""
209-
初始化配置文件
210-
"""
211-
try:
212-
gl.init_config = load_config()
213-
gl.clear_type = check_plat()
214-
gl.user_dict = load_user_data()
215-
return True
216-
except KeyboardInterrupt:
217-
logger.warning("用户强制退出")
218-
input("按回车键继续")
219-
sys.exit()
220-
except Exception as err:
221-
logger.error(f"运行出错, 错误为: {err}, 错误行数为: {err.__traceback__.tb_lineno}")
222-
input("按回车键继续")
223-
sys.exit()
224-
225-
226139
async def async_input(prompt=''):
227140
"""
228141
异步输入

0 commit comments

Comments
 (0)