# Sequence Builder # # This program extracts jpeg images from video files. # The files are moved to a new directory and renamed. # A variable frame preable can be dropped to remove # images in advance of the first reference frame # # (c) 2009 Scott & Linda Wills import subprocess, shutil from os import listdir, rename, mkdir, remove SeqInfo = {"20090815-04a": 6, "20090825-10a": 6, "20090902-03a": 0, "20090902-04b": 13, "20090902-04e": 2, "20091025-09d": 11, "20091025-03a": 6, "20091025-07a": 13, "20091025-09b": 7} def BuildAll() : Content = listdir('.') for FileName in Content : if '.' in FileName : Name, Ext = FileName.split('.') if Name in SeqInfo and Ext in ('mov', 'MOV') and Name not in Content : print "Building sequence %s ... " % (Name) Build(Name, Preamble= SeqInfo[Name]) def Build(Seq, Preamble=0, Ext='mov') : """ This routine opens a log file, compiles each source file, and then executes each test sequence. """ SeqName = Seq + '.' + Ext if SeqName not in listdir('.') : print "%s not found" % (SeqName) else : if Seq not in listdir('.') : mkdir(Seq) Log = open(Seq + ".log", 'w') # Cmd = "mplayer -frames %d -vo jpeg %s" % (Frames, SeqName) Cmd = "mplayer -vo jpeg %s" % (SeqName) P = subprocess.Popen(Cmd, shell=True, stdout=Log, stderr=Log) P.wait() Log.close() for FileName in listdir('.') : if '.' in FileName : Name, Ext = FileName.split('.') if Ext == 'jpg' and Name.isdigit() : if int(Name) <= Preamble : remove(FileName) else : rename(FileName, Seq + '/' + FileName) Renum(Seq + '/') def Renum(Seq) : """ This routine renames all numbered jpeg files in a five digit format. """ Names = [] Dir = Seq + '/' for FileName in listdir(Dir) : Name, Ext = FileName.split('.') if Ext == 'jpg' and Name.isdigit() : Names.append(Name) Names.sort() Num = 1 for Name in Names : NewName = '%05d.jpg' % (Num) # print "Renaming %s.jpg to %s" % (Name, NewName) rename(Dir + Name + '.jpg', Dir + NewName) Num += 1 if __name__ == '__main__' : BuildAll()