1
0
mirror of https://github.com/0O0o0oOoO00/Alas.git synced 2026-05-19 14:39:29 +08:00
Files
Alas/module/log_res/log_res.py

78 lines
2.8 KiB
Python
Raw Normal View History

2023-02-06 01:25:01 +08:00
from cached_property import cached_property
2023-02-03 14:06:13 +08:00
from module.logger import logger
2023-02-06 01:25:01 +08:00
from module.config.utils import deep_get
2023-02-14 01:07:40 +08:00
from datetime import datetime
2023-02-03 14:06:13 +08:00
class LogRes:
2023-02-14 01:07:40 +08:00
"""
set attr--->
Logres(AzurLaneConfig).<res_name>=resource_value:int
OR ={'Value:int, 'Limit/Total':int}:dict
"""
YellowCoin: list
2023-02-03 14:06:13 +08:00
def __init__(self, config):
2023-02-14 01:07:40 +08:00
self.__dict__['config'] = config
def __setattr__(self, key, value):
if key in self.groups:
_key_group = f'Dashboard.{key}'
_mod = False
original = deep_get(self.config.data, keys=_key_group)
if isinstance(value, int):
if original['Value'] != value:
_key = _key_group + '.Value'
self.config.modified[_key] = value
_time = datetime.now().replace(microsecond=0)
_key_time = _key_group + f'.Record'
self.config.modified[_key_time] = _time
elif isinstance(value, dict):
for value_name, _value in value.items():
if _value == original[value_name]:
continue
_key = _key_group + f'.{value_name}'
2023-02-14 02:39:14 +08:00
self.config.modified[_key] = _value
2023-02-14 01:07:40 +08:00
_key_time = _key_group + f'.Record'
_time = datetime.now().replace(microsecond=0)
self.config.modified[_key_time] = _time
else:
logger.info('No such resource on dashboard')
super().__setattr__(name=key, value=value)
2023-02-03 14:06:13 +08:00
2023-02-06 01:25:01 +08:00
@cached_property
def groups(self) -> dict:
2023-02-06 01:25:01 +08:00
from module.config.utils import read_file, filepath_argument
return deep_get(d=read_file(filepath_argument("dashboard")), keys='Dashboard')
2023-02-14 01:07:40 +08:00
"""
2023-02-10 18:51:03 +08:00
def log_res(self, name, modified: dict, update=True):
if name in self.groups:
key = f'Dashboard.{name}'
2023-02-03 14:06:13 +08:00
original = deep_get(self.config.data, keys=key)
_mod = False
for value_name, value in modified.items():
if value == original[value_name]:
continue
2023-02-14 01:07:40 +08:00
_key = key + f'.{value_name}'
self.config.modified[_key] = value
_mod = True
if _mod:
2023-02-14 01:07:40 +08:00
_key_time = key + f'.Record'
2023-02-06 01:25:01 +08:00
_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
self.config.modified[_key_time] = _time
2023-02-10 18:51:03 +08:00
if update:
self.config.update()
2023-02-03 14:06:13 +08:00
else:
2023-02-06 01:25:01 +08:00
logger.warning('No such resource!')
2023-02-03 14:06:13 +08:00
return True
2023-02-14 01:07:40 +08:00
"""
2023-02-16 02:51:46 +08:00
if __name__ == '__main__':
from module.config.config import AzurLaneConfig
config = AzurLaneConfig('alas2')
LogRes(config=config).ActionPoint = {'Total': 99999, 'Value': 99999}
config.update()
exit(0)