Spaces:
Sleeping
Sleeping
import gradio as gr | |
import os | |
import shutil | |
import subprocess | |
def process_ebook(ebook_file): | |
# Ensure input_files folder exists | |
input_dir = "input_files" | |
output_dir = "output_audiobooks" | |
os.makedirs(input_dir, exist_ok=True) | |
# Save the uploaded file to the input_files folder | |
ebook_file_path = os.path.join(input_dir, ebook_file.name) | |
shutil.move(ebook_file.name, ebook_file_path) | |
# Call the Auto_VoxNovel.py script and wait for it to finish | |
try: | |
result = subprocess.run(["python3", "Auto_VoxNovel.py"], capture_output=True, text=True) | |
if result.returncode == 0: | |
# Success message when the audiobook is ready | |
return "Audiobook is ready! You can now download your files below." | |
else: | |
# Error message if something went wrong | |
return f"Error: {result.stderr}" | |
except Exception as e: | |
return f"Failed to run audiobook script: {str(e)}" | |
def list_output_files(): | |
# List all files in the output directory for downloading | |
output_dir = "output_audiobooks" | |
if os.path.exists(output_dir): | |
files = [str(f) for f in os.listdir(output_dir) if os.path.isfile(os.path.join(output_dir, f))] | |
return files | |
return [] | |
def download_output_files(): | |
files = list_output_files() | |
file_links = {file: os.path.join("output_audiobooks", file) for file in files} | |
return file_links | |
# Gradio Interface | |
with gr.Blocks() as gui: | |
gr.Markdown("### Ebook to Audiobook Converter") | |
with gr.Row(): | |
with gr.Column(): | |
ebook_input = gr.File(label="Upload your ebook file (epub, pdf, etc.)") | |
process_button = gr.Button("Start Processing") | |
status_output = gr.Textbox(label="Status") | |
process_button.click(process_ebook, inputs=ebook_input, outputs=status_output) | |
with gr.Column(): | |
gr.Markdown("### Download Generated Audiobook Files") | |
download_button = gr.Button("Reload Files") | |
file_output = gr.File(label="Generated Audiobook Files", interactive=False) | |
download_button.click(fn=lambda: download_output_files(), inputs=[], outputs=file_output) | |
gui.launch() | |