youtube-dl

Another place where youtube-dl lives on
git clone git://git.oshgnacknak.de/youtube-dl.git
Log | Files | Refs | README | LICENSE

commit 3ba098a6a5cfba528b3931c38790b582494031f8
parent 07e378fa18b1c6b8becd46f6cf2d476e29a70a59
Author: Jaime Marquínez Ferrándiz <jaimeMF@users.noreply.github.com>
Date:   Thu, 20 Nov 2014 08:16:42 +0100

Merge pull request #4247 from ivan/info-json

Fix #4246 and #4244 .info.json bugs
Diffstat:
Myoutube_dl/utils.py | 11+++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py @@ -71,10 +71,10 @@ def preferredencoding(): def write_json_file(obj, fn): - """ Encode obj as JSON and write it to fn, atomically """ + """ Encode obj as JSON and write it to fn, atomically if possible """ fn = encodeFilename(fn) - if sys.version_info < (3, 0): + if sys.version_info < (3, 0) and sys.platform != 'win32': encoding = get_filesystem_encoding() # os.path.basename returns a bytes object, but NamedTemporaryFile # will fail if the filename contains non ascii characters unless we @@ -108,6 +108,13 @@ def write_json_file(obj, fn): try: with tf: json.dump(obj, tf) + if sys.platform == 'win32': + # Need to remove existing file on Windows, else os.rename raises + # WindowsError or FileExistsError. + try: + os.unlink(fn) + except OSError: + pass os.rename(tf.name, fn) except: try: