diff options
Diffstat (limited to 'youtube_dl/YoutubeDL.py')
| -rwxr-xr-x | youtube_dl/YoutubeDL.py | 19 | 
1 files changed, 13 insertions, 6 deletions
| diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index adf70d658..9a8c7da05 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -28,6 +28,7 @@ if os.name == 'nt':      import ctypes  from .compat import ( +    compat_basestring,      compat_cookiejar,      compat_expanduser,      compat_get_terminal_size, @@ -37,6 +38,7 @@ from .compat import (      compat_tokenize_tokenize,      compat_urllib_error,      compat_urllib_request, +    compat_urllib_request_DataHandler,  )  from .utils import (      ContentTooShortError, @@ -62,6 +64,7 @@ from .utils import (      SameFileError,      sanitize_filename,      sanitize_path, +    sanitized_Request,      std_headers,      subtitles_filename,      UnavailableVideoError, @@ -155,7 +158,7 @@ class YoutubeDL(object):      writethumbnail:    Write the thumbnail image to a file      write_all_thumbnails:  Write all thumbnail formats to files      writesubtitles:    Write the video subtitles to a file -    writeautomaticsub: Write the automatic subtitles to a file +    writeautomaticsub: Write the automatically generated subtitles to a file      allsubtitles:      Downloads all the subtitles of the video                         (requires writesubtitles or writeautomaticsub)      listsubtitles:     Lists all available subtitles for the video @@ -571,7 +574,7 @@ class YoutubeDL(object):                                   if v is not None)              template_dict = collections.defaultdict(lambda: 'NA', template_dict) -            outtmpl = sanitize_path(self.params.get('outtmpl', DEFAULT_OUTTMPL)) +            outtmpl = self.params.get('outtmpl', DEFAULT_OUTTMPL)              tmpl = compat_expanduser(outtmpl)              filename = tmpl % template_dict              # Temporary fix for #4787 @@ -579,7 +582,7 @@ class YoutubeDL(object):              # to workaround encoding issues with subprocess on python2 @ Windows              if sys.version_info < (3, 0) and sys.platform == 'win32':                  filename = encodeFilename(filename, True).decode(preferredencoding()) -            return filename +            return sanitize_path(filename)          except ValueError as err:              self.report_error('Error in output template: ' + str(err) + ' (encoding: ' + repr(preferredencoding()) + ')')              return None @@ -832,6 +835,7 @@ class YoutubeDL(object):                                                        extra_info=extra)                  playlist_results.append(entry_result)              ie_result['entries'] = playlist_results +            self.to_screen('[download] Finished downloading playlist: %s' % playlist)              return ie_result          elif result_type == 'compat_list':              self.report_warning( @@ -936,7 +940,7 @@ class YoutubeDL(object):                      filter_parts.append(string)          def _remove_unused_ops(tokens): -            # Remove operators that we don't use and join them with the sourrounding strings +            # Remove operators that we don't use and join them with the surrounding strings              # for example: 'mp4' '-' 'baseline' '-' '16x9' is converted to 'mp4-baseline-16x9'              ALLOWED_OPS = ('/', '+', ',', '(', ')')              last_string, last_start, last_end, last_line = None, None, None, None @@ -1185,7 +1189,7 @@ class YoutubeDL(object):          return res      def _calc_cookies(self, info_dict): -        pr = compat_urllib_request.Request(info_dict['url']) +        pr = sanitized_Request(info_dict['url'])          self.cookiejar.add_cookie_header(pr)          return pr.get_header('Cookie') @@ -1869,6 +1873,8 @@ class YoutubeDL(object):      def urlopen(self, req):          """ Start an HTTP download """ +        if isinstance(req, compat_basestring): +            req = sanitized_Request(req)          return self._opener.open(req, timeout=self._socket_timeout)      def print_debug_header(self): @@ -1967,8 +1973,9 @@ class YoutubeDL(object):          debuglevel = 1 if self.params.get('debug_printtraffic') else 0          https_handler = make_HTTPS_handler(self.params, debuglevel=debuglevel)          ydlh = YoutubeDLHandler(self.params, debuglevel=debuglevel) +        data_handler = compat_urllib_request_DataHandler()          opener = compat_urllib_request.build_opener( -            proxy_handler, https_handler, cookie_processor, ydlh) +            proxy_handler, https_handler, cookie_processor, ydlh, data_handler)          # Delete the default user-agent header, which would otherwise apply in          # cases where our custom HTTP handler doesn't come into play | 
