diff --git a/openpype/hosts/photoshop/plugins/publish/extract_review.py b/openpype/hosts/photoshop/plugins/publish/extract_review.py index 57ad573aae..031ef5eefa 100644 --- a/openpype/hosts/photoshop/plugins/publish/extract_review.py +++ b/openpype/hosts/photoshop/plugins/publish/extract_review.py @@ -24,40 +24,43 @@ class ExtractReview(openpype.api.Extractor): make_image_sequence = None def process(self, instance): - self.staging_dir = self.staging_dir(instance) - self.log.info("Outputting image to {}".format(self.staging_dir)) + staging_dir = self.staging_dir(instance) + self.log.info("Outputting image to {}".format(staging_dir)) - self.stub = photoshop.stub() + stub = photoshop.stub() self.output_seq_filename = os.path.splitext( - self.stub.get_active_document_name())[0] + ".%04d.jpg" + stub.get_active_document_name())[0] + ".%04d.jpg" new_img_list = src_img_list = [] if self.make_image_sequence: src_img_list = self._get_image_path_from_instances(instance) if self.make_image_sequence and src_img_list: - new_img_list = self._copy_image_to_staging_dir(src_img_list) + new_img_list = self._copy_image_to_staging_dir( + staging_dir, + src_img_list + ) else: layers = self._get_layers_from_instance(instance) - new_img_list = self._saves_flattened_layers(layers) + new_img_list = self._saves_flattened_layers(staging_dir, layers) instance.data["representations"].append({ "name": "jpg", "ext": "jpg", "files": new_img_list, - "stagingDir": self.staging_dir, + "stagingDir": staging_dir, "tags": self.jpg_options['tags'] }) ffmpeg_path = openpype.lib.get_ffmpeg_tool_path("ffmpeg") - instance.data["stagingDir"] = self.staging_dir + instance.data["stagingDir"] = staging_dir # Generate thumbnail. - thumbnail_path = os.path.join(self.staging_dir, "thumbnail.jpg") + thumbnail_path = os.path.join(staging_dir, "thumbnail.jpg") self.log.info(f"Generate thumbnail {thumbnail_path}") args = [ ffmpeg_path, "-y", - "-i", os.path.join(self.staging_dir, self.output_seq_filename), + "-i", os.path.join(staging_dir, self.output_seq_filename), "-vf", "scale=300:-1", "-vframes", "1", thumbnail_path @@ -68,18 +71,18 @@ class ExtractReview(openpype.api.Extractor): "name": "thumbnail", "ext": "jpg", "files": os.path.basename(thumbnail_path), - "stagingDir": self.staging_dir, + "stagingDir": staging_dir, "tags": ["thumbnail"] }) # Generate mov. - mov_path = os.path.join(self.staging_dir, "review.mov") + mov_path = os.path.join(staging_dir, "review.mov") self.log.info(f"Generate mov review: {mov_path}") img_number = len(new_img_list) args = [ ffmpeg_path, "-y", - "-i", os.path.join(self.staging_dir, self.output_seq_filename), + "-i", os.path.join(staging_dir, self.output_seq_filename), "-vf", "pad=ceil(iw/2)*2:ceil(ih/2)*2", "-vframes", str(img_number), mov_path @@ -90,7 +93,7 @@ class ExtractReview(openpype.api.Extractor): "name": "mov", "ext": "mov", "files": os.path.basename(mov_path), - "stagingDir":self.staging_dir, + "stagingDir": staging_dir, "frameStart": 1, "frameEnd": img_number, "fps": 25, @@ -103,7 +106,7 @@ class ExtractReview(openpype.api.Extractor): instance.data["frameEnd"] = img_number instance.data["fps"] = 25 - self.log.info(f"Extracted {instance} to {self.staging_dir}") + self.log.info(f"Extracted {instance} to {staging_dir}") def _get_image_path_from_instances(self, instance): img_list = [] @@ -121,11 +124,11 @@ class ExtractReview(openpype.api.Extractor): return img_list - def _copy_image_to_staging_dir(self, img_list): + def _copy_image_to_staging_dir(self, staging_dir, img_list): copy_files = [] for i, img_src in enumerate(img_list): - img_filename = self.output_seq_filename %i - img_dst = os.path.join(self.staging_dir, img_filename) + img_filename = self.output_seq_filename % i + img_dst = os.path.join(staging_dir, img_filename) self.log.debug( "Copying file .. {} -> {}".format(img_src, img_dst) @@ -144,21 +147,22 @@ class ExtractReview(openpype.api.Extractor): return layers - def _saves_flattened_layers(self, layers): - img_filename = self.output_seq_filename %0 - output_image_path = os.path.join(self.staging_dir, img_filename) + def _saves_flattened_layers(self, staging_dir, layers): + img_filename = self.output_seq_filename % 0 + output_image_path = os.path.join(staging_dir, img_filename) + stub = photoshop.stub() with photoshop.maintained_visibility(): if layers: # Hide all other layers. - extract_ids = set([ll.id for ll in self.stub. + extract_ids = set([ll.id for ll in stub. get_layers_in_layers(layers)]) self.log.debug("extract_ids {}".format(extract_ids)) - for layer in self.stub.get_layers(): + for layer in stub.get_layers(): # limit unnecessary calls to client if layer.visible and layer.id not in extract_ids: - self.stub.set_visible(layer.id, False) + stub.set_visible(layer.id, False) - self.stub.saveAs(output_image_path, 'jpg', True) + stub.saveAs(output_image_path, 'jpg', True) return img_filename