| """ |
| Test Client for Caption Renderer API |
| Use this to test the HF Space endpoint programmatically |
| """ |
|
|
| import requests |
| import json |
|
|
| |
| HF_SPACE_URL = "https://YOUR-USERNAME-caption-renderer-v4.hf.space" |
|
|
| |
| 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 |
| |
| |
| words = [item['text'] for item in SAMPLE_TRANSCRIPT[:4]] |
| |
| print(f"Testing with words: {words}") |
| |
| |
| frames = [] |
| for i in range(48): |
| active_idx = (i // 12) % len(words) |
| frame = render_frame(words, active_idx, "hormozi") |
| frames.append(frame) |
| |
| |
| 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: |
| 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() |
|
|