Implement custom separators via argparse
This commit is contained in:
		| @@ -1,18 +1,24 @@ | ||||
| #!/usr/bin/env python3 | ||||
| from sys import argv | ||||
| from unidecode import unidecode | ||||
| from os import rename | ||||
| from os.path import basename, dirname | ||||
| from os.path import join as joinpath | ||||
| from argparse import ArgumentParser | ||||
|  | ||||
| parser = ArgumentParser(description='Eliminate funky stuff from filenames.') | ||||
| parser.add_argument('--separator', '-s', type=str, nargs='?', default='_', | ||||
|                     help='Set separator to use (to replace spaces with).') | ||||
| parser.add_argument('files', type=str, nargs='+', | ||||
|                     help='File(s) to normalise the name of (relative or absolute path).') | ||||
|  | ||||
| args = parser.parse_args() | ||||
|  | ||||
|  | ||||
| # whitespaces will be replaced | ||||
| # dots are ok | ||||
| # do not ruin previous work | ||||
| # dashes are ok | ||||
| whitelist = (' ', '.', '_', '-') | ||||
| # special characters that will not be removed | ||||
| whitelist = {' ', '.', '-'} | ||||
| whitelist.add(args.separator) | ||||
|  | ||||
| for path in argv[1:]: | ||||
| for path in args.files: | ||||
|     dir = dirname(path) | ||||
|     file = basename(path) | ||||
|     rename(path, | ||||
| @@ -21,7 +27,7 @@ for path in argv[1:]: | ||||
|                joinpath | ||||
|                ( | ||||
|                    dir, | ||||
|                    ''.join(ch for ch in file.replace(' ', '_') | ||||
|                    ''.join(ch for ch in file.replace(' ', args.separator) | ||||
|                            if ch.isalnum() | ||||
|                            or ch in whitelist) | ||||
|                ) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user