youtube-dl

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

commit f4bfd65ff2bfce77a6953281c037ca8e516b7648
parent 3cc687d486c5fc4710b6fdec4340b7635cec91c9
Author: Philipp Hagemeister <phihag@phihag.de>
Date:   Thu, 20 Dec 2012 13:13:24 +0100

Correct JSON writing (Closes #596)

Diffstat:
Myoutube_dl/FileDownloader.py | 5++---
Myoutube_dl/utils.py | 13+++++++++++++
2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/youtube_dl/FileDownloader.py b/youtube_dl/FileDownloader.py @@ -454,9 +454,8 @@ class FileDownloader(object): self.trouble(u'ERROR: No JSON encoder found. Update to Python 2.6+, setup a json module, or leave out --write-info-json.') return try: - with io.open(encodeFilename(infofn), 'w', 'utf-8') as infof: - json_info_dict = dict((k, v) for k,v in info_dict.items() if not k in ['urlhandle']) - json.dump(json_info_dict, infof) + json_info_dict = dict((k, v) for k,v in info_dict.items() if not k in ['urlhandle']) + write_json_file(json_info_dict, encodeFilename(infofn)) except (OSError, IOError): self.trouble(u'ERROR: Cannot write metadata to JSON file ' + infofn) return diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py @@ -3,6 +3,7 @@ import gzip import io +import json import locale import os import re @@ -175,6 +176,18 @@ else: assert type(s) == type(u'') print(s) +# In Python 2.x, json.dump expects a bytestream. +# In Python 3.x, it writes to a character stream +if sys.version_info < (3,0): + def write_json_file(obj, fn): + with open(fn, 'wb') as f: + json.dump(obj, f) +else: + def write_json_file(obj, fn): + with open(fn, 'w', encoding='utf-8') as f: + json.dump(obj, f) + + def htmlentity_transform(matchobj): """Transforms an HTML entity to a character.