@ -8,6 +8,7 @@ import datetime
import errno
import io
import json
import locale
import os
import platform
import re
@ -159,6 +160,7 @@ class YoutubeDL(object):
include_ads : Download ads as well
default_search : Prepend this string if an input url is not valid .
' auto ' for elaborate guessing
encoding : Use this encoding instead of the system - specified .
The following parameters are not used by YoutubeDL itself , they are used by
the FileDownloader :
@ -1200,6 +1202,9 @@ class YoutubeDL(object):
def print_debug_header ( self ) :
if not self . params . get ( ' verbose ' ) :
return
write_string ( ' [debug] Encodings: locale %s , fs %s , out %s , pref %s \n ' %
( locale . getpreferredencoding ( ) , sys . getfilesystemencoding ( ) , sys . stdout . encoding , self . get_encoding ( ) ) )
write_string ( ' [debug] youtube-dl version ' + __version__ + ' \n ' )
try :
sp = subprocess . Popen (
@ -1264,3 +1269,19 @@ class YoutubeDL(object):
# (See https://github.com/rg3/youtube-dl/issues/1309 for details)
opener . addheaders = [ ]
self . _opener = opener
def encode ( self , s ) :
if isinstance ( s , bytes ) :
return s # Already encoded
try :
return s . encode ( self . get_encoding ( ) )
except UnicodeEncodeError as err :
err . reason = err . reason + ' . Check your system encoding configuration or use the --encoding option. '
raise
def get_encoding ( self ) :
encoding = self . params . get ( ' encoding ' )
if encoding is None :
encoding = preferredencoding ( )
return encoding