File size: 2,765 Bytes
3fffcf9
d9486d1
86c6777
3fffcf9
25bd165
 
3fffcf9
929083d
3fffcf9
86c6777
25bd165
86c6777
 
3fffcf9
86c6777
 
3fffcf9
 
86c6777
d9486d1
3fffcf9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d9486d1
 
3fffcf9
 
 
 
a12cf12
3fffcf9
a12cf12
3fffcf9
 
 
 
 
 
d9486d1
3fffcf9
 
 
d9486d1
3fffcf9
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# 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-1.5-flash-001"
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