diff --git a/bin/utils.py b/bin/utils.py index 9b19b26a15d9..1aa3a49e6e3d 100644 --- a/bin/utils.py +++ b/bin/utils.py @@ -1,5 +1,7 @@ -import os.path import pprint +import os.path +import string +import unicodedata def dumper(data): print pprint.pformat(data) @@ -18,23 +20,26 @@ def id2path(id): return os.path.join(*parts) -def clean_meta_name(name): - - # sudo make me better +def clean_meta_name(name, allow_punctuation=[]): name = name.strip() - name = name.replace(" ", "-") - name = name.replace("?", "") - name = name.replace("&", "") - name = name.replace(":", "") - name = name.replace("/", "-") - name = name.replace(",", "-") - name = name.replace("'", "-") - name = name.replace("(", "-") - name = name.replace(")", "") - name = name.replace("`", "") - name = name.replace("--", "-") - name = name.replace("..", ".") name = name.lower() + + name = remove_accents(name) + + for c in string.punctuation: + if c in allow_punctuation: + continue + + name = name.replace(c, "") + + name = name.replace(" ", "-") + name = name.replace("--", "-") + return name + +def remove_accents(input_str): + nkfd_form = unicodedata.normalize('NFKD', unicode(input_str)) + only_ascii = nkfd_form.encode('ASCII', 'ignore') + return only_ascii