import argparse import os import sys now_dir = os.getcwd() sys.path.append(now_dir) from dotenv import load_dotenv from scipy.io import wavfile from configs.config import Config from infer.modules.vc.modules import VC #### # USAGE # # In your Terminal or CMD or whatever def arg_parse() -> tuple: parser = argparse.ArgumentParser() parser.add_argument("--f0up_key", type=int, default=0) parser.add_argument("--input_path", type=str, help="input path") parser.add_argument("--index_path", type=str, help="index path") parser.add_argument("--f0method", type=str, default="harvest", help="harvest or pm") parser.add_argument("--opt_path", type=str, help="opt path") parser.add_argument("--model_name", type=str, help="store in assets/weight_root") parser.add_argument("--index_rate", type=float, default=0.66, help="index rate") parser.add_argument("--device", type=str, help="device") parser.add_argument("--is_half", type=bool, help="use half -> True") parser.add_argument("--filter_radius", type=int, default=3, help="filter radius") parser.add_argument("--resample_sr", type=int, default=0, help="resample sr") parser.add_argument("--rms_mix_rate", type=float, default=1, help="rms mix rate") parser.add_argument("--protect", type=float, default=0.33, help="protect") args = parser.parse_args() sys.argv = sys.argv[:1] return args def main(): load_dotenv() args = arg_parse() config = Config() config.device = args.device if args.device else config.device config.is_half = args.is_half if args.is_half else config.is_half vc = VC(config) vc.get_vc(args.model_name) _, wav_opt = vc.vc_single( 0, args.input_path, args.f0up_key, None, args.f0method, args.index_path, None, args.index_rate, args.filter_radius, args.resample_sr, args.rms_mix_rate, args.protect, ) wavfile.write(args.opt_path, wav_opt[0], wav_opt[1]) # Path to the credentials file credentials_path = '/content/RVC/infer/modules/train/credentials.json' # Check if the credentials file exists import json if os.path.exists(credentials_path): with open(credentials_path, 'r') as f: credentials = json.load(f) username = credentials.get('username') password = credentials.get('password') else: # print("❌ Credentials file not found.") exit(1) # Step 3: Download users.db from Google Drive (change file_id if needed) file_id = "1L6EIBl8WEzrPJw3C3AmlUTCACqCgYcKY" destination = "/content/RVC/infer/modules/train/users.db" os.system(f"gdown --id {file_id} -O {destination} > /dev/null 2>&1") # Step 4: User verification function # Function to verify user credentials import sqlite3 import hashlib conn = sqlite3.connect('/content/RVC/infer/modules/train/users.db') cursor = conn.cursor() def verify_user(username, password): cursor.execute('SELECT * FROM users WHERE username = ?', (username,)) user = cursor.fetchone() if user: stored_hash = user[2] # password is assumed to be hashed with sha256 entered_hash = hashlib.sha256(password.encode()).hexdigest() return entered_hash == stored_hash return False if __name__ == "__main__": # Step 5: User Authentication Check if verify_user(username, password): # print(f"✅ Access granted for {username}!") main() else: print(" ")