mirror of
https://github.com/ytdl-org/youtube-dl.git
synced 2024-11-25 11:41:52 +00:00
Merge pull request #12909 from remitamine/raw-sub
[YoutubeDL] write raw subtitle files
This commit is contained in:
commit
757984af90
1 changed files with 22 additions and 21 deletions
|
@ -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']
|
|
||||||
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)
|
sub_filename = subtitles_filename(filename, sub_lang, sub_format)
|
||||||
if self.params.get('nooverwrites', False) and os.path.exists(encodeFilename(sub_filename)):
|
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] Video subtitle %s.%s is already present' % (sub_lang, sub_format))
|
||||||
else:
|
else:
|
||||||
self.to_screen('[info] Writing video subtitles to: ' + sub_filename)
|
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
|
# Use newline='' to prevent conversion of newline characters
|
||||||
# See https://github.com/rg3/youtube-dl/issues/10268
|
# See https://github.com/rg3/youtube-dl/issues/10268
|
||||||
with io.open(encodeFilename(sub_filename), 'w', encoding='utf-8', newline='') as subfile:
|
with io.open(encodeFilename(sub_filename), 'w', encoding='utf-8', newline='') as subfile:
|
||||||
subfile.write(sub_data)
|
subfile.write(sub_info['data'])
|
||||||
except (OSError, IOError):
|
except (OSError, IOError):
|
||||||
self.report_error('Cannot write subtitles file ' + sub_filename)
|
self.report_error('Cannot write subtitles file ' + sub_filename)
|
||||||
return
|
return
|
||||||
|
else:
|
||||||
|
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'))
|
||||||
|
|
Loading…
Reference in a new issue