Files
youtube-dl/lib/system/mod_home.py
soju6jan 29930fdef7 test
2022-10-02 20:18:05 +09:00

118 lines
4.5 KiB
Python

from .setup import *
import platform
from support.base.util import SupportUtil
name = 'home'
class ModuleHome(PluginModuleBase):
info_thread = None
def __init__(self, P):
super(ModuleHome, self).__init__(P, name=name)
default_route_socketio_module(self)
def process_menu(self, page, req):
return render_template(f'{__package__}_{name}.html', info=self.get_info('static'))
def process_command(self, command, arg1, arg2, arg3, req):
if command == 'recent_version':
result = F.get_recent_version()
if result:
#F.config['recent_version'] = '4.0.0'
ret = {'msg': f"최신버전 : {F.config['recent_version']}", 'type':'success'}
else:
ret = {'msg': f"확인 실패", 'type':'warning'}
return jsonify(ret)
elif command == 'get_config':
data = {}
for key, value in F.app.config.items():
data[key] = str(value)
ret = {'json':{'Framework':F.config, 'Flask':data}}
return jsonify(ret)
def socketio_connect(self):
self.send_info()
if self.info_thread != None:
return
def func():
while True:
if len(self.socketio_list) == 0:
break
self.send_info()
time.sleep(1)
self.info_thread = None
self.info_thread = threading.Thread(target=func, args=())
self.info_thread.daemon = True
self.info_thread.start()
def send_info(self):
ret = {}
ret['system'] = self.get_info()
ret['scheduler'] = scheduler.get_job_list_info()
F.socketio.emit("status", ret, namespace=f'/{P.package_name}/{name}', broadcast=True)
def get_info(self, mode=''):
info = {}
if mode == 'static':
info['platform'] = platform.platform()
info['processor'] = platform.processor()
info['python_version'] = sys.version
info['version'] = VERSION
info['recent_version'] = F.config['recent_version']
info['path_app'] = F.config['path_app']
info['path_data'] = F.config['path_data']
info['path_working'] = F.config['path_working']
info['config_filepath'] = F.config['config_filepath']
info['running_type'] = F.config['running_type']
info['use_celery'] = '사용' if F.config['use_celery'] else '미사용'
else:
info['version'] = VERSION
info['recent_version'] = F.config['recent_version']
#info['auth'] = frame.config['member']['auth_desc']
info['cpu_percent'] = 'not supported'
info['memory'] = 'not supported'
info['disk'] = 'not supported'
if frame.config['running_type'] != 'termux':
try:
import psutil
info['cpu_percent'] = '%s %%' % psutil.cpu_percent()
tmp = psutil.virtual_memory()
info['memory'] = [
SupportUtil.sizeof_fmt(tmp[0], suffix='B'),
SupportUtil.sizeof_fmt(tmp[3], suffix='B'),
SupportUtil.sizeof_fmt(tmp[1], suffix='B'),
tmp[2]
]
except:
pass
try:
if platform.system() == 'Windows':
s = os.path.splitdrive(path_app_root)
root = s[0]
else:
root = '/'
tmp = psutil.disk_usage(root)
info['disk'] = [
SupportUtil.sizeof_fmt(tmp[0], suffix='B'),
SupportUtil.sizeof_fmt(tmp[1], suffix='B'),
SupportUtil.sizeof_fmt(tmp[2], suffix='B'),
tmp[3], root]
except Exception as exception:
pass
try:
system_start_time = SystemModelSetting.get('system_start_time')
timedelta = datetime.now() - datetime.strptime(system_start_time, '%Y-%m-%d %H:%M:%S')
info['time'] = [
system_start_time,
str(timedelta).split('.')[0],
F.config['arg_repeat']
]
except Exception as exception:
info['time'] = str(exception)
return info