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

fix: Correct SouthParkDeIE _real_extract to use traverse_obj correctly

This commit is contained in:
Randalix 2025-08-13 00:10:17 +02:00 committed by Randalix (aider)
parent 35c83c26dc
commit 8207f3b824

View File

@ -111,13 +111,14 @@ def _real_extract(self, url):
data = self._parse_json(self._search_regex(
r'window\.__DATA__\s*=\s*({.+?});', webpage, 'data'), display_id)
# CORRECTED: Provide paths as separate arguments, not a list
# Try multiple paths and, crucially, get only the FIRST match, not a list
video_detail = traverse_obj(data,
# Path for regular episodes
('children', lambda _, v: v.get('type') == 'MainContainer',
'children', 0, 'children', 0, 'props', 'videoDetail'),
# Fallback path for special episodes
('children', 0, 'videoDetail'))
('children', 0, 'videoDetail'),
get_all=False)
if not video_detail:
raise ExtractorError('Could not find video data in page')
@ -130,7 +131,7 @@ def _real_extract(self, url):
'clientPlatform': 'mobile',
})
hls_url = traverse_obj(api_data, ('stitchedstream', 'source'), expected_type=str)
hls_url = traverse_obj(api_data, ('stitchedstream', 'source'), expected_type=str, get_all=False)
return {
'id': video_detail['id'],