File size: 2,581 Bytes
c516bed
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""
Test Client for Caption Renderer API
Use this to test the HF Space endpoint programmatically
"""

import requests
import json

# Your HF Space URL (update after deployment)
HF_SPACE_URL = "https://YOUR-USERNAME-caption-renderer-v4.hf.space"

# Sample Hindi transcript (as provided by user)
SAMPLE_TRANSCRIPT = [
    {"end": 0.44, "text": "राधे", "start": 0.3},
    {"end": 0.62, "text": "राधे", "start": 0.48},
    {"end": 0.9, "text": "महाराज", "start": 0.68},
    {"end": 1, "text": "जी,", "start": 0.94},
    {"end": 1.7, "text": "महाराज", "start": 1.52},
    {"end": 1.9, "text": "इस", "start": 1.82},
    {"end": 2.36, "text": "कलयुग", "start": 2.04},
    {"end": 2.56, "text": "में", "start": 2.46},
    {"end": 3.18, "text": "विद्यार्थी", "start": 2.72},
    {"end": 3.5, "text": "जीवन", "start": 3.3},
    {"end": 3.66, "text": "में", "start": 3.6},
    {"end": 4.22, "text": "ब्रह्मचर्य", "start": 3.78},
    {"end": 4.36, "text": "का", "start": 4.3}
]

def test_local():
    """Test the video generation locally without API"""
    from canvas_renderer import render_frame
    from video_encoder import encode_frames_pipe
    
    # Test with sample transcript
    words = [item['text'] for item in SAMPLE_TRANSCRIPT[:4]]
    
    print(f"Testing with words: {words}")
    
    # Generate a few test frames
    frames = []
    for i in range(48):  # 2 seconds at 24fps
        active_idx = (i // 12) % len(words)
        frame = render_frame(words, active_idx, "hormozi")
        frames.append(frame)
    
    # Save first frame for visual inspection
    frames[0].save("test_frame_0.png")
    frames[12].save("test_frame_12.png")
    print("Saved test frames: test_frame_0.png, test_frame_12.png")
    
    # Try encoding
    try:
        encode_frames_pipe(frames, "test_local.webm", fps=24)
        print("Successfully created test_local.webm")
    except Exception as e:
        print(f"Encoding failed (expected if FFmpeg not installed): {e}")


def test_gradio_api(space_url: str = HF_SPACE_URL):
    """Test the deployed Gradio API"""
    from gradio_client import Client
    
    client = Client(space_url)
    
    result = client.predict(
        transcript_json=json.dumps(SAMPLE_TRANSCRIPT),
        style="hormozi",
        api_name="/generate_video"
    )
    
    print(f"Video path: {result[0]}")
    print(f"Cloudinary URL: {result[1]}")


if __name__ == "__main__":
    print("=== Testing Local Rendering ===")
    test_local()