kling3: always include sound in payload and backfill old kling_data

This commit is contained in:
Dreaming Computers
2026-02-11 14:29:40 +07:00
parent 9620bee603
commit 7016f38365
2 changed files with 10 additions and 0 deletions
+9
View File
@@ -236,6 +236,8 @@ def _build_kling3_payload(
payload_input["prompt"] = prompt
payload_input["sound"] = bool(sound)
else:
# KIE expects the sound field to be present; multi-shot requires it to be false.
payload_input["sound"] = False
multi_prompt = _parse_multi_prompt_text(shots_text)
total_duration = sum(int(item["duration"]) for item in multi_prompt)
if total_duration < 3 or total_duration > 15:
@@ -401,6 +403,13 @@ def run_kling3_video_from_request(
payload_input = payload.get("input")
if not isinstance(payload_input, dict):
raise _validation_error("request payload must include an input object.")
# Backward compatibility for older preflight payloads saved before `sound`
# was always included.
if "sound" not in payload_input:
payload = dict(payload)
payload_input = dict(payload_input)
payload_input["sound"] = False if bool(payload_input.get("multi_shots")) else True
payload["input"] = payload_input
_log(log, "Creating Kling 3.0 video task...")
start_time = time.time()
+1
View File
@@ -26,6 +26,7 @@ Generate Kling 3.0 videos in single-shot or multi-shot mode.
- `multi_shots=true`:
- `last_frame` is invalid
- `sound` is invalid
- payload sends `sound: false`
- shot durations are summed automatically and sent as the final payload duration
- `aspect_ratio` is always sent in payload.
- `@element_name` references in prompt(s) must match provided elements.