File size: 2,889 Bytes
55adc26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
import wget

url_base = "https://huggingface.co/IAHispano/Applio/resolve/main/Resources"
pretraineds_v1_list = [
    (
        "pretrained_v1/",
        [
            "D32k.pth",
            "D40k.pth",
            "D48k.pth",
            "G32k.pth",
            "G40k.pth",
            "G48k.pth",
            "f0D32k.pth",
            "f0D40k.pth",
            "f0D48k.pth",
            "f0G32k.pth",
            "f0G40k.pth",
            "f0G48k.pth",
        ],
    ),
]
pretraineds_v2_list = [
    (
        "pretrained_v2/",
        [
            "D32k.pth",
            "D40k.pth",
            "D48k.pth",
            "G32k.pth",
            "G40k.pth",
            "G48k.pth",
            "f0D32k.pth",
            "f0D40k.pth",
            "f0D48k.pth",
            "f0G32k.pth",
            "f0G40k.pth",
            "f0G48k.pth",
        ],
    ),
]

models_list = [
    "rmvpe.pt",
    "fcpe.pt",
    # "rmvpe.onnx"
]

embedders_list = [
    (
        "embedders/",
        [
            "hubert_base.pt",
            "contentvec_base.pt",
        ],
    ),
]

executables_list = ["ffmpeg.exe", "ffprobe.exe"]

folder_mapping_list = {
    "pretrained_v1/": "rvc/pretraineds/pretrained_v1/",
    "pretrained_v2/": "rvc/pretraineds/pretrained_v2/",
    "embedders/": "rvc/embedders/",
}


def prequisites_download_pipeline(pretraineds_v1, pretraineds_v2, models, exe):
    def download_files(file_list):
        for file_name in file_list:
            destination_path = os.path.join(file_name)
            url = f"{url_base}/{file_name}"
            if not os.path.exists(destination_path):
                os.makedirs(os.path.dirname(destination_path) or ".", exist_ok=True)
                print(f"\nDownloading {url} to {destination_path}...")
                wget.download(url, out=destination_path)

    def download_mapping_files(list):
        for remote_folder, file_list in list:
            local_folder = folder_mapping_list.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):
                    os.makedirs(os.path.dirname(destination_path) or ".", exist_ok=True)
                    print(f"\nDownloading {url} to {destination_path}...")
                    wget.download(url, out=destination_path)

    if models == "True":
        download_files(models_list)
        download_mapping_files(embedders_list)

    if exe == "True" and os.name == "nt":
        download_files(executables_list)

    if pretraineds_v1 == "True":
        download_mapping_files(pretraineds_v1_list)

    if pretraineds_v2 == "True":
        download_mapping_files(pretraineds_v2_list)