From a345090b529ab1ae8527d5952fbbe23ce76ea152 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Tue, 9 Jul 2019 09:35:53 +0200 Subject: [PATCH] feat(nks): source resolution Tag implementation --- .../publish/collect_hierarchy_context.py | 18 ++++++++++++++- .../publish/collect_tag_resolution.py | 22 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 pype/plugins/nukestudio/publish/collect_tag_resolution.py diff --git a/pype/plugins/nukestudio/publish/collect_hierarchy_context.py b/pype/plugins/nukestudio/publish/collect_hierarchy_context.py index 76d5126f9f..3432970df2 100644 --- a/pype/plugins/nukestudio/publish/collect_hierarchy_context.py +++ b/pype/plugins/nukestudio/publish/collect_hierarchy_context.py @@ -49,7 +49,8 @@ class CollectHierarchyInstance(pyblish.api.ContextPlugin): self.log.debug("__ data: {}".format(data)) # checking if tags are available - self.log.debug("__ instance.data[name]: {}".format(instance.data["name"])) + self.log.debug("__ instance.data[name]: {}".format( + instance.data["name"])) self.log.debug("__ tags: {}".format(tags)) if not tags: @@ -255,6 +256,21 @@ class CollectHierarchyContext(pyblish.api.ContextPlugin): "handle_end": handle_end }) + # adding SourceResolution if Tag was present + s_res = instance.data.get("sourceResolution") + if s_res and instance.data.get("main"): + item = instance.data["item"] + self.log.debug("TrackItem: `{0}`".format( + item)) + width = int(item.source().mediaSource().width()) + height = int(item.source().mediaSource().height()) + self.log.info("Source Width and Height are: `{0} x {1}`".format( + width, height)) + in_info['custom_attributes'].update({ + "resolution_width": width, + "resolution_height": height + }) + in_info['tasks'] = instance.data['tasks'] parents = instance.data.get('parents', []) diff --git a/pype/plugins/nukestudio/publish/collect_tag_resolution.py b/pype/plugins/nukestudio/publish/collect_tag_resolution.py new file mode 100644 index 0000000000..24c13d2b4a --- /dev/null +++ b/pype/plugins/nukestudio/publish/collect_tag_resolution.py @@ -0,0 +1,22 @@ +from pyblish import api + + +class CollectClipTagResolution(api.InstancePlugin): + """Collect Source Resolution from Tags of selected track items.""" + + order = api.CollectorOrder + 0.013 + label = "Collect Source Resolution" + hosts = ["nukestudio"] + families = ['clip'] + + def process(self, instance): + # gets tags + tags = instance.data["tags"] + + for t in tags: + t_metadata = dict(t["metadata"]) + t_family = t_metadata.get("tag.family", "") + + # gets only task family tags and collect labels + if "resolution" in t_family: + instance.data["sourceResolution"] = True