Remove some antipatterns and ensure that we always write the JSON file with UTF-8
authorPhilipp Hagemeister <phihag@phihag.de>
Mon, 17 Dec 2012 18:48:10 +0000 (19:48 +0100)
committerPhilipp Hagemeister <phihag@phihag.de>
Mon, 17 Dec 2012 18:48:10 +0000 (19:48 +0100)
youtube_dl/FileDownloader.py

index 61d3654e20d63f58cfb10d38695312d18d5766d5..e8c62ce07adbff3b10942c0d21700b06592bdad1 100644 (file)
@@ -4,6 +4,7 @@
 from __future__ import absolute_import
 
 import math
+import io
 import os
 import re
 import socket
@@ -453,12 +454,9 @@ 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:
-                infof = open(encodeFilename(infofn), 'w')
-                try:
-                    json_info_dict = dict((k, info_dict[k]) for k in info_dict if not k in ['urlhandle'])
+                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)
-                finally:
-                    infof.close()
             except (OSError, IOError):
                 self.trouble(u'ERROR: Cannot write metadata to JSON file ' + infofn)
                 return