diff --git a/client/ayon_core/plugins/publish/extract_color_transcode.py b/client/ayon_core/plugins/publish/extract_color_transcode.py old mode 100644 new mode 100755 index 63a73e07fa..5c43ef10dc --- a/client/ayon_core/plugins/publish/extract_color_transcode.py +++ b/client/ayon_core/plugins/publish/extract_color_transcode.py @@ -1,4 +1,5 @@ import os +import re import copy import clique import pyblish.api @@ -101,7 +102,7 @@ class ExtractOIIOTranscode(publish.Extractor): for idx, repre in enumerate(list(repres)): self.log.debug("repre ({}): `{}`".format(idx + 1, repre["name"])) - if not self._repre_is_valid(repre): + if not self._repre_is_valid(repre, profile): continue added_representations = False @@ -279,6 +280,12 @@ class ExtractOIIOTranscode(publish.Extractor): if "delete" in tags and "thumbnail" not in tags: instance.data["representations"].remove(repre) + if ( + added_review + and "review" not in instance.data["families"] + ): + instance.data["families"].append("review") + instance.data["representations"].extend(new_representations) def _rename_in_representation(self, new_repre, files_to_convert, @@ -376,7 +383,7 @@ class ExtractOIIOTranscode(publish.Extractor): return profile - def _repre_is_valid(self, repre): + def _repre_is_valid(self, repre, profile): """Validation if representation should be processed. Args: @@ -403,7 +410,23 @@ class ExtractOIIOTranscode(publish.Extractor): "Skipped.".format(repre["name"])) return False - return True + representations = profile["representations"] + repre_name = repre["name"] + + # make sure if not representations than it will return True + result = [True] + + # check if any of representation patterns match in repre_name + if representations: + result = [] + for r_pattern in representations: + if re.match(r_pattern, repre_name): + result.append(True) + break + else: + result.append(False) + + return any(result) def _mark_original_repre_for_deletion(self, repre, profile, added_review): """If new transcoded representation created, delete old.""" diff --git a/server/settings/publish_plugins.py b/server/settings/publish_plugins.py index eb41c75699..2c7dbcc1a8 100644 --- a/server/settings/publish_plugins.py +++ b/server/settings/publish_plugins.py @@ -605,6 +605,10 @@ class ExtractOIIOTranscodeProfileModel(BaseSettingsModel): default_factory=list, title="Product names" ) + representations: list[str] = SettingsField( + default_factory=list, + title="Representation names" + ) delete_original: bool = SettingsField( True, title="Delete Original Representation",