diff options
Diffstat (limited to 'youtube_dl/YoutubeDL.py')
| -rwxr-xr-x | youtube_dl/YoutubeDL.py | 19 | 
1 files changed, 14 insertions, 5 deletions
| diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index d65253882..1783ce01b 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -37,6 +37,7 @@ from .compat import (      compat_tokenize_tokenize,      compat_urllib_error,      compat_urllib_request, +    compat_urllib_request_DataHandler,  )  from .utils import (      ContentTooShortError, @@ -571,7 +572,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 +580,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 @@ -1232,13 +1233,20 @@ class YoutubeDL(object):              except (ValueError, OverflowError, OSError):                  pass +        subtitles = info_dict.get('subtitles') +        if subtitles: +            for _, subtitle in subtitles.items(): +                for subtitle_format in subtitle: +                    if 'ext' not in subtitle_format: +                        subtitle_format['ext'] = determine_ext(subtitle_format['url']).lower() +          if self.params.get('listsubtitles', False):              if 'automatic_captions' in info_dict:                  self.list_subtitles(info_dict['id'], info_dict.get('automatic_captions'), 'automatic captions') -            self.list_subtitles(info_dict['id'], info_dict.get('subtitles'), 'subtitles') +            self.list_subtitles(info_dict['id'], subtitles, 'subtitles')              return          info_dict['requested_subtitles'] = self.process_subtitles( -            info_dict['id'], info_dict.get('subtitles'), +            info_dict['id'], subtitles,              info_dict.get('automatic_captions'))          # We now pick which formats have to be downloaded @@ -1960,8 +1968,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 | 
