From 55d447f1d6326778a47eaf8d32ad3eac5d27bc5e Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 20 Jan 2021 18:26:52 +0100 Subject: [PATCH] Harmon to Deadline - added audio file collect --- pype/plugins/harmony/publish/collect_audio.py | 36 +++++++++++++++++++ .../publish/submit_harmony_deadline..py | 5 +++ 2 files changed, 41 insertions(+) create mode 100644 pype/plugins/harmony/publish/collect_audio.py diff --git a/pype/plugins/harmony/publish/collect_audio.py b/pype/plugins/harmony/publish/collect_audio.py new file mode 100644 index 0000000000..8ef9632ea6 --- /dev/null +++ b/pype/plugins/harmony/publish/collect_audio.py @@ -0,0 +1,36 @@ +import os +import pyblish.api + +import pyblish.api +from avalon import harmony + + +class CollectAudio(pyblish.api.InstancePlugin): + """ + Collect relative path for audio file to instance. + + Harmony api `getSoundtrackAll` returns useless path to temp folder, + for render on farm we look into 'audio' folder and select first file. + + Correct path needs to be calculated in `submit_harmony_deadline.py` + """ + + order = pyblish.api.CollectorOrder + 0.499 + label = "Collect Audio" + hosts = ["harmony"] + families = ["renderlayer"] + + def process(self, instance): + audio_dir = os.path.join( + os.path.dirname(instance.context.data.get("currentFile")), 'audio') + if os.path.isdir(audio_dir): + for full_file_name in os.listdir(audio_dir): + file_name, file_ext = os.path.splitext(full_file_name) + + if file_ext not in ['.wav', '.mp3', '.aiff']: + self.log.error("Unsupported file {}.{}".format(file_name, + file_ext)) + + audio_file_path = os.path.join('audio', full_file_name) + self.log.error("audio_file_path {}".format(audio_file_path)) + instance.data["audioFile"] = audio_file_path diff --git a/pype/plugins/harmony/publish/submit_harmony_deadline..py b/pype/plugins/harmony/publish/submit_harmony_deadline..py index dfb2702a8b..e40ff02d08 100644 --- a/pype/plugins/harmony/publish/submit_harmony_deadline..py +++ b/pype/plugins/harmony/publish/submit_harmony_deadline..py @@ -370,6 +370,11 @@ class HarmonySubmitDeadline( _file.replace(work_path_str, render_path_str) ) + audio_file = self._instance.data.get("audioFile") + if audio_file: + abs_path = xstage_path.parent / audio_file + self._instance.context.data["audioFile"] = str(abs_path) + self._instance.data["source"] = str(published_scene.as_posix()) self._instance.data["expectedFiles"] = new_expected_files harmony_plugin_info = PluginInfo(