1
0
mirror of https://github.com/yt-dlp/yt-dlp.git synced 2025-08-14 16:38:29 +00:00

Dont't trust substack's webpage "post.type"

A substack "podcast" type can also have a video. This commit looks for "videoUpload" elements regardless of content type. If it has a video url add it to formats.

Closes #13594
This commit is contained in:
Robert Damas 2025-07-17 19:56:47 +02:00
parent c1ac543c81
commit 7cbe4b5f33

View File

@ -107,7 +107,9 @@ def _real_extract(self, url):
post_type = webpage_info['post']['type'] post_type = webpage_info['post']['type']
formats, subtitles = [], {} formats, subtitles = [], {}
if post_type == 'podcast': if webpage_info['post'].get('videoUpload'):
formats, subtitles = self._extract_video_formats(webpage_info['post']['videoUpload']['id'], canonical_url)
if webpage_info['post'].get('podcast_url'):
fmt = {'url': webpage_info['post']['podcast_url']} fmt = {'url': webpage_info['post']['podcast_url']}
if not determine_ext(fmt['url'], default_ext=None): if not determine_ext(fmt['url'], default_ext=None):
# The redirected format URL expires but the original URL doesn't, # The redirected format URL expires but the original URL doesn't,
@ -117,9 +119,7 @@ def _real_extract(self, url):
'Resolving podcast file extension', 'Resolving podcast file extension',
'Podcast URL is invalid').url) 'Podcast URL is invalid').url)
formats.append(fmt) formats.append(fmt)
elif post_type == 'video': if not formats:
formats, subtitles = self._extract_video_formats(webpage_info['post']['videoUpload']['id'], canonical_url)
else:
self.raise_no_formats(f'Page type "{post_type}" is not supported') self.raise_no_formats(f'Page type "{post_type}" is not supported')
return { return {