mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	Merge pull request #12909 from remitamine/raw-sub
[YoutubeDL] write raw subtitle files
This commit is contained in:
		| @@ -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')) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Yen Chi Hsuan
					Yen Chi Hsuan