49 lines
1.8 KiB
Python
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 |