From 2c288bda4235bed6927d88d9bf53ecaec18f7904 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Wed, 9 May 2012 14:47:28 +0200 Subject: reorganized the titles sanitizing: now title is the untouched title and stitle is created in process_info() and is cross-filesystem sanitized by sanitize_filename(); closes #164 --- youtube_dl/utils.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'youtube_dl/utils.py') diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index d18073d72..ae30da53e 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -156,12 +156,6 @@ def clean_html(html): return html -def sanitize_title(utitle): - """Sanitizes a video title so it could be used as part of a filename.""" - utitle = unescapeHTML(utitle) - return utitle.replace(unicode(os.sep), u'%') - - def sanitize_open(filename, open_mode): """Try to open the given filename, and slightly tweak it if this fails. @@ -196,10 +190,14 @@ def timeconvert(timestr): if timetuple is not None: timestamp = email.utils.mktime_tz(timetuple) return timestamp - -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 in u' .\\/|?*<>:"' or ord(char) < 32: + return '_' + return char + return u''.join(map(replace_insane, s)).strip('_') def orderedSet(iterable): """ Remove all duplicates from the input iterable """ -- cgit v1.2.3