[docs]@dataclassclassSlateRenderer:"""Class for rendering slates. Attention: This class is functional but not yet tested. TODO: * refactor into a plain python class * add tests """slate_proc:SlateHtmlGenerator=Nonesource_sequence:SequenceInfo=Nonedest:str=Nonedef__post_init__(self)->None:self._thumbs:List=Noneself._debug:bool=Falseself._command:List=[]ifself.source_sequence:self.set_source_sequence(self.source_sequence)self.slate_proc.source_files=self.source_sequence.framesifself.dest:self.set_destination(self.dest)defset_slate_processor(self,processor:SlateHtmlGenerator)->None:self.slate_proc=processordefset_debug(self,debug:bool)->None:self._debug=debugdefset_source_sequence(self,source_sequence:SequenceInfo)->None:self.source_sequence=source_sequencehead,frame,tail=source_sequence._get_file_splits(source_sequence.frames[0])self.dest=f"{head}{str(int(frame)-1).zfill(source_sequence.padding)}{tail}"# noqadefset_destination(self,dest:str)->None:self.dest=destdefrender(self)->None:iinfo_metadata=call_iinfo(self.source_sequence.frames[0])timecode=offset_timecode(tc=iinfo_metadata["timecode"],frame_offset=-1,fps=iinfo_metadata["fps"],)self.slate_proc.create_base_slate()ifnotself.slate_proc:raiseValueError("Missing valid SlateHtmlGenerator!")cmd=["oiiotool"]cmd.extend(self.slate_proc.get_oiiotool_cmd())cmd.extend(["--ch","R,G,B","--attrib:type=timecode","smpte:TimeCode",f"""'{timecode.replace('"',"")}'""",])ifself._debug:cmd.extend(["--debug","-v"])cmd.extend(["-o",self.dest])self._command=cmdsubprocess.run(cmd)slate_base_image_path=Path(self.slate_proc._slate_base_image_path).resolve()slate_base_image_path.unlink()shutil.rmtree(slate_base_image_path.parent)