diff options
| author | Remita Amine <remitamine@gmail.com> | 2017-04-28 22:25:20 +0100 | 
|---|---|---|
| committer | Remita Amine <remitamine@gmail.com> | 2017-04-29 20:03:03 +0100 | 
| commit | 5ff1bc0cc10bf3006834c4b49fc36d733c83ce5c (patch) | |
| tree | 079d7d4e4cbf85b427f32df8dddbb348b81c0e47 | |
| parent | bc8a2ea07107c65e3561826b066888d450b98391 (diff) | |
[YoutubeDL] write raw subtitle files
| -rwxr-xr-x | youtube_dl/YoutubeDL.py | 43 | 
1 files changed, 22 insertions, 21 deletions
| diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index eb465c425..c7100bb91 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -1696,29 +1696,30 @@ class YoutubeDL(object):              ie = self.get_info_extractor(info_dict['extractor_key'])              for sub_lang, sub_info in subtitles.items():                  sub_format = sub_info['ext'] -                if sub_info.get('data') is not None: -                    sub_data = sub_info['data'] +                sub_filename = subtitles_filename(filename, sub_lang, sub_format) +                if self.params.get('nooverwrites', False) and os.path.exists(encodeFilename(sub_filename)): +                    self.to_screen('[info] Video subtitle %s.%s is already present' % (sub_lang, sub_format))                  else: -                    try: -                        sub_data = ie._download_webpage( -                            sub_info['url'], info_dict['id'], note=False) -                    except ExtractorError as err: -                        self.report_warning('Unable to download subtitle for "%s": %s' % -                                            (sub_lang, error_to_compat_str(err.cause))) -                        continue -                try: -                    sub_filename = subtitles_filename(filename, sub_lang, sub_format) -                    if self.params.get('nooverwrites', False) and os.path.exists(encodeFilename(sub_filename)): -                        self.to_screen('[info] Video subtitle %s.%s is already_present' % (sub_lang, sub_format)) +                    self.to_screen('[info] Writing video subtitles to: ' + sub_filename) +                    if sub_info.get('data') is not None: +                        try: +                            # Use newline='' to prevent conversion of newline characters +                            # See https://github.com/rg3/youtube-dl/issues/10268 +                            with io.open(encodeFilename(sub_filename), 'w', encoding='utf-8', newline='') as subfile: +                                subfile.write(sub_info['data']) +                        except (OSError, IOError): +                            self.report_error('Cannot write subtitles file ' + sub_filename) +                            return                      else: -                        self.to_screen('[info] Writing video subtitles to: ' + sub_filename) -                        # Use newline='' to prevent conversion of newline characters -                        # See https://github.com/rg3/youtube-dl/issues/10268 -                        with io.open(encodeFilename(sub_filename), 'w', encoding='utf-8', newline='') as subfile: -                            subfile.write(sub_data) -                except (OSError, IOError): -                    self.report_error('Cannot write subtitles file ' + sub_filename) -                    return +                        try: +                            sub_data = ie._request_webpage( +                                sub_info['url'], info_dict['id'], note=False).read() +                            with io.open(encodeFilename(sub_filename), 'wb') as subfile: +                                subfile.write(sub_data) +                        except (ExtractorError, IOError, OSError, ValueError) as err: +                            self.report_warning('Unable to download subtitle for "%s": %s' % +                                                (sub_lang, error_to_compat_str(err))) +                            continue          if self.params.get('writeinfojson', False):              infofn = replace_extension(filename, 'info.json', info_dict.get('ext')) | 
