Did this before, this basic snippet maybe useful here. Can be tweaked to work with different clip types such as animation and video.
from __future__ import print_function
from pyfbsdk import FBSystem, FBApplication, FBStory, FBPropertyManager, FBStoryTrackType
def _iterateFolderTracks( folder, callback ):
for track in folder.Tracks:
callback( track )
_iterateSubtracks( track, callback )
for child in folder.Childs:
_iterateFolderTracks( child, callback )
def _iterateSubtracks( track, callback ):
for subTrack in track.SubTracks:
callback( subTrack )
_iterateSubtracks( subTrack, callback )
def myCallback( track ):
# Track found
if track.Type.numerator == FBStoryTrackType.kFBStoryTrackAudio.numerator:
# This is an audio track
print( "Audio track:", track.Name )
for clip in track.Clips:
print( "Clip:", clip.Name )
property = clip.PropertyList.Find( "ClipAudioPath" )
if property:
oldMediaPath = str( property.Data )
print( " Media path:", oldMediaPath )
# Replace the path:
# property.Data = newMediaPath
def main():
story = FBStory()
for folder in ( story.RootFolder, story.RootEditFolder ):
# Find all tracks in story folder, call myCallback for every single find
_iterateFolderTracks( folder, myCallback )