aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com>2014-11-18 23:28:42 +0100
committerJaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com>2014-11-19 00:02:24 +0100
commit92120217eb27d820bfba0f6a50837f111cbf80ef (patch)
treecca45f0af01267f8c88c23331b6f43884750025b
parent37eddd314319d42f509307698196e4e9a8e84c7e (diff)
downloadyoutube-dl-92120217eb27d820bfba0f6a50837f111cbf80ef.tar.xz
[cache] Fix writing to paths with unicode characters
* Use "compat_getenv" * "write_json_file" now expects the filename to be a string
-rwxr-xr-xyoutube_dl/YoutubeDL.py2
-rw-r--r--youtube_dl/cache.py4
-rw-r--r--youtube_dl/utils.py1
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