Spaces:
Sleeping
Sleeping
| import requests | |
| import json | |
| import os | |
| import time | |
| from datetime import datetime | |
| BASE_URL = "https://osnarayana-media-gen-api.hf.space" | |
| TOKEN = "my_secure_token_123" # must match your auth.py | |
| headers = { | |
| "Authorization": f"Bearer {TOKEN}", | |
| "Content-Type": "application/json" | |
| } | |
| # Directory for saving media files | |
| os.makedirs("outputs", exist_ok=True) | |
| def unique_filename(prefix, ext): | |
| ts = datetime.now().strftime("%Y%m%d_%H%M%S_%f") | |
| return os.path.join("outputs", f"{prefix}_{ts}.{ext}") | |
| # Dummy payload generator | |
| def get_dummy_payload(path): | |
| if "audio/generate" in path: | |
| return {"text": "Hello from auto test!"} | |
| elif "video/generate" in path: | |
| return { | |
| "prompt": "A futuristic city with flying cars", | |
| "tone": "inspiring", | |
| "domain": "sci-fi", | |
| "environment": "day" | |
| } | |
| elif "image/generate" in path: | |
| return {"prompt": "A cute cat in watercolor style"} | |
| elif "ppt/generate" in path: | |
| return { | |
| "slides": [ | |
| {"title": "Welcome", "content": "This is auto-generated PPT"}, | |
| {"title": "Conclusion", "content": "Demo slide"} | |
| ] | |
| } | |
| elif "metrics/evaluate/bleu" in path: | |
| # metrics currently require query params | |
| return {"reference": "hello world", "candidate": "hello"} | |
| elif "metrics/evaluate/clipscore" in path: | |
| return {"reference": "a photo of a cat", "candidate": "an image of a cute cat"} | |
| return {} | |
| # Detect if endpoint expects query params | |
| def use_query_params(path): | |
| return "metrics/evaluate" in path # currently only metrics use query | |
| # List of endpoints to test | |
| ENDPOINTS = [ | |
| "/api/v1/audio/generate", | |
| "/api/v1/video/generate", | |
| "/api/v1/image/generate", | |
| "/api/v1/ppt/generate", | |
| "/api/v1/metrics/evaluate/bleu", | |
| "/api/v1/metrics/evaluate/clipscore" | |
| ] | |
| for endpoint in ENDPOINTS: | |
| url = f"{BASE_URL}{endpoint}" | |
| payload = get_dummy_payload(endpoint) | |
| print(f"\n=== Testing POST {url} ===") | |
| print("Payload:", payload) | |
| # Decide whether to use params or json | |
| if use_query_params(endpoint): | |
| response = requests.post(url, headers=headers, params=payload) | |
| else: | |
| response = requests.post(url, headers=headers, json=payload) | |
| status = response.status_code | |
| print("Status:", status) | |
| if status == 200: | |
| # Handle media files | |
| content_type = response.headers.get("content-type", "") | |
| if "application/json" in content_type: | |
| print("JSON Response:", response.json()) | |
| else: | |
| # Save binary file | |
| ext = "bin" | |
| if "image" in content_type: | |
| ext = "png" | |
| elif "audio" in content_type: | |
| ext = "mp3" | |
| elif "video" in content_type: | |
| ext = "mp4" | |
| elif "presentation" in content_type or "ppt" in endpoint: | |
| ext = "pptx" | |
| filename = unique_filename(endpoint.strip("/").replace("/", "_"), ext) | |
| with open(filename, "wb") as f: | |
| f.write(response.content) | |
| print(f"β Saved media file: {filename}") | |
| else: | |
| print("Error Response:", response.text) | |
| time.sleep(1) # small delay to avoid spamming | |