Files
SayanoAI-Comfy-RVC/custom_nodes/utils.py
T
2024-09-30 11:41:40 -04:00

49 lines
1.8 KiB
Python

import os
import re
import folder_paths
from .settings.downloader import RVC_DOWNLOAD_LINK, download_file
from ..lib import BASE_MODELS_DIR
temp_path = folder_paths.get_temp_directory()
def model_downloader(model: str) -> str:
filename = os.path.basename(model)
subfolder = os.path.dirname(model)
model_path = os.path.join(BASE_MODELS_DIR,subfolder,filename)
if not os.path.isfile(model_path):
download_link = f"{RVC_DOWNLOAD_LINK}{model}"
params = model_path, download_link
if download_file(params): print(f"successfully downloaded: {model_path}")
return model_path
def increment_filename_no_overwrite(proposed_path):
output_dir, filename_ext = os.path.split(proposed_path)
filename, file_format = os.path.splitext(filename_ext)
files = os.listdir(output_dir)
files = filter(lambda f: os.path.isfile(os.path.join(output_dir, f)), files)
files = filter(lambda f: f.startswith(filename), files)
files = filter(lambda f: f.endswith(file_format), files)
file_numbers = [re.search(r'_(\d+)\.', f) for f in files]
file_numbers = [int(f.group(1)) for f in file_numbers if f]
this_file_number = max(file_numbers) + 1 if file_numbers else 1
output_path = os.path.join(output_dir, f'{filename}_{this_file_number}{file_format}')
return output_path
class MultipleTypeProxy(str):
def __eq__(self, other: str):
for o in other.split(","):
if o in self: return True
for s in self.split(","):
if s in other: return True
return str(self)=="*"
def __ne__(self, other):
return not self.__eq__(other)
# FROM: https://github.com/theUpsider/ComfyUI-Logic/blob/master/nodes.py#L11
class AlwaysEqualProxy(str):
def __eq__(self, _):
return True
def __ne__(self, _):
return False