Hev832 commited on
Commit
a7f8a70
·
verified ·
1 Parent(s): df7e802

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +60 -1
app.py CHANGED
@@ -23,7 +23,6 @@ import gdown
23
  import subprocess
24
  import time
25
  from argparse import ArgumentParser
26
- from download_model import download_online_model
27
  main_dir = Path().resolve()
28
  print(main_dir)
29
 
@@ -68,6 +67,66 @@ def refresh_audio_list():
68
  def play_audio(file_path):
69
  return file_path
70
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
 
72
 
73
 
 
23
  import subprocess
24
  import time
25
  from argparse import ArgumentParser
 
26
  main_dir = Path().resolve()
27
  print(main_dir)
28
 
 
67
  def play_audio(file_path):
68
  return file_path
69
 
70
+ def extract_zip(extraction_folder, zip_name):
71
+ os.makedirs(extraction_folder)
72
+ with zipfile.ZipFile(zip_name, 'r') as zip_ref:
73
+ zip_ref.extractall(extraction_folder)
74
+ os.remove(zip_name)
75
+
76
+ index_filepath, model_filepath = None, None
77
+ for root, dirs, files in os.walk(extraction_folder):
78
+ for name in files:
79
+ if name.endswith('.index') and os.stat(os.path.join(root, name)).st_size > 1024 * 100:
80
+ index_filepath = os.path.join(root, name)
81
+
82
+ if name.endswith('.pth') and os.stat(os.path.join(root, name)).st_size > 1024 * 1024 * 40:
83
+ model_filepath = os.path.join(root, name)
84
+
85
+ if not model_filepath:
86
+ raise Exception(f'No .pth model file was found in the extracted zip. Please check {extraction_folder}.')
87
+
88
+ # move model and index file to extraction folder
89
+ os.rename(model_filepath, os.path.join(extraction_folder, os.path.basename(model_filepath)))
90
+ if index_filepath:
91
+ os.rename(index_filepath, os.path.join(extraction_folder, os.path.basename(index_filepath)))
92
+
93
+ # remove any unnecessary nested folders
94
+ for filepath in os.listdir(extraction_folder):
95
+ if os.path.isdir(os.path.join(extraction_folder, filepath)):
96
+ shutil.rmtree(os.path.join(extraction_folder, filepath))
97
+
98
+
99
+ def download_online_model(url, dir_name, models_dir='./rvc_models'):
100
+ try:
101
+ print(f'[~] Downloading voice model with name {dir_name}...')
102
+ zip_name = url.split('/')[-1]
103
+ extraction_folder = os.path.join(models_dir, dir_name)
104
+
105
+ if os.path.exists(extraction_folder):
106
+ return f'[!] Voice model directory {dir_name} already exists! Choose a different name for your voice model.'
107
+
108
+ # Download from pixeldrain
109
+ if 'pixeldrain.com' in url:
110
+ url = f'https://pixeldrain.com/api/file/{zip_name}'
111
+ urllib.request.urlretrieve(url, zip_name)
112
+ # Download from Google Drive
113
+ elif 'drive.google.com' in url:
114
+ zip_name = dir_name + ".zip"
115
+ gdown.download(url, output=zip_name, use_cookies=True, quiet=True)
116
+ else:
117
+ # General URL download
118
+ urllib.request.urlretrieve(url, zip_name)
119
+
120
+ print(f'[~] Extracting zip file...')
121
+ extract_zip(extraction_folder, zip_name)
122
+ print(f'[+] {dir_name} Model successfully downloaded!')
123
+
124
+ # Return success message after successful download
125
+ return f"[+] {dir_name} Model successfully downloaded!"
126
+
127
+ except Exception as e:
128
+ # Return the error message instead of raising an exception
129
+ return f'[!] Error: {str(e)}'
130
 
131
 
132