From 53ac2e50984f98423d265250be33db5513a3644a Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 10 Nov 2020 14:21:15 +0100 Subject: [PATCH 1/7] do not put ffmpeg path to quotes for `is_tool` check --- pype/plugins/global/publish/validate_ffmpeg_installed.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pype/plugins/global/publish/validate_ffmpeg_installed.py b/pype/plugins/global/publish/validate_ffmpeg_installed.py index 2e49650040..2951759fa4 100644 --- a/pype/plugins/global/publish/validate_ffmpeg_installed.py +++ b/pype/plugins/global/publish/validate_ffmpeg_installed.py @@ -29,6 +29,6 @@ class ValidateFFmpegInstalled(pyblish.api.ContextPlugin): def process(self, context): ffmpeg_path = pype.lib.get_ffmpeg_tool_path("ffmpeg") self.log.info("ffmpeg path: `{}`".format(ffmpeg_path)) - if self.is_tool("\"{}\"".format(ffmpeg_path)) is False: + if self.is_tool("{}".format(ffmpeg_path)) is False: self.log.error("ffmpeg not found in PATH") raise RuntimeError('ffmpeg not installed.') From 965f633e33fb33f7c75052abe103707ebbf14886 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 10 Nov 2020 14:54:35 +0100 Subject: [PATCH 2/7] extract burnin pass fill data to burnin script with help of temporary json file --- pype/plugins/global/publish/extract_burnin.py | 25 ++++++++++++++++--- pype/scripts/otio_burnin.py | 5 +++- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/pype/plugins/global/publish/extract_burnin.py b/pype/plugins/global/publish/extract_burnin.py index 81d96a09da..856238d00f 100644 --- a/pype/plugins/global/publish/extract_burnin.py +++ b/pype/plugins/global/publish/extract_burnin.py @@ -2,6 +2,7 @@ import os import re import json import copy +import tempfile import pype.api import pyblish @@ -222,12 +223,30 @@ class ExtractBurnin(pype.api.Extractor): # Dump data to string dumped_script_data = json.dumps(script_data) + # Store dumped json to temporary file + temporary_json_file = tempfile.NamedTemporaryFile( + mode="w", suffix=".json", delete=False + ) + temporary_json_file.write(dumped_script_data) + temporary_json_file.close() + temporary_json_filepath = temporary_json_file.name.replace( + "\\", "/" + ) + # Prepare subprocess arguments - args = [executable, scriptpath, dumped_script_data] - self.log.debug("Executing: {}".format(args)) + args = [ + "\"{}\"".format(executable), + "\"{}\"".format(scriptpath), + "\"{}\"".format(temporary_json_filepath) + ] + subprcs_cmd = " ".join(args) + self.log.debug("Executing: {}".format(subprcs_cmd)) # Run burnin script - pype.api.subprocess(args, shell=True, logger=self.log) + pype.api.subprocess(subprcs_cmd, shell=True, logger=self.log) + + # Remove the temporary json + os.remove(temporary_json_filepath) for filepath in temp_data["full_input_paths"]: filepath = filepath.replace("\\", "/") diff --git a/pype/scripts/otio_burnin.py b/pype/scripts/otio_burnin.py index ef09661f6e..a2a4147821 100644 --- a/pype/scripts/otio_burnin.py +++ b/pype/scripts/otio_burnin.py @@ -578,7 +578,10 @@ def burnins_from_data( if __name__ == "__main__": print("* Burnin script started") - in_data = json.loads(sys.argv[-1]) + in_data_json_path = sys.argv[-1] + with open(in_data_json_path, "r") as file_stream: + in_data = json.load(file_stream) + burnins_from_data( in_data["input"], in_data["output"], From d7e468c986d267f0c0c65e5d6c90ec090be5979d Mon Sep 17 00:00:00 2001 From: Milan Date: Tue, 10 Nov 2020 16:33:45 +0000 Subject: [PATCH 3/7] ffmpeg path is incorrect also in photoshop --- pype/plugins/photoshop/publish/extract_review.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pype/plugins/photoshop/publish/extract_review.py b/pype/plugins/photoshop/publish/extract_review.py index 4f2c3c3d23..2753cbf366 100644 --- a/pype/plugins/photoshop/publish/extract_review.py +++ b/pype/plugins/photoshop/publish/extract_review.py @@ -54,7 +54,7 @@ class ExtractReview(pype.api.Extractor): # Generate thumbnail. thumbnail_path = os.path.join(staging_dir, "thumbnail.jpg") args = [ - "\"{}\"".format(ffmpeg_path), "-y", + "{}".format(ffmpeg_path), "-y", "-i", output_image_path, "-vf", "scale=300:-1", "-vframes", "1", From c018299d3206bf085119416430df41caf88dd0f2 Mon Sep 17 00:00:00 2001 From: Milan Date: Tue, 10 Nov 2020 16:57:02 +0000 Subject: [PATCH 4/7] thumbnail path was collected wrong if jpeg was input --- pype/plugins/standalonepublisher/publish/extract_thumbnail.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pype/plugins/standalonepublisher/publish/extract_thumbnail.py b/pype/plugins/standalonepublisher/publish/extract_thumbnail.py index cabb8be61e..2a3ca27252 100644 --- a/pype/plugins/standalonepublisher/publish/extract_thumbnail.py +++ b/pype/plugins/standalonepublisher/publish/extract_thumbnail.py @@ -56,7 +56,9 @@ class ExtractThumbnailSP(pyblish.api.InstancePlugin): elif is_jpeg: # use first frame as thumbnail if is sequence of jpegs - full_thumbnail_path = file + full_thumbnail_path = os.path.join( + thumbnail_repre["stagingDir"], file + ) self.log.info( "For thumbnail is used file: {}".format(full_thumbnail_path) ) From 0e3e3ce71cc4907ffa872d64ef1199ea85f650b6 Mon Sep 17 00:00:00 2001 From: Milan Date: Tue, 10 Nov 2020 16:57:16 +0000 Subject: [PATCH 5/7] collect FPS for review in SP --- .../standalonepublisher/publish/collect_instance_data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pype/plugins/standalonepublisher/publish/collect_instance_data.py b/pype/plugins/standalonepublisher/publish/collect_instance_data.py index 1b32ea9144..bc4eeb89d1 100644 --- a/pype/plugins/standalonepublisher/publish/collect_instance_data.py +++ b/pype/plugins/standalonepublisher/publish/collect_instance_data.py @@ -18,7 +18,7 @@ class CollectInstanceData(pyblish.api.InstancePlugin): label = "Collect instance data" order = pyblish.api.CollectorOrder + 0.49 - families = ["render", "plate"] + families = ["render", "plate", "review"] hosts = ["standalonepublisher"] def process(self, instance): From 6750488c89294efbb4dd8e9f09d5143f0f79f91e Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 11 Nov 2020 13:29:51 +0100 Subject: [PATCH 6/7] do not place expression out of text quotes nad do not espace symbols inside expression as it's done automatically --- pype/scripts/otio_burnin.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pype/scripts/otio_burnin.py b/pype/scripts/otio_burnin.py index a2a4147821..08a71872fc 100644 --- a/pype/scripts/otio_burnin.py +++ b/pype/scripts/otio_burnin.py @@ -213,9 +213,7 @@ class ModifiedBurnins(ffmpeg_burnins.Burnins): if frame_start is None: replacement_final = replacement_size = str(MISSING_KEY_VALUE) else: - replacement_final = "\\'{}\\'".format( - r'%%{eif\:n+%d\:d}' % frame_start - ) + replacement_final = "%{eif:n+" + str(frame_start) + ":d}" replacement_size = str(frame_end) final_text = final_text.replace( From 7f07d4eb0ca02b3a4fe57efca7ad4c96f26e61aa Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 11 Nov 2020 13:31:04 +0100 Subject: [PATCH 7/7] print nicer ffmpeg output --- pype/scripts/otio_burnin.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pype/scripts/otio_burnin.py b/pype/scripts/otio_burnin.py index 08a71872fc..8da1dd8616 100644 --- a/pype/scripts/otio_burnin.py +++ b/pype/scripts/otio_burnin.py @@ -326,11 +326,13 @@ class ModifiedBurnins(ffmpeg_burnins.Burnins): _stdout, _stderr = proc.communicate() if _stdout: - print(_stdout.decode("utf-8")) + for line in _stdout.split(b"\r\n"): + print(line.decode("utf-8")) # This will probably never happen as ffmpeg use stdout if _stderr: - print(_stderr.decode("utf-8")) + for line in _stderr.split(b"\r\n"): + print(line.decode("utf-8")) if proc.returncode != 0: raise RuntimeError(