# conversion utlity front-end to sndfile-convert by castro lopo # no mp3... # with extra strings features (retrieve space, all small letters...) import os import sys import Tkinter import tkFileDialog from normalize_filename import * def get_rep(initrepload=None): rep = tkFileDialog.askdirectory(title="Choose the repertory to parse: ", initialdir=initrepload, mustexist="true") if rep == None or rep == "": rep = None return rep def rec_rep(reppath, extsin, extout, erase): # get all folders and files in the repertory path given try: files_or_reps = os.listdir(reppath) except: return 0 # sort by names files_or_reps.sort() # ----------------- loop on all matching files for file_or_rep in files_or_reps: file_or_rep_path = reppath + file_or_rep # =================================== TEST ON FILE ASPECT # it is a FILE !!! if os.path.isfile(file_or_rep_path): file = file_or_rep filepath = file_or_rep_path # NORMALIZE FILE filenamenormed = my_normal(file) # =================================== get its EXTENSION # let''s have a look to its extensions fileexts = filenamenormed.split('.') # get filename for sure without extension filenameout = fileexts[0] # get the first extension fileext = fileexts[1].lower() # =================================== CONDITIONAL CONVERSION # we are not in Spain... if fileext in extsin: filepathin = filepath filepathout = reppath + filenameout + '.' + extout # build the output file print 'sndfile-convert %s %s ' % (filepathin, filepathout) os.system('sndfile-convert "%s" "%s" '% (filepathin, filepathout)) # ----------------- ERASE ?? # bye bye sucker if erase: os.remove(filepathin) # =================================== THE EXCITING RECURSION PART # get all folders and files in the repertory path given try: files_or_reps = os.listdir(reppath) except: return 0 # ----------------- recurse directories for file_or_rep in files_or_reps: file_or_path = reppath + file_or_rep if not os.path.isfile(file_or_path): nextpath = reppath + file_or_rep + '/' rec_rep(nextpath, extsin, extout, erase) if __name__ == '__main__': extsin = ['aif', 'aifc', 'aiff'] extout = 'wav' # ERASE SOUND IN ? erase = 1 if len(sys.argv)>1: rootrep = sys.argv[1] else: initrepload = '/Volumes/data/' rootrep = get_rep(initrepload) if rootrep is not None: rec_rep(rootrep, extsin, extout, erase)