|
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") |
|
|
|
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() |