|
@ -1763,29 +1763,30 @@ class YoutubeDL(object): |
|
|
ie = self.get_info_extractor(info_dict['extractor_key']) |
|
|
ie = self.get_info_extractor(info_dict['extractor_key']) |
|
|
for sub_lang, sub_info in subtitles.items(): |
|
|
for sub_lang, sub_info in subtitles.items(): |
|
|
sub_format = sub_info['ext'] |
|
|
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: |
|
|
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: |
|
|
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): |
|
|
if self.params.get('writeinfojson', False): |
|
|
infofn = replace_extension(filename, 'info.json', info_dict.get('ext')) |
|
|
infofn = replace_extension(filename, 'info.json', info_dict.get('ext')) |
|
|