mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 12:54:40 +01:00
Adds audio instance attribute collection
Adds a collector to identify audio instances and link them to sibling instances. This ensures that sibling instances, requiring audio for reviewable media, inherit audio attributes. The collector checks and links audio if: - The sibling instance shares the same parent ID. - The instance is not the audio instance itself.
This commit is contained in:
parent
311fab2ab1
commit
d2fdae67e7
1 changed files with 50 additions and 0 deletions
|
|
@ -8,6 +8,56 @@ from ayon_core.lib import (
|
|||
run_subprocess
|
||||
)
|
||||
|
||||
# pridat collector
|
||||
|
||||
class CollectParentAudioInstanceAttribute(pyblish.api.ContextPlugin):
|
||||
"""Collect audio instance attribute"""
|
||||
|
||||
order = pyblish.api.CollectorOrder
|
||||
label = "Collect Audio Instance Attribute"
|
||||
hosts = ["hiero", "resolve", "flame"]
|
||||
|
||||
def process(self, context):
|
||||
|
||||
audio_instances = self.get_audio_instances(context)
|
||||
|
||||
for inst in audio_instances:
|
||||
# Make sure if the audio instance is having siblink instances
|
||||
# which needs audio for reviewable media so it is also added
|
||||
# to its instance data
|
||||
# Retrieve instance data from parent instance shot instance.
|
||||
parent_instance_id = inst.data["parent_instance_id"]
|
||||
for sibl_instance in inst.context:
|
||||
sibl_parent_instance_id = sibl_instance.data.get(
|
||||
"parent_instance_id")
|
||||
# make sure the instance is not the same instance
|
||||
if sibl_instance.id == inst.id:
|
||||
continue
|
||||
# and the parent instance id is the same
|
||||
if sibl_parent_instance_id == parent_instance_id:
|
||||
self.log.info(
|
||||
"Adding audio to Sibling instance: "
|
||||
f"{sibl_instance.data['label']}"
|
||||
)
|
||||
sibl_instance.data["audio"] = None
|
||||
|
||||
def get_audio_instances(self, context):
|
||||
"""Return only instances which are having audio in families
|
||||
|
||||
Args:
|
||||
context (pyblish.context): context of publisher
|
||||
|
||||
Returns:
|
||||
list: list of selected instances
|
||||
"""
|
||||
return [
|
||||
_i for _i in context
|
||||
# filter only those with audio product type or family
|
||||
# and also with reviewAudio data key
|
||||
if bool("audio" in (
|
||||
_i.data.get("families", []) + [_i.data["productType"]])
|
||||
) or _i.data.get("reviewAudio")
|
||||
]
|
||||
|
||||
class ExtractOtioAudioTracks(pyblish.api.ContextPlugin):
|
||||
"""Extract Audio tracks from OTIO timeline.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue