def convert_multimedia(filename): in_ext = os.path.splitext(filename)[1].lstrip('.') out_ext = config.get(in_ext, 'out_ext') # prepare name and size of the input file names = prepare_names(filename, out_ext) in_size = os.path.getsize(names.in_filename) / 1024 / 1024 # MB # command command = Command(config.get(in_ext, 'command')) stdout = config.getboolean(in_ext, 'stdout') # prepare tmp file with NamedTemporaryFile(delete=False) as f: tmp_filename = f.name # arguments args = parse_cmd_args( config.get(in_ext, 'params'), in_filename=names.in_filename, out_filename=tmp_filename ) kwargs = {} if stdout: kwargs['_out'] = tmp_filename # convert start = time() command(*args, **kwargs) t = time() - start # calculate statistics, etc. out_size = os.path.getsize(names.out_filename) / 1024 / 1024 # MB compression = 100 - (100 * out_size / in_size) # trash the original file, move result if in_ext == out_ext and in_size <= out_size: # converting within the same format and the conversion had no # possitive effect => we can keep the original os.unlink(tmp_filename) else: to_trash(names.in_filename) shutil.move(tmp_filename, names.out_filename) # print summary line = u'{0}: {1:.1f}MB → {2} {3:.1f}MB, {4:.1f}min, {5:.1f}%'.format( names.in_basename, in_size, names.out_basename, out_size, t / 60, compression ) print line if t > 60: # longer than one minute notify("Conversion is complete", line)
def auto(directory): print "Removing rubbish..." rubbish_names = re.split(r'[,\s]+', config.get('general', 'rubbish')) for filename in list_files(directory): basename = os.path.basename(filename) if basename in rubbish_names: print u'RUBBISH: {0}'.format(basename) to_trash(filename) print "Fixing filenames..." names_fix(directory) print "Sorting filenames..." names_sort(directory) print "Fixing captions..." captions_fix(directory) convert(directory)