-
-def simplify_title(title):
- expr = re.compile(ur'[^\w\d_\-]+', flags=re.UNICODE)
- return expr.sub(u'_', title).strip(u'_')
+
+def sanitize_filename(s):
+ """Sanitizes a string so it could be used as part of a filename."""
+ def replace_insane(char):
+ if char == '?' or ord(char) < 32 or ord(char) == 127:
+ return ''
+ elif char == '"':
+ return '\''
+ elif char == ':':
+ return ' -'
+ elif char in '\\/|*<>':
+ return '-'
+ return char
+
+ result = u''.join(map(replace_insane, s))
+ while '--' in result:
+ result = result.replace('--', '-')
+ return result.strip('-')