ZapFinder | Python

ThiccDaddyLOAF

January 23rd, 2021 02:18:15 AM

					
import subprocess #for the praat calls import os #for ffmpeg and the pause call at the end #Even if we wanted all videos being rendered asynchronously, we couldn't see progress or errors import glob #for the ambiguous files import tempfile audioFileDirectory = 'Audio Files' timeList = {} fileList = glob.glob(audioFileDirectory + '\\*.wav') pipeList = {} for fileName in fileList: arglist = ['Praat.exe', '--run', 'crosscorrelateMatch.praat', 'zeussound.wav', fileName, "0" , "300"] print(' '.join(arglist)) pipe = subprocess.Popen(arglist, stdout=subprocess.PIPE) pipeList[fileName[len(audioFileDirectory)+1:-4]] = pipe #+1 because of back slash, -4 because .wav #for fileName, pipe in pipeList.items(): # text = pipe.communicate()[0].decode('utf-8') # timeList[fileName] = float(text[::2]) for fileName, pipe in pipeList.items(): if float(pipe.communicate()[0].decode('utf-8')[::2]) > .0003: #.000166 is not a match, and .00073 is a perfect match. .00053 is a tested match arglist = ['Praat.exe', '--run', 'crosscorrelate.praat', 'zeussound.wav', audioFileDirectory + '\\' + fileName + '.wav', "0" , "300"] print(' '.join(arglist)) text = subprocess.Popen(arglist, stdout=subprocess.PIPE).communicate()[0].decode('utf-8') timeList[fileName] = float(text[::2]) clipLength = 10 for fileName, time in timeList.items(): arglist = ['ffmpeg', '-i', '"'+fileName+'.mp4"', '-ss', str(time-clipLength), '-t', str(clipLength*2), '-acodec', 'copy' , '-vcodec', 'copy', '"ZEUS'+ fileName + '.mp4"'] print(' '.join(arglist)) os.system(' '.join(arglist)) tempFile = tempfile.NamedTemporaryFile(delete=False) for fileName in glob.glob('ZEUS*.mp4'): tempFile.write(("file '" + os.path.realpath(fileName) + "'\n").encode()); tempFile.seek(0) print(tempFile.read()) tempFile.close() arglist = ['ffmpeg', '-safe', '0', '-f', 'concat', '-i', '"'+tempFile.name+'"', '-c', 'copy', 'ZeusMontage.mp4'] print(' '.join(arglist)) os.system(' '.join(arglist)) os.unlink(tempFile.name) #Delete the temp file #print(timeList) os.system('PAUSE')

Featured Posts