EXR seq → MOV in batchdelivery 0.4.1, three bugs in extract_offloaded_transcode.py (transcoder backend, not template):
Line 285-286 adds #### to the Write node file regardless of output extension. nuke_template_processor.py around in line 319-325 already has the right VIDEO_EXTENSIONS check (it's already imported at the top).
nuke_transcoder.py doesn't set job["output_extension"] like nuke_template_processor.py in line 338 does, so the downstream representation collapse at lines 921-966 never runs for the transcoder backend. Result: ext=mov but files keeps the 34 EXR names → IntegrateDeliveryProduct FileNotFoundError trying to copy nonexistent EXRs.
After setting output_extension, the collapse at lines 947-950 calls clique.assemble without checking length. A single-file list raises IndexError. We used a len(files) > 1 guard.
We tested and patched locally and EXR seq → ProRes 4444 XQ now lands as a single MOV in publish.
Lines 282-291, replacing the original if file_type and (is_sequence or is_video): block:
is_video_output = (
bool(file_type) and f".{file_type}" in VIDEO_EXTENSIONS
)
if file_type and (is_sequence or is_video) and not is_video_output:
write_node_file_name = (
f"{file_head}{'#' * padding}.{file_type}"
)
elif is_video_output:
write_node_file_name = f"{file_head.rstrip('.')}.{file_type}"
if "#" in write_node_file_name:
new_repre_files = convert_hashed_filename(
write_node_file_name, frame_start, frame_end)Added just before self.log.info(f"Nuke job data: ...") near the end of _prepare_job_data:
if is_video_output:
job_data["output_extension"] = f".{file_type}"
new_repre_files = [write_node_file_name]Line ~947, adding len(files) > 1 to the downstream collapse condition:
if (
isinstance(files, list)
and len(files) > 1
and output_extension in VIDEO_EXTENSIONS
):Please authenticate to join the conversation.
In Review
Bugs

Matti Kaihola
Get notified by email when there are changes.
In Review
Bugs

Matti Kaihola
Get notified by email when there are changes.