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.pyaround in line 319-325 already has the right VIDEO_EXTENSIONS check (it's already imported at the top).nuke_transcoder.pydoesn't setjob["output_extension"]likenuke_template_processor.pyin 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) > 1guard.
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
):