File size: 3,129 Bytes
fc8956e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import os
import requests
from tqdm import tqdm
import subprocess
import shutil
import platform
import logging

logger = logging.getLogger(__name__)

URL_BASE = "https://huggingface.co/kanoyo/0v2Super/resolve/main"
models_download = [
    (
        "pretrained_v2/",
        [
            "G_SnowieV3.1_40k.pth",
            "D_SnowieV3.1_40k.pth",
        ],
    ),
]


individual_files = [
    ("hubert_base.pt", "assets/hubert/"),
    ("rmvpe.pt", "assets/rmvpe/"),
    ("rmvpe.onnx", "assets/rmvpe/"),
]

folder_mapping = {
    "pretrained_v2/": "assets/pretrained_v2/",
    "": "",
}


def download_file_with_progress(url, destination_path):
    response = requests.get(url, stream=True)
    total_size = int(response.headers.get("content-length", 0))
    block_size = 1024

    with open(destination_path, "wb") as file, tqdm(
        desc=os.path.basename(destination_path),
        total=total_size,
        unit="B",
        unit_scale=True,
        unit_divisor=1024,
    ) as bar:
        for data in response.iter_content(block_size):
            file.write(data)
            bar.update(len(data))


if not os.path.exists("torchcrepe"):
    os_name = platform.system()

    print("Клонирование репозитория GitHub во временную директорию...")

    mingit_path = os.path.join(os.getcwd(), "lib", "tools", "mingit", "cmd", "git.exe")

    if os.path.exists(mingit_path):
        subprocess.run(
            [
                mingit_path,
                "clone",
                "https://github.com/maxrmorrison/torchcrepe.git",
                "temp_torchcrepe",
            ]
        )
    else:
        subprocess.run(
            [
                "git",
                "clone",
                "https://github.com/maxrmorrison/torchcrepe.git",
                "temp_torchcrepe",
            ]
        )

    print("Копирование папки torchcrepe...")
    shutil.copytree("temp_torchcrepe/torchcrepe", "./torchcrepe")

    print("Удаление временной директории...")
    print(os_name)
    if os_name == "Windows":
        subprocess.run("rmdir /s /q temp_torchcrepe", shell=True)
    if os_name == "Linux":
        shutil.rmtree("temp_torchcrepe")

for remote_folder, file_list in models_download:
    local_folder = folder_mapping.get(remote_folder, "")
    for file in file_list:
        destination_path = os.path.join(local_folder, file)
        url = f"{URL_BASE}/{remote_folder}{file}"
        if not os.path.exists(destination_path):
            print(f"Скачивание {url} в {destination_path}...")
            download_file_with_progress(url, destination_path)

for file_name, local_folder in individual_files:
    destination_path = os.path.join(local_folder, file_name)
    url = f"{URL_BASE}/{file_name}"
    if not os.path.exists(destination_path):
        print(f"Скачивание {url} в {destination_path}...")
        download_file_with_progress(url, destination_path)

os.system("cls" if os.name == "nt" else "clear")
logger.info("Загрузка Kanoyo успешно продолжается...")