diff options
author | Jaime Marquínez Ferrándiz <[email protected]> | 2014-11-18 23:28:42 +0100 |
---|---|---|
committer | Jaime Marquínez Ferrándiz <[email protected]> | 2014-11-19 00:02:24 +0100 |
commit | 92120217eb27d820bfba0f6a50837f111cbf80ef (patch) | |
tree | cca45f0af01267f8c88c23331b6f43884750025b | |
parent | 37eddd314319d42f509307698196e4e9a8e84c7e (diff) | |
download | youtube-dl-92120217eb27d820bfba0f6a50837f111cbf80ef.tar.gz youtube-dl-92120217eb27d820bfba0f6a50837f111cbf80ef.zip |
[cache] Fix writing to paths with unicode characters
* Use "compat_getenv"
* "write_json_file" now expects the filename to be a string
-rwxr-xr-x | youtube_dl/YoutubeDL.py | 2 | ||||
-rw-r--r-- | youtube_dl/cache.py | 4 | ||||
-rw-r--r-- | youtube_dl/utils.py | 1 |
3 files changed, 4 insertions, 3 deletions
diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 5c875b497..94c50903c 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -1001,7 +1001,7 @@ class YoutubeDL(object): else: self.to_screen('[info] Writing video description metadata as JSON to: ' + infofn) try: - write_json_file(info_dict, encodeFilename(infofn)) + write_json_file(info_dict, infofn) except (OSError, IOError): self.report_error('Cannot write metadata to JSON file ' + infofn) return diff --git a/youtube_dl/cache.py b/youtube_dl/cache.py index 2d9b426cb..5fe839eb1 100644 --- a/youtube_dl/cache.py +++ b/youtube_dl/cache.py @@ -8,7 +8,7 @@ import re import shutil import traceback -from .compat import compat_expanduser +from .compat import compat_expanduser, compat_getenv from .utils import write_json_file @@ -19,7 +19,7 @@ class Cache(object): def _get_root_dir(self): res = self._ydl.params.get('cachedir') if res is None: - cache_root = os.environ.get('XDG_CACHE_HOME', '~/.cache') + cache_root = compat_getenv('XDG_CACHE_HOME', '~/.cache') res = os.path.join(cache_root, 'youtube-dl') return compat_expanduser(res) diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 50e515a04..94b496dd0 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -73,6 +73,7 @@ def preferredencoding(): def write_json_file(obj, fn): """ Encode obj as JSON and write it to fn, atomically """ + fn = encodeFilename(fn) if sys.version_info < (3, 0): encoding = get_filesystem_encoding() # os.path.basename returns a bytes object, but NamedTemporaryFile |