← source index

utility.py

67 lines  ·  1.9 K  ·  python
from datetime import datetime
import inspect
import time
import singleton

class Utility(metaclass=singleton.Singleton):    
    new_fps = 0
    prev_fps = 0
    time_elapsed = 0
    frame_count = 0
    
    def __init__(self):
        pass

    def get_time(self):
        time = datetime.now()
        current_time = time.strftime("%d/%m/%Y, %H:%M:%S")
        time_arr = current_time.split(',')
        current_time_day = time_arr[0].strip()
        current_time_hour = time_arr[1].strip()
        return (current_time_day, current_time_hour)

    def get_codeline(self):
        current_info = inspect.currentframe()
        frame_info = inspect.getouterframes(current_info, 2)
        return (frame_info[2][1], frame_info[2][2])

    def fps_counter(self, flag = False):
        if flag == False:
            self.new_fps = time.time()
            fps = 1 / (self.new_fps - self.prev_fps)
            self.prev_fps = self.new_fps
            return str(int(fps)) 
        else:
            self.frame_count = self.frame_count + 1

            if self.time_elapsed == 0:
                self.time_elapsed = time.time()
                return str(self.frame_count)

            time_diff = time.time() - self.time_elapsed

            if time_diff >= 1:
                self.time_elapsed = time.time()
                result = str(int(self.frame_count / time_diff))
                self.frame_count = 0
                return result

            return ""

    def string_to_number(self, string):
        if string == "":
            return 0

        tmp_string = (string + ".")[:-1]
        
        if string[0] in ('-', '+'):
            tmp_string = string[1:]
        
        if tmp_string.replace('.','',1).isdigit():
            if len(tmp_string.split('.')) == 1:
                return int(string)
            else:
                return float(string)

        return string