#!/usr/bin/python import os def scanForFiles(_dir) : # grab all the files in the directory files = os.listdir(_dir) # create an empty dictionary for the results result = {} # this will hold our sorted list to be returned sortedList = [] # these are the valid file extensions as a tuple as ends with needs it validFiles=("tiff","tif","exr","jpg","jpeg") # process each of the files found and see if it's in the format # name.#####.ext for file in files: # so first we try and split on the . and see if we have a valid suffix try: prefix, frame, suffix = file.split('.') if suffix in validFiles : try: # if we do we add it to the dictionary (using the frame value) result[prefix][0].append(frame) except KeyError: # we have a new file sequence, so create a new key:value pair result[prefix] = [[frame],suffix] except ValueError: print "ignoring file in directory %s" %(file) # now we have a list of data I want to return in the form that nuke needs # in this case we need name.%xd.ext so we grab the data and format the string for file in result : # get the filename fileName=file # get the extention extention=result[file][1] # grab the numeric start and end values minFrameValue=int(min(result[file][0])) maxFrameValue=int(max(result[file][0])) # this is a bit of a hack as the values could be different # but we basically form the frame pad values framePadSize=len(result[file][0][0]) padString="%%0%dd" %(framePadSize) fileNameString="%s.%s.%s" %(fileName,padString,extention) # add the data to the list sortedList.append([fileNameString,minFrameValue,maxFrameValue]) # sort it and return sortedList.sort() return sortedList path = nuke.getFilename("Select Directory") files=scanForFiles(path) print files for fileData in files : fileName=fileData[0].split(".") fileName=fileName[0] try : fileNode = nuke.nodes.Read(file="%s/%s" %(path,fileData[0]),name=fileName) fileNode.knob("first").setValue(fileData[1]) fileNode.knob("last").setValue(fileData[2]) fileNode.knob("on_error").setValue(3) Shuffle = nuke.nodes.Shuffle(inputs=[fileNode],name=fileName) except : print "error on ",fileName
Wednesday, 18 May 2011
A Simple Nuke file loader
Subscribe to:
Posts (Atom)