initial commit
This commit is contained in:
Executable
+40
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/python3
|
||||
"""
|
||||
This is a very-very simple filename sanitizer program written in python
|
||||
"""
|
||||
|
||||
import sys # argv
|
||||
import os # rename
|
||||
import unicodedata as unid # normalize
|
||||
sys.tracebacklimit = 0
|
||||
|
||||
def test_special_char(my_char):
|
||||
"""
|
||||
Test if a character is special in terms of filename
|
||||
"""
|
||||
char_num = ord(my_char)
|
||||
if char_num > 127: # case ß
|
||||
return False
|
||||
|
||||
return (
|
||||
my_char.isalnum() or
|
||||
char_num == 95 or
|
||||
char_num == 47 or
|
||||
char_num == 46 or
|
||||
char_num == 45
|
||||
) and (char_num < 127)
|
||||
|
||||
|
||||
def sanitize(filename):
|
||||
"""
|
||||
A simple filename sanitizer
|
||||
"""
|
||||
spaceless_unicode = ["_" if i == " " else i for i in filename]
|
||||
spaceless_unicode = unid.normalize("NFKD", "".join(spaceless_unicode))
|
||||
ret = [i if test_special_char(i) else "" for i in spaceless_unicode]
|
||||
return "".join(ret)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
for row in sys.stdin:
|
||||
print(sanitize(row))
|
||||
Reference in New Issue
Block a user