From d1dd5023571b10934c0b81dc4d8cd31e6983998f Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Tue, 24 Mar 2020 16:35:37 +0100 Subject: [PATCH 1/4] fix(nuke): validator clam fps float number --- pype/plugins/nuke/publish/validate_script.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/pype/plugins/nuke/publish/validate_script.py b/pype/plugins/nuke/publish/validate_script.py index f7dd84d714..36df228ed5 100644 --- a/pype/plugins/nuke/publish/validate_script.py +++ b/pype/plugins/nuke/publish/validate_script.py @@ -74,17 +74,14 @@ class ValidateScript(pyblish.api.InstancePlugin): if "handleEnd" in asset_attributes: handle_end = asset_attributes["handleEnd"] - # Set frame range with handles - # asset_attributes["frameStart"] -= handle_start - # asset_attributes["frameEnd"] += handle_end - if len(str(asset_attributes["fps"])) > 4: - asset_attributes["fps"] = float("{0:.8f}".format(asset_attributes["fps"])) + asset_attributes["fps"] = float("{0:.4f}".format( + asset_attributes["fps"])) # Get values from nukescript script_attributes = { "handleStart": ctx_data["handleStart"], "handleEnd": ctx_data["handleEnd"], - "fps": ctx_data["fps"], + "fps": float("{0:.4f}".format(ctx_data["fps"])), "frameStart": ctx_data["frameStart"], "frameEnd": ctx_data["frameEnd"], "resolutionWidth": ctx_data["resolutionWidth"], From 695351cefcf25e3bc564f4f35fb87c6efeebfcb9 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Tue, 24 Mar 2020 18:27:11 +0100 Subject: [PATCH 2/4] feat(nks): improving way file's metadata are collected --- .../nukestudio/publish/collect_clips.py | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/pype/plugins/nukestudio/publish/collect_clips.py b/pype/plugins/nukestudio/publish/collect_clips.py index 6a1dad9a6d..746df67485 100644 --- a/pype/plugins/nukestudio/publish/collect_clips.py +++ b/pype/plugins/nukestudio/publish/collect_clips.py @@ -47,6 +47,16 @@ class CollectClips(api.ContextPlugin): track = item.parent() source = item.source().mediaSource() source_path = source.firstpath() + file_head = source.filenameHead() + file_info = next((f for f in source.fileinfos()), None) + source_first_frame = file_info.startFrame() + is_sequence = False + + if not source.singleFile(): + self.log.info("Single file") + is_sequence = True + source_path = file_info.filename() + effects = [f for f in item.linkedItems() if f.isEnabled() if isinstance(f, hiero.core.EffectTrackItem)] @@ -78,12 +88,6 @@ class CollectClips(api.ContextPlugin): ) ) - try: - head, padding, ext = os.path.basename(source_path).split(".") - source_first_frame = int(padding) - except Exception: - source_first_frame = 0 - data.update({ "name": "{0}_{1}".format(track.name(), item.name()), "item": item, @@ -91,6 +95,8 @@ class CollectClips(api.ContextPlugin): "timecodeStart": str(source.timecodeStart()), "timelineTimecodeStart": str(sequence.timecodeStart()), "sourcePath": source_path, + "sourceFileHead": file_head, + "isSequence": is_sequence, "track": track.name(), "trackIndex": track_index, "sourceFirst": source_first_frame, @@ -101,8 +107,9 @@ class CollectClips(api.ContextPlugin): int(item.sourceIn())) + 1, "clipIn": int(item.timelineIn()), "clipOut": int(item.timelineOut()), - "clipDuration": (int(item.timelineOut()) - - int(item.timelineIn())) + 1, + "clipDuration": ( + int(item.timelineOut()) - int( + item.timelineIn())) + 1, "asset": asset, "family": "clip", "families": [], From c6c4c26a54386b0b05ec147942ecd5ced97fc4f6 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Tue, 24 Mar 2020 18:27:45 +0100 Subject: [PATCH 3/4] fix(nks): plate single file vs sequence treatment --- .../nukestudio/publish/collect_plates.py | 31 +++++++------------ 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/pype/plugins/nukestudio/publish/collect_plates.py b/pype/plugins/nukestudio/publish/collect_plates.py index 4ed281f0ee..8a79354bbf 100644 --- a/pype/plugins/nukestudio/publish/collect_plates.py +++ b/pype/plugins/nukestudio/publish/collect_plates.py @@ -147,22 +147,15 @@ class CollectPlatesData(api.InstancePlugin): "version": version }) + source_first_frame = instance.data.get("sourceFirst") + source_file_head = instance.data.get("sourceFileHead") - try: - basename, ext = os.path.splitext(source_file) - head, padding = os.path.splitext(basename) - ext = ext[1:] - padding = padding[1:] - self.log.debug("_ padding: `{}`".format(padding)) - # head, padding, ext = source_file.split('.') - source_first_frame = int(padding) - padding = len(padding) - file = "{head}.%0{padding}d.{ext}".format( - head=head, - padding=padding, - ext=ext - ) - + if instance.data.get("isSequence", False): + self.log.info("Is sequence of files") + file = os.path.basename(source_file) + ext = os.path.splitext(file)[-1][1:] + self.log.debug("source_file_head: `{}`".format(source_file_head)) + head = source_file_head[:-1] start_frame = int(source_first_frame + instance.data["sourceInH"]) duration = int( instance.data["sourceOutH"] - instance.data["sourceInH"]) @@ -170,10 +163,10 @@ class CollectPlatesData(api.InstancePlugin): self.log.debug("start_frame: `{}`".format(start_frame)) self.log.debug("end_frame: `{}`".format(end_frame)) files = [file % i for i in range(start_frame, (end_frame + 1), 1)] - except Exception as e: - self.log.warning("Exception in file: {}".format(e)) - head, ext = os.path.splitext(source_file) - ext = ext[1:] + else: + self.log.info("Is single file") + ext = os.path.splitext(source_file)[-1][1:] + head = source_file_head files = source_file start_frame = instance.data["sourceInH"] end_frame = instance.data["sourceOutH"] From 461441ebf42ab734f741acd764739e51f2d805c8 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Tue, 24 Mar 2020 19:47:36 +0100 Subject: [PATCH 4/4] fix(nk): build first workfile get jpeg sequences --- pype/nuke/lib.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pype/nuke/lib.py b/pype/nuke/lib.py index 6cd66407d6..cbec8b4300 100644 --- a/pype/nuke/lib.py +++ b/pype/nuke/lib.py @@ -1135,7 +1135,7 @@ class BuildWorkfile(WorkfileSettings): regex_filter=None, version=None, representations=["exr", "dpx", "lutJson", "mov", - "preview", "png"]): + "preview", "png", "jpeg", "jpg"]): """ A short description.