|
import gradio as gr
|
|
import shutil
|
|
import os, sys
|
|
import regex as re
|
|
|
|
from core import download_model
|
|
from programs.applio_code.rvc.lib.utils import format_title
|
|
from assets.i18n.i18n import I18nAuto
|
|
|
|
now_dir = os.getcwd()
|
|
sys.path.append(now_dir)
|
|
|
|
i18n = I18nAuto()
|
|
|
|
|
|
def save_drop_model(dropbox):
|
|
if "pth" not in dropbox and "index" not in dropbox:
|
|
raise gr.Error(
|
|
message="The file you dropped is not a valid model file. Please try again."
|
|
)
|
|
else:
|
|
file_name = format_title(os.path.basename(dropbox))
|
|
if ".pth" in dropbox:
|
|
model_name = format_title(file_name.split(".pth")[0])
|
|
else:
|
|
if (
|
|
"v2" not in dropbox
|
|
and "added_" not in dropbox
|
|
and "_nprobe_1_" not in dropbox
|
|
):
|
|
model_name = format_title(file_name.split(".index")[0])
|
|
else:
|
|
if "v2" not in dropbox:
|
|
if "_nprobe_1_" in file_name and "_v1" in file_name:
|
|
model_name = format_title(
|
|
file_name.split("_nprobe_1_")[1].split("_v1")[0]
|
|
)
|
|
elif "added_" in file_name and "_v1" in file_name:
|
|
model_name = format_title(
|
|
file_name.split("added_")[1].split("_v1")[0]
|
|
)
|
|
else:
|
|
if "_nprobe_1_" in file_name and "_v2" in file_name:
|
|
model_name = format_title(
|
|
file_name.split("_nprobe_1_")[1].split("_v2")[0]
|
|
)
|
|
elif "added_" in file_name and "_v2" in file_name:
|
|
model_name = format_title(
|
|
file_name.split("added_")[1].split("_v2")[0]
|
|
)
|
|
|
|
model_name = re.sub(r"\d+[se]", "", model_name)
|
|
if "__" in model_name:
|
|
model_name = model_name.replace("__", "")
|
|
|
|
model_path = os.path.join(now_dir, "logs", model_name)
|
|
if not os.path.exists(model_path):
|
|
os.makedirs(model_path)
|
|
if os.path.exists(os.path.join(model_path, file_name)):
|
|
os.remove(os.path.join(model_path, file_name))
|
|
shutil.copy(dropbox, os.path.join(model_path, file_name))
|
|
print(f"{file_name} saved in {model_path}")
|
|
gr.Info(f"{file_name} saved in {model_path}")
|
|
return None
|
|
|
|
|
|
def download_model_tab():
|
|
with gr.Row():
|
|
link = gr.Textbox(
|
|
label=i18n("Model URL"),
|
|
lines=1,
|
|
)
|
|
output = gr.Textbox(
|
|
label=i18n("Output Information"),
|
|
info=i18n("The output information will be displayed here."),
|
|
)
|
|
download = gr.Button(i18n("Download"))
|
|
|
|
download.click(
|
|
download_model,
|
|
inputs=[link],
|
|
outputs=[output],
|
|
)
|
|
gr.Markdown(value=i18n("## Drop files"))
|
|
dropbox = gr.File(
|
|
label=i18n(
|
|
"Drag your .pth file and .index file into this space. Drag one and then the other."
|
|
),
|
|
type="filepath",
|
|
)
|
|
dropbox.upload(
|
|
fn=save_drop_model,
|
|
inputs=[dropbox],
|
|
outputs=[dropbox],
|
|
)
|
|
|