ManojINaik's picture
temp update2
9719d16 verified
# app.py (Temporary script for direct testing)
import os
import sys
import subprocess
import re
import traceback
import time
# Add project root to Python path
sys.path.insert(0, os.getcwd())
# --- Download Kokoro models if they don't exist ---
model_dir = "models"
if not os.path.exists(os.path.join(model_dir, "kokoro-v0_19.onnx")):
print("Downloading Kokoro TTS models...")
os.makedirs(model_dir, exist_ok=True)
os.system(f"wget -P {model_dir} https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files/kokoro-v0_19.onnx")
os.system(f"wget -P {model_dir} https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files/voices.bin")
print("Model download complete.")
print("\n" + "="*50)
print("--- DIRECT EXECUTION TEST ---")
print("This script will now directly run 'generate_video.py'.")
print("Check the logs below for real-time output and the final error.")
print("="*50 + "\n")
sys.stdout.flush() # Ensures the above text is printed immediately
# --- Hardcoded Test Parameters ---
topic = "The Pythagorean Theorem"
context = "In a right-angled triangle, the square of the length of the hypotenuse is equal to the sum of the squares of the lengths of the other two sides."
model = "gemini/gemini-2.0-flash"
file_prefix = re.sub(r'[^a-z0-9_]+', '_', topic.lower())
output_dir = os.path.join("output", file_prefix)
# --- Construct the command ---
command = [
"python", "-u", "generate_video.py", # '-u' for unbuffered output
"--model", model,
"--topic", topic,
"--context", context,
"--output_dir", output_dir
]
print(f"Executing command: {' '.join(command)}\n")
sys.stdout.flush()
# --- Run the command and stream output ---
try:
process = subprocess.Popen(
command,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
text=True,
bufsize=1,
universal_newlines=True
)
# Read and print output line-by-line
for line in iter(process.stdout.readline, ''):
print(line, end='')
sys.stdout.flush()
process.wait() # Wait for the process to finish
if process.returncode == 0:
print("\n--- TEST SUCCEEDED ---")
print(f"Script finished with exit code 0. Check the 'Files' tab for the video in the '{output_dir}' directory.")
else:
print(f"\n--- TEST FAILED WITH EXIT CODE {process.returncode} ---")
print("The error traceback should be visible above.")
except Exception:
print(f"\n--- SCRIPT CRASHED WITH AN EXCEPTION ---")
print(traceback.format_exc())
print("\n--- DIRECT TEST SCRIPT FINISHED ---")
print("The Space will now idle. To run another test, you must restart the Space.")
time.sleep(3600) # Keep the container alive for an hour for you to check logs