import argparse import os import time import traceback from fetchers import * from colors import getColorsDict clear = lambda: os.system('clear') results = { "row_separator": getRowSeparator(), "ha_sensors": "" } logging = False results.update(getColorsDict()) def printColors(): res = "" for k,v in getColorsDict().items(): res += f"{v}{k}" print(res) def createDaemon(func, key, sleep = 60): from threading import Thread results[key] = "" def resTo(): while True: try: results[key] = func() if logging: print(f'[{time.time()}] Save result to {key}') except: traceback.print_exc() finally: time.sleep(sleep) t = Thread(target=resTo, name=f"daemon-{key}") t.daemon = True t.start() class Service: def __init__(self, args): self.args = args self.startFetcher() self.looper() def startFetcher(self): createDaemon(getAvg, "sys_avg", 1) createDaemon(getDateTime, "date_time", 1) createDaemon(getCpuPercent, "cpu_percent", 1) createDaemon(getMemPercent, "mem_percent", 1) createDaemon(getArp, "arp_result", 60) try: from haSensors import getHaSensors createDaemon(getHaSensors, "ha_sensors", 60) except: pass def printer(): self.printer() createDaemon(printer, "printer", 1) def looper(self): try: while True: time.sleep(1) except: exit(0) def printer(self): out = ''' {YELLOW}{date_time:^19}{END} | {CYAN}{sys_avg:^14}{END} | CPU:{cpu_percent:^5} | MEM:{mem_percent:^5} {row_separator} {ha_sensors} {row_separator} {arp_result} '''.format(**results)[1:-1] format_cr = "" for row in out.split("\n")[:self.args.rows]: format_cr += f"{row}\n"#[:self.args.cols] clear() print(format_cr, end="") if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--cols", default=60) parser.add_argument("--rows", default=40) args = parser.parse_args() Service(args) #printColors()