Files
VRCT/src-python/utils.py
misyaguziya a4ac82fe7e 👍️[Update] Controller : callbackSetUiLanguageの処理を修正
utils.getKeyByValueを削除
2024-09-13 16:08:58 +09:00

98 lines
2.9 KiB
Python

import base64
from typing import Any
import json
import random
from typing import Union
from os import path as os_path, rename as os_rename
from PIL.Image import open as Image_open
def getImageFile(file_name):
img = Image_open(os_path.join(os_path.dirname(__file__), "img", file_name))
return img
def callFunctionIfCallable(function, *args):
if callable(function) is True:
function(*args)
def isEven(number):
return number % 2 == 0
def makeEven(number, minus:bool=False):
if minus is True:
return number if isEven(number) else number - 1
return number if isEven(number) else number + 1
def generatePercentageStringsList(start:int, end:int, step:int):
strings = []
for percent in range(start, end + 1, step):
strings.append(f"{percent}%")
return strings
def intToPctStr(value:int):
return f"{value}%"
def floatToPctStr(value:float):
return f"{int(value*100)}%"
def strPctToInt(value:str):
return int(value.replace("%", ""))
def isUniqueStrings(unique_strings:Union[str, list], input_string:str, require=False):
import re
if isinstance(unique_strings, str):
unique_strings = [unique_strings]
patterns = [re.escape(s) for s in unique_strings]
counts = [len(re.findall(pattern, input_string)) for pattern in patterns]
if require is True:
# If require is True, unique_strings must appear once
return all(count == 1 for count in counts) and counts.count(1) == 2
else:
# If require is False, check if unique strings are used exactly once
return all(count == 1 for count in counts)
# path先のweightフォルダがある場合にはそのフォルダ名をweightsに変更する
def renameWeightFolder(path):
weight_path = os_path.join(path, "weight")
if os_path.exists(weight_path):
os_rename(weight_path, os_path.join(path, "weights"))
def splitList(lst:list, split_count:int, to_shuffle:bool=False):
if to_shuffle is True:
random.shuffle(lst)
split_lists = []
for i in range(0, len(lst), split_count):
sub_list = lst[i:i+split_count]
split_lists.append(sub_list)
return split_lists
def encodeBase64(data:str) -> dict:
return json.loads(base64.b64decode(data).decode('utf-8'))
def printLog(log:str, data:Any=None) -> None:
response = {
"status": 348,
"log": log,
"data": str(data),
}
with open('process.log', 'a', encoding="utf-8") as f:
f.write(f"log: {response}\n")
response = json.dumps(response)
print(response, flush=True)
def printResponse(status:int, endpoint:str, result:Any=None) -> None:
response = {
"status": status,
"endpoint": endpoint,
"result": result,
}
with open('process.log', 'a', encoding="utf-8") as f:
f.write(f"log: {response}\n")
response = json.dumps(response)
print(response, flush=True)