mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[pbs] Fix subtitle extraction (#813)
Original PR: https://github.com/ytdl-org/youtube-dl/pull/24430, https://github.com/ytdl-org/youtube-dl/pull/17434 Closes: #836, https://github.com/ytdl-org/youtube-dl/issues/18796, https://github.com/ytdl-org/youtube-dl/issues/17273 Authored-by: coletdjnz, gesa, raphaeldore
This commit is contained in:
		| @@ -600,6 +600,7 @@ class PBSIE(InfoExtractor): | ||||
|  | ||||
|         formats = [] | ||||
|         http_url = None | ||||
|         hls_subs = {} | ||||
|         for num, redirect in enumerate(redirects): | ||||
|             redirect_id = redirect.get('eeid') | ||||
|  | ||||
| @@ -622,8 +623,9 @@ class PBSIE(InfoExtractor): | ||||
|                 continue | ||||
|  | ||||
|             if determine_ext(format_url) == 'm3u8': | ||||
|                 formats.extend(self._extract_m3u8_formats( | ||||
|                     format_url, display_id, 'mp4', m3u8_id='hls', fatal=False)) | ||||
|                 hls_formats, hls_subs = self._extract_m3u8_formats_and_subtitles( | ||||
|                     format_url, display_id, 'mp4', m3u8_id='hls', fatal=False) | ||||
|                 formats.extend(hls_formats) | ||||
|             else: | ||||
|                 formats.append({ | ||||
|                     'url': format_url, | ||||
| @@ -666,25 +668,12 @@ class PBSIE(InfoExtractor): | ||||
|         age_limit = US_RATINGS.get(rating_str) | ||||
|  | ||||
|         subtitles = {} | ||||
|         closed_captions_url = info.get('closed_captions_url') | ||||
|         if closed_captions_url: | ||||
|             subtitles['en'] = [{ | ||||
|                 'ext': 'ttml', | ||||
|                 'url': closed_captions_url, | ||||
|             }] | ||||
|             mobj = re.search(r'/(\d+)_Encoded\.dfxp', closed_captions_url) | ||||
|             if mobj: | ||||
|                 ttml_caption_suffix, ttml_caption_id = mobj.group(0, 1) | ||||
|                 ttml_caption_id = int(ttml_caption_id) | ||||
|                 subtitles['en'].extend([{ | ||||
|                     'url': closed_captions_url.replace( | ||||
|                         ttml_caption_suffix, '/%d_Encoded.srt' % (ttml_caption_id + 1)), | ||||
|                     'ext': 'srt', | ||||
|                 }, { | ||||
|                     'url': closed_captions_url.replace( | ||||
|                         ttml_caption_suffix, '/%d_Encoded.vtt' % (ttml_caption_id + 2)), | ||||
|                     'ext': 'vtt', | ||||
|                 }]) | ||||
|         captions = info.get('cc') or {} | ||||
|         for caption_url in captions.values(): | ||||
|             subtitles.setdefault('en', []).append({ | ||||
|                 'url': caption_url | ||||
|             }) | ||||
|         subtitles = self._merge_subtitles(subtitles, hls_subs) | ||||
|  | ||||
|         # info['title'] is often incomplete (e.g. 'Full Episode', 'Episode 5', etc) | ||||
|         # Try turning it to 'program - title' naming scheme if possible | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 coletdjnz
					coletdjnz