Spaces:
Running
Running
| """ | |
| Example: Using the AI-SL API with both text and file inputs | |
| This demonstrates how the Gradio interface can handle both text input | |
| and file uploads, using whichever one is provided. | |
| """ | |
| from gradio_client import Client | |
| import requests | |
| def test_text_input(): | |
| """ | |
| Example 1: Using text input | |
| """ | |
| print("=== Testing Text Input ===") | |
| # Connect to your hosted app | |
| client = Client("https://huggingface.co/spaces/your-username/your-space") | |
| # Test with text input | |
| text_input = "Hello world! This is a test of the text input functionality." | |
| # Call the interface with text input | |
| result = client.predict( | |
| text_input, # Text input | |
| None, # File input (None) | |
| True, # Use R2 storage | |
| api_name="/predict" | |
| ) | |
| # Process results | |
| json_data, video_url, download_html = result | |
| print(f"Status: {json_data['status']}") | |
| print(f"Video URL: {video_url}") | |
| return video_url | |
| def test_file_input(): | |
| """ | |
| Example 2: Using file input | |
| """ | |
| print("=== Testing File Input ===") | |
| # Connect to your hosted app | |
| client = Client("https://huggingface.co/spaces/your-username/your-space") | |
| # Test with file input | |
| file_path = "example_document.txt" | |
| # Call the interface with file input | |
| result = client.predict( | |
| "", # Text input (empty) | |
| file_path, # File input | |
| True, # Use R2 storage | |
| api_name="/predict" | |
| ) | |
| # Process results | |
| json_data, video_url, download_html = result | |
| print(f"Status: {json_data['status']}") | |
| print(f"Video URL: {video_url}") | |
| return video_url | |
| def test_priority_logic(): | |
| """ | |
| Example 3: Testing the priority logic | |
| """ | |
| print("=== Testing Priority Logic ===") | |
| # Connect to your hosted app | |
| client = Client("https://huggingface.co/spaces/your-username/your-space") | |
| # Test with both inputs (text should take priority) | |
| text_input = "This text should be processed instead of the file." | |
| file_path = "example_document.txt" | |
| # Call the interface with both inputs | |
| result = client.predict( | |
| text_input, # Text input | |
| file_path, # File input | |
| True, # Use R2 storage | |
| api_name="/predict" | |
| ) | |
| # Process results | |
| json_data, video_url, download_html = result | |
| print(f"Status: {json_data['status']}") | |
| print(f"Gloss: {json_data['gloss']}") | |
| print(f"Video URL: {video_url}") | |
| return video_url | |
| def download_video(video_url, output_path): | |
| """ | |
| Download a video from URL | |
| """ | |
| try: | |
| response = requests.get(video_url, stream=True) | |
| response.raise_for_status() | |
| with open(output_path, 'wb') as f: | |
| for chunk in response.iter_content(chunk_size=8192): | |
| f.write(chunk) | |
| print(f"Video downloaded to: {output_path}") | |
| return True | |
| except Exception as e: | |
| print(f"Error downloading video: {e}") | |
| return False | |
| def main(): | |
| """ | |
| Run all examples | |
| """ | |
| print("AI-SL Dual Input Testing") | |
| print("=" * 50) | |
| # Test text input | |
| text_video_url = test_text_input() | |
| if text_video_url: | |
| download_video(text_video_url, "text_input_video.mp4") | |
| print("\n" + "-" * 50 + "\n") | |
| # Test file input | |
| file_video_url = test_file_input() | |
| if file_video_url: | |
| download_video(file_video_url, "file_input_video.mp4") | |
| print("\n" + "-" * 50 + "\n") | |
| # Test priority logic | |
| priority_video_url = test_priority_logic() | |
| if priority_video_url: | |
| download_video(priority_video_url, "priority_test_video.mp4") | |
| print("\n" + "=" * 50) | |
| print("Testing complete!") | |
| if __name__ == "__main__": | |
| main() |