aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl
diff options
context:
space:
mode:
authorPhilipp Hagemeister <phihag@phihag.de>2012-11-27 12:46:09 +0100
committerPhilipp Hagemeister <phihag@phihag.de>2012-11-27 12:46:09 +0100
commit56781d3d2e476e2e109d0907d89548fd4da05058 (patch)
tree577de167abd61a1a59e6160ed419247ecc018ddb /youtube_dl
parented7516c69dbd676d0d98581756a483f19407fae4 (diff)
downloadyoutube-dl-56781d3d2e476e2e109d0907d89548fd4da05058.tar.xz
Switch back to underline for invalid characters, and make restricted ASCII-only
Diffstat (limited to 'youtube_dl')
-rw-r--r--youtube_dl/__init__.py2
-rw-r--r--youtube_dl/utils.py13
2 files changed, 10 insertions, 5 deletions
diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py
index cbf1dd1a7..c3e0f78e5 100644
--- a/youtube_dl/__init__.py
+++ b/youtube_dl/__init__.py
@@ -274,7 +274,7 @@ def parseOpts():
dest='outtmpl', metavar='TEMPLATE', help='output filename template. Use %(title)s to get the title, %(uploader)s for the uploader name, %(autonumber)s to get an automatically incremented number, %(ext)s for the filename extension, %(upload_date)s for the upload date (YYYYMMDD), %(extractor)s for the provider (youtube, metacafe, etc), %(id)s for the video id and %% for a literal percent. Use - to output to stdout.')
filesystem.add_option('--restrict-filenames',
action='store_true', dest='restrictfilenames',
- help='Avoid some characters such as "&" and spaces in filenames', default=False)
+ help='Restrict filenames to only ASCII characters, and avoid "&" and spaces in filenames', default=False)
filesystem.add_option('-a', '--batch-file',
dest='batchfile', metavar='FILE', help='file containing URLs to download (\'-\' for stdin)')
filesystem.add_option('-w', '--no-overwrites',
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py
index 1f60d34ae..3339f56ec 100644
--- a/youtube_dl/utils.py
+++ b/youtube_dl/utils.py
@@ -207,15 +207,20 @@ def sanitize_filename(s, restricted=False):
elif char == ':':
return '_-' if restricted else ' -'
elif char in '\\/|*<>':
- return '-'
+ return '_'
if restricted and (char in '&\'' or char.isspace()):
return '_'
+ if restricted and ord(char) > 127:
+ return '_'
return char
result = u''.join(map(replace_insane, s))
- while '--' in result:
- result = result.replace('--', '-')
- return result.strip('-')
+ while '__' in result:
+ result = result.replace('__', '_')
+ result = result.strip('_')
+ if not result:
+ result = '_'
+ return result
def orderedSet(iterable):
""" Remove all duplicates from the input iterable """