Applio / tabs /download /download.py
blaise-tk's picture
Update tabs/download/download.py
93662e7 verified
import os
import sys
import json
import shutil
import requests
import tempfile
import gradio as gr
import pandas as pd
from concurrent.futures import ThreadPoolExecutor
from tqdm import tqdm
now_dir = os.getcwd()
sys.path.append(now_dir)
from core import run_download_script
from rvc.lib.utils import format_title
from assets.i18n.i18n import I18nAuto
i18n = I18nAuto()
gradio_temp_dir = os.path.join(tempfile.gettempdir(), "gradio")
if os.path.exists(gradio_temp_dir):
shutil.rmtree(gradio_temp_dir)
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 = file_name.split(".pth")[0]
elif ".index" in dropbox:
if "v1" in dropbox:
model_name = (
file_name.split("_nprobe_1_")[1].split("_v1")[0].split(".index")[0]
)
elif "v2" in dropbox:
model_name = (
file_name.split("_nprobe_1_")[1].split("_v2")[0].split(".index")[0]
)
else:
model_name = file_name.split(".index")[0]
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.move(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 get_file_size(url):
response = requests.head(url)
return int(response.headers.get("content-length", 0))
def download_file(url, destination_path, progress_bar):
os.makedirs(os.path.dirname(destination_path), exist_ok=True)
response = requests.get(url, stream=True)
block_size = 1024
with open(destination_path, "wb") as file:
for data in response.iter_content(block_size):
file.write(data)
progress_bar.update(len(data))
def download_tab():
with gr.Column():
gr.Markdown(value=i18n("## Download Model"))
model_link = gr.Textbox(
label=i18n("Model Link"),
placeholder=i18n("Introduce the model link"),
interactive=True,
)
model_download_output_info = gr.Textbox(
label=i18n("Output Information"),
info=i18n("The output information will be displayed here."),
value="",
max_lines=8,
interactive=False,
)
model_download_button = gr.Button(i18n("Download Model"))
model_download_button.click(
fn=run_download_script,
inputs=[model_link],
outputs=[model_download_output_info],
)
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],
)