fuzzman54
October 4th, 2011, 07:55 AM
I'm working on porting a xbmc plugin to the xbmc4xbox, and because the xbox uses fatx, it has some crippling limitations on what characters are allowed for filenames and directories. Basically what I want to do is change this code:
def CleanFileName(s, remove_year, use_encoding = False, use_blanks = True):
if remove_year:
s = s[0:len(s)-7]
s = s.replace(' (Eng subs)', '')
s = s.replace(' (eng subs)', '')
s = s.replace(' (English subs)', '')
s = s.replace(' (english subs)', '')
s = s.replace(' (Eng Subs)', '')
s = s.replace(' (English Subs)', '')
s = s.replace('&', '&')
s = s.replace(''', '\'')
s = s.replace('Æ', 'AE')
s = s.replace('Ç', 'C')
s = s.replace('ô', 'o')
s = s.replace('é', 'e')
s = s.replace('ë', 'e')
s = s.replace('í', 'i')
s = s.replace('î', 'i')
s = s.replace('¢', 'c')
s = s.replace('â', 'a')
s = s.replace('ï', 'i')
s = s.replace('á', 'a')
s = s.replace('è', 'e')
s = s.replace('%2E', '.')
if use_encoding:
s = s.replace('"', '%22')
s = s.replace('*', '%2A')
s = s.replace('/', '%2F')
s = s.replace(':', '%3A')
s = s.replace('<', '%3C')
s = s.replace('>', '%3E')
s = s.replace('?', '%3F')
s = s.replace('\\', '%5C')
s = s.replace('|', '%7C')
s = s.replace('½', '%BD')
s = s.replace('½', '%BD') #half character
s = s.replace('³', '%B3')
s = s.replace('°', '%B0') #degree character
if use_blanks:
s = s.replace('"', ' ')
s = s.replace('*', ' ')
s = s.replace('/', ' ')
s = s.replace(':', ' ')
s = s.replace('<', ' ')
s = s.replace('>', ' ')
s = s.replace('?', ' ')
s = s.replace('\\', ' ')
s = s.replace('|', ' ')
s = s.replace('½', ' ')
s = s.replace('½', ' ') #half character
s = s.replace('³', ' ')
s = s.replace('°', ' ') #degree character
s = s.strip()
return s
To instead of replacing the dirty names, only allowing it to use these characters
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx yz0123456789!#$%&'()-.@[]^_`{}~(SPACE)
And replace anything that isn't one of those characters with a space, and also limit the number of characters to 35. Anyone wanna point me in the right direction? :D
def CleanFileName(s, remove_year, use_encoding = False, use_blanks = True):
if remove_year:
s = s[0:len(s)-7]
s = s.replace(' (Eng subs)', '')
s = s.replace(' (eng subs)', '')
s = s.replace(' (English subs)', '')
s = s.replace(' (english subs)', '')
s = s.replace(' (Eng Subs)', '')
s = s.replace(' (English Subs)', '')
s = s.replace('&', '&')
s = s.replace(''', '\'')
s = s.replace('Æ', 'AE')
s = s.replace('Ç', 'C')
s = s.replace('ô', 'o')
s = s.replace('é', 'e')
s = s.replace('ë', 'e')
s = s.replace('í', 'i')
s = s.replace('î', 'i')
s = s.replace('¢', 'c')
s = s.replace('â', 'a')
s = s.replace('ï', 'i')
s = s.replace('á', 'a')
s = s.replace('è', 'e')
s = s.replace('%2E', '.')
if use_encoding:
s = s.replace('"', '%22')
s = s.replace('*', '%2A')
s = s.replace('/', '%2F')
s = s.replace(':', '%3A')
s = s.replace('<', '%3C')
s = s.replace('>', '%3E')
s = s.replace('?', '%3F')
s = s.replace('\\', '%5C')
s = s.replace('|', '%7C')
s = s.replace('½', '%BD')
s = s.replace('½', '%BD') #half character
s = s.replace('³', '%B3')
s = s.replace('°', '%B0') #degree character
if use_blanks:
s = s.replace('"', ' ')
s = s.replace('*', ' ')
s = s.replace('/', ' ')
s = s.replace(':', ' ')
s = s.replace('<', ' ')
s = s.replace('>', ' ')
s = s.replace('?', ' ')
s = s.replace('\\', ' ')
s = s.replace('|', ' ')
s = s.replace('½', ' ')
s = s.replace('½', ' ') #half character
s = s.replace('³', ' ')
s = s.replace('°', ' ') #degree character
s = s.strip()
return s
To instead of replacing the dirty names, only allowing it to use these characters
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx yz0123456789!#$%&'()-.@[]^_`{}~(SPACE)
And replace anything that isn't one of those characters with a space, and also limit the number of characters to 35. Anyone wanna point me in the right direction? :D