toxygen/toxygen/utils/util.py

171 lines
3.2 KiB
Python

import os
import time
import shutil
import sys
import re
import platform
import datetime
def cached(func):
saved_result = None
def wrapped_func():
nonlocal saved_result
if saved_result is None:
saved_result = func()
return saved_result
return wrapped_func
def log(data):
try:
with open(join_path(curr_directory(), 'logs.log'), 'a') as fl:
fl.write(str(data) + '\n')
except Exception as ex:
print(ex)
def curr_directory(current_file=None):
return os.path.dirname(os.path.realpath(current_file or __file__))
def get_base_directory(current_file=None):
return os.path.dirname(curr_directory(current_file or __file__))
@cached
def get_images_directory():
return get_app_directory('images')
@cached
def get_styles_directory():
return get_app_directory('styles')
@cached
def get_sounds_directory():
return get_app_directory('sounds')
@cached
def get_stickers_directory():
return get_app_directory('stickers')
@cached
def get_smileys_directory():
return get_app_directory('smileys')
@cached
def get_translations_directory():
return get_app_directory('translations')
@cached
def get_plugins_directory():
return get_app_directory('plugins')
@cached
def get_libs_directory():
return get_app_directory('libs')
def get_app_directory(directory_name):
return os.path.join(get_base_directory(), directory_name)
def get_profile_name_from_path(path):
return os.path.basename(path)[:-4]
def get_views_path(view_name):
ui_folder = os.path.join(get_base_directory(), 'ui')
views_folder = os.path.join(ui_folder, 'views')
return os.path.join(views_folder, view_name + '.ui')
def curr_time():
return time.strftime('%H:%M')
def get_unix_time():
return int(time.time())
def join_path(a, b):
return os.path.join(a, b)
def file_exists(file_path):
return os.path.exists(file_path)
def copy(src, dest):
if not os.path.exists(dest):
os.makedirs(dest)
src_files = os.listdir(src)
for file_name in src_files:
full_file_name = os.path.join(src, file_name)
if os.path.isfile(full_file_name):
shutil.copy(full_file_name, dest)
else:
copy(full_file_name, os.path.join(dest, file_name))
def remove(folder):
if os.path.isdir(folder):
shutil.rmtree(folder)
def convert_time(t):
offset = time.timezone + time_offset() * 60
sec = int(t) - offset
m, s = divmod(sec, 60)
h, m = divmod(m, 60)
d, h = divmod(h, 24)
return '%02d:%02d' % (h, m)
@cached
def time_offset():
hours = int(time.strftime('%H'))
minutes = int(time.strftime('%M'))
sec = int(time.time()) - time.timezone
m, s = divmod(sec, 60)
h, m = divmod(m, 60)
d, h = divmod(h, 24)
result = hours * 60 + minutes - h * 60 - m
return result
def unix_time_to_long_str(unix_time):
date_time = datetime.datetime.utcfromtimestamp(unix_time)
return date_time.strftime('%Y-%m-%d %H:%M:%S')
@cached
def is_64_bit():
return sys.maxsize > 2 ** 32
def is_re_valid(regex):
try:
re.compile(regex)
except re.error:
return False
else:
return True
@cached
def get_platform():
return platform.system()