diff options
| -rw-r--r-- | youtube_dl/YoutubeDL.py | 6 | ||||
| -rw-r--r-- | youtube_dl/__init__.py | 20 | ||||
| -rw-r--r-- | youtube_dl/utils.py | 12 | 
3 files changed, 23 insertions, 15 deletions
diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index e53a2b8ad..de2b133e0 100644 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -142,14 +142,10 @@ class YoutubeDL(object):      def to_screen(self, message, skip_eol=False):          """Print message to stdout if not in quiet mode.""" -        assert type(message) == type(u'')          if not self.params.get('quiet', False):              terminator = [u'\n', u''][skip_eol]              output = message + terminator -            if 'b' in getattr(self._screen_file, 'mode', '') or sys.version_info[0] < 3: # Python 2 lies about the mode of sys.stdout/sys.stderr -                output = output.encode(preferredencoding(), 'ignore') -            self._screen_file.write(output) -            self._screen_file.flush() +            write_string(output, self._screen_file)      def to_stderr(self, message):          """Print message to stderr.""" diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index 0022a4e7a..9efd7c3f7 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -354,7 +354,7 @@ def parseOpts(overrideArguments=None):      if overrideArguments is not None:          opts, args = parser.parse_args(overrideArguments)          if opts.verbose: -            sys.stderr.write(u'[debug] Override config: ' + repr(overrideArguments) + '\n') +            write_string(u'[debug] Override config: ' + repr(overrideArguments) + '\n')      else:          xdg_config_home = os.environ.get('XDG_CONFIG_HOME')          if xdg_config_home: @@ -367,9 +367,9 @@ def parseOpts(overrideArguments=None):          argv = systemConf + userConf + commandLineConf          opts, args = parser.parse_args(argv)          if opts.verbose: -            sys.stderr.write(u'[debug] System config: ' + repr(_hide_login_info(systemConf)) + '\n') -            sys.stderr.write(u'[debug] User config: ' + repr(_hide_login_info(userConf)) + '\n') -            sys.stderr.write(u'[debug] Command-line args: ' + repr(_hide_login_info(commandLineConf)) + '\n') +            write_string(u'[debug] System config: ' + repr(_hide_login_info(systemConf)) + '\n') +            write_string(u'[debug] User config: ' + repr(_hide_login_info(userConf)) + '\n') +            write_string(u'[debug] Command-line args: ' + repr(_hide_login_info(commandLineConf)) + '\n')      return parser, opts, args @@ -392,7 +392,7 @@ def _real_main(argv=None):          except (IOError, OSError) as err:              if opts.verbose:                  traceback.print_exc() -            sys.stderr.write(u'ERROR: unable to open cookie file\n') +            write_string(u'ERROR: unable to open cookie file\n')              sys.exit(101)      # Set user agent      if opts.user_agent is not None: @@ -419,7 +419,7 @@ def _real_main(argv=None):              batchurls = [x.strip() for x in batchurls]              batchurls = [x for x in batchurls if len(x) > 0 and not re.search(r'^[#/;]', x)]              if opts.verbose: -                sys.stderr.write(u'[debug] Batch file urls: ' + repr(batchurls) + u'\n') +                write_string(u'[debug] Batch file urls: ' + repr(batchurls) + u'\n')          except IOError:              sys.exit(u'ERROR: batch file could not be read')      all_urls = batchurls + args @@ -611,7 +611,7 @@ def _real_main(argv=None):          })      if opts.verbose: -        sys.stderr.write(u'[debug] youtube-dl version ' + __version__ + u'\n') +        write_string(u'[debug] youtube-dl version ' + __version__ + u'\n')          try:              sp = subprocess.Popen(                  ['git', 'rev-parse', '--short', 'HEAD'], @@ -620,14 +620,14 @@ def _real_main(argv=None):              out, err = sp.communicate()              out = out.decode().strip()              if re.match('[0-9a-f]+', out): -                sys.stderr.write(u'[debug] Git HEAD: ' + out + u'\n') +                write_string(u'[debug] Git HEAD: ' + out + u'\n')          except:              try:                  sys.exc_clear()              except:                  pass -        sys.stderr.write(u'[debug] Python version %s - %s' %(platform.python_version(), platform_name()) + u'\n') -        sys.stderr.write(u'[debug] Proxy map: ' + str(proxy_handler.proxies) + u'\n') +        write_string(u'[debug] Python version %s - %s' %(platform.python_version(), platform_name()) + u'\n') +        write_string(u'[debug] Proxy map: ' + str(proxy_handler.proxies) + u'\n')      ydl.add_default_info_extractors() diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 5558d4737..814a9b6be 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -790,6 +790,18 @@ def platform_name():      return res +def write_string(s, out=None): +    if out is None: +        out = sys.stderr +    assert type(s) == type(u'') + +    if ('b' in getattr(out, 'mode', '') or +            sys.version_info[0] < 3):  # Python 2 lies about mode of sys.stderr +        s = s.encode(preferredencoding(), 'ignore') +    out.write(s) +    out.flush() + +  def bytes_to_intlist(bs):      if not bs:          return []  | 
