Mercurial > hg > dml-open-backendtools
diff ipcluster/tools/zip_features_folderwise.py @ 0:e34cf1b6fe09 tip
commit
author | Daniel Wolff |
---|---|
date | Sat, 20 Feb 2016 18:14:24 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ipcluster/tools/zip_features_folderwise.py Sat Feb 20 18:14:24 2016 +0100 @@ -0,0 +1,113 @@ +#!/usr/local/python +# -*- coding: utf-8 -*- +__author__="wolffd" +import os +import sys +import time +import shutil +import hashlib +import re +import errno +import subprocess + + +# this copies features which used to be stored with the audio +# usage: copy_features source_path dest_path transform_substr ext move? +# params: +# transfrom_substr can be either a substring or hash of the transform file +# or the filename.n3 of a transform file + + +def main(audiopath, out_path, transform_substr = "", move = 0): + + + + # replace transform_substr by pluginhash + if transform_substr.endswith (".n3"): + BLOCKSIZE = 65536 + hasher = hashlib.sha1() + with open(transform_substr, 'rb') as afile: + buf = afile.read(BLOCKSIZE) + while len(buf) > 0: + hasher.update(buf) + buf = afile.read(BLOCKSIZE) + transform_substr = str(hasher.hexdigest()) + + # --- + # we traverse the file structure + # and list files to copy + # --- + data = [] + count = 0 + count2 = 0 + for (dirpath, dirnames, filenames) in os.walk(audiopath): + for dir in dirnames: + print '\rChecked %d, gathered %d files' % (count, count2), + count += 1 + + # we copy all requested files and the transform files as well! + if (transform_substr and (transform_substr in dir)): + source = os.path.join(dirpath, dir).replace('\\','/') + data.append(source) + count2 +=1 +# if count2 > 1: +# break + + # count jobs + njobs = len(data) + print '\r\nAbout to copy %d directories' % (njobs) + + + count = 0 + # copy individual items + for x in data: + spath = os.path.split(x) + folders = spath[0].split('/') + + collectionname = folders[-1] + + # create the target folder + #try: + # os.makedirs(out_path) + #except OSError as exception: + # if exception.errno!= errno.EEXIST: + # raise + + command = '7z -r -mmt=30 -mx5 -v50g -mm=bzip2 a ' + '"' + os.path.join(out_path,collectionname + '_'+ transform_substr + '.zip') + '"' + ' ' + x + print command + print " Currently zipping " + collectionname + + p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True) + text = p.stdout.read() + retcode = p.wait() + if not (retcode==0): + print "Error: " + text + + #os.system(command) + #print 'Removing ' + dest + #shutil.rmtree(dest) + + count = count + 1 + + # progress indicator + print '\r%3.2f percent. %d done, %d pending' % (count/(njobs*1.0) * 100.0,count, njobs-count), + + print '\rCopied %d of %d files.' % (count,njobs) + print '\n' + +def copytree(src, dst, symlinks=False, ignore=None): + for item in os.listdir(src): + s = os.path.join(src, item) + d = os.path.join(dst, item) + if os.path.isdir(s): + shutil.copytree(s, d, symlinks, ignore) + else: + os.makedirs(d) + shutil.copy2(s, d) + +if __name__ == "__main__": + if len(sys.argv) >= 5: + main(sys.argv[1],sys.argv[2], sys.argv[3], int(sys.argv[4])) + else: + main(audiopath = 'D:/_Audio/',out_path = 'D:/_Audio_Analysis/', transform_substr = "", ext = "") +