24 lines
747 B
Python
24 lines
747 B
Python
from __future__ import annotations
|
|
|
|
import json
|
|
|
|
from . import response_helper
|
|
|
|
|
|
def handle_response(api_result, schema=None):
|
|
try:
|
|
json_object = json.loads(json.dumps(api_result))
|
|
except (ValueError, TypeError) as exc:
|
|
raise RuntimeError(f"Invalid JSON response received: {api_result}") from exc
|
|
|
|
video = json_object.get("video") if isinstance(json_object, dict) else None
|
|
if not isinstance(video, dict):
|
|
raise RuntimeError(f"No 'video' key in Kling response: {json_object}")
|
|
|
|
video_url = video.get("url")
|
|
if not video_url:
|
|
raise RuntimeError(f"No URL in Kling video response: {video}")
|
|
|
|
video_bytes = response_helper.fetch_url_bytes(video_url)
|
|
return ["video_result", video_bytes]
|