Source code for cgl.plugins.otio.tools.aaf.aaf_extract_publish_shots
import opentimelineio as otio
from cgl.core.path.object import PathObject
from cgl.plugins.otio.tools.aaf import aaf_media_linker
from cgl.plugins.otio.tools.aaf.aaf_extract_shots import flatten_item
from cgl.plugins.otio.tools.aaf import otio_duration_fix
[docs]
def is_shot(item):
if get_path_object_from_metadata(item):
return True
return False
[docs]
def simplify_timeline(aaf_path):
aaf_media_linker.register_media_linker()
otio_duration_fix.otio_file_fixups(aaf_path)
timeline = otio.adapters.read_from_file(aaf_path, media_linker_name="aaf_media_linker")
new_timeline = otio.schema.Timeline()
new_timeline.global_start_time = timeline.global_start_time
for track in timeline.video_tracks():
new_track = otio.schema.Track(kind=track.kind)
new_timeline.tracks.append(new_track)
for item in track:
flat = None
if isinstance(item, (otio.schema.Transition, otio.schema.Gap, otio.schema.Clip)):
flat = [item]
else:
flat = flatten_item(item)
if flat.source_range:
flat = otio.algorithms.track_trimmed_to_range(flat, flat.source_range)
for thing in flat:
if isinstance(thing, (otio.schema.Transition, otio.schema.Gap)):
new_track.append(thing.deepcopy())
continue
po = get_path_object_from_metadata(thing)
if po:
new_item = thing.deepcopy()
new_track.append(new_item)
else:
gap = otio.schema.Gap(name=thing.name,
source_range=thing.source_range,
metadata=thing.metadata)
new_track.append(gap)
return new_timeline
[docs]
def convert_timeline(aaf_path, otio_path):
aaf_media_linker.register_media_linker()
timeline = otio.adapters.read_from_file(aaf_path, media_linker_name="aaf_media_linker")
otio.adapters.write_to_file(timeline, otio_path)
if __name__ == "__main__":
# src = sys.argv[1]
# dst = sys.argv[2]
# convert_timeline(src, dst)
src = "Z:/prod/premise/render/ASJ/shots/280/0000/amc/default/publish/003.000/high/280_For_Testing_turnover_asj.aaf"
src = "Z:/prod/premise/render/AlchemyTestB/shots/280/0000/amc/default/publish/004.000/high/280_For_Testing_turnover.aaf"
otio_path = "Z:/EDITORIAL/simple.otio"
timeline = simplify_timeline(src)
otio.adapters.write_to_file(timeline, otio_path)