diff options
author | Yen Chi Hsuan <yan12125@gmail.com> | 2016-05-06 01:44:03 +0800 |
---|---|---|
committer | Yen Chi Hsuan <yan12125@gmail.com> | 2016-05-06 01:44:03 +0800 |
commit | 109db8ea64f9b6001d4854c1689f41ed9eb8136b (patch) | |
tree | 943156e202be242aa31c85a21a4e2d9ff196ab8b /youtube_dl | |
parent | 915620fd6894d92f89f9e5c9362d20f94e787e57 (diff) | |
parent | c587cbb793a6eda4fc7b1c7b4163e236abec1a00 (diff) |
Merge pull request #9367 from codesparkle/master
Feature: --restrict-filenames: replace accented characters by their unaccented counterpart instead of "_"
Diffstat (limited to 'youtube_dl')
-rw-r--r-- | youtube_dl/utils.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 7bcc85e2b..a5922b2b5 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -14,8 +14,8 @@ import email.utils import errno import functools import gzip -import itertools import io +import itertools import json import locale import math @@ -24,8 +24,8 @@ import os import pipes import platform import re -import ssl import socket +import ssl import struct import subprocess import sys @@ -89,6 +89,11 @@ KNOWN_EXTENSIONS = ( 'wav', 'f4f', 'f4m', 'm3u8', 'smil') +# needed for sanitizing filenames in restricted mode +ACCENT_CHARS = dict(zip('ÂÃÄÀÁÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ', + itertools.chain('AAAAAA', ['AE'], 'CEEEEIIIIDNOOOOOOUUUUYP', ['ss'], + 'aaaaaa', ['ae'], 'ceeeeiiiionoooooouuuuypy'))) + def preferredencoding(): """Get preferred encoding. @@ -365,6 +370,8 @@ def sanitize_filename(s, restricted=False, is_id=False): Set is_id if this is not an arbitrary string, but an ID that should be kept if possible """ def replace_insane(char): + if restricted and char in ACCENT_CHARS: + return ACCENT_CHARS[char] if char == '?' or ord(char) < 32 or ord(char) == 127: return '' elif char == '"': |