import gradio as gr import subprocess import os import shutil REPO_URL = "https://github.com/iamuput/NezukoMusic" FOLDER_NAME = "NezukoMusic" START_SCRIPT = os.path.join("Nezuko", "start") # path inside the repo def clone_repo(): if os.path.exists(FOLDER_NAME): shutil.rmtree(FOLDER_NAME) try: output = subprocess.check_output(["git", "clone", REPO_URL], stderr=subprocess.STDOUT) return output.decode() except subprocess.CalledProcessError as e: return f"Git Error:\n{e.output.decode()}" def install_requirements(): req_path = os.path.join(FOLDER_NAME, "requirements.txt") if not os.path.isfile(req_path): return "requirements.txt not found." try: output = subprocess.check_output(["pip", "install", "-r", req_path], stderr=subprocess.STDOUT) return output.decode() except subprocess.CalledProcessError as e: return e.output.decode() def start_music_script(): script_path = os.path.join(FOLDER_NAME, START_SCRIPT) if not os.path.isfile(script_path): return f"Start script not found at: {script_path}" try: output = subprocess.check_output(["bash", script_path], cwd=FOLDER_NAME, stderr=subprocess.STDOUT) return output.decode() except subprocess.CalledProcessError as e: return f"Error running start script:\n{e.output.decode()}" with gr.Blocks() as demo: gr.Markdown("## Nezuko Music Bot Setup Panel") clone_btn = gr.Button("1. Clone NezukoMusic Repository") clone_output = gr.Textbox(label="Git Clone Output", lines=10) install_btn = gr.Button("2. Install Requirements") install_output = gr.Textbox(label="Install Output", lines=10) start_btn = gr.Button("3. Start Nezuko Music Bot") start_output = gr.Textbox(label="Bot Output", lines=10) clone_btn.click(fn=clone_repo, outputs=clone_output) install_btn.click(fn=install_requirements, outputs=install_output) start_btn.click(fn=start_music_script, outputs=start_output) demo.launch()