[ie/youtube] Fix detection of forced preroll wait time (#17062)

Authored by: bashonly
This commit is contained in:
bashonly 2026-06-26 11:52:12 -05:00 committed by GitHub
parent 7b03011294
commit 3c279b33cb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -3819,11 +3819,20 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
wait_seconds = 0
for renderer in traverse_obj(player_response, (
(
(
'adPlacements', lambda _, v: v['adPlacementRenderer']['config']['adPlacementConfig']['kind'] == 'AD_PLACEMENT_KIND_START',
'adPlacementRenderer', 'renderer',
),
(
'adSlots', lambda _, v: v['adSlotRenderer']['adSlotMetadata']['triggerEvent'] == 'SLOT_TRIGGER_EVENT_BEFORE_CONTENT',
'adSlotRenderer', 'fulfillmentContent', 'fulfilledLayout', 'playerBytesAdLayoutRenderer', 'renderingContent', (
None,
('playerBytesSequentialLayoutRenderer', 'sequentialLayouts', ..., 'playerBytesAdLayoutRenderer', 'renderingContent'),
), 'instreamVideoAdRenderer', {dict},
),
),
),
'instreamVideoAdRenderer', {dict},
)):
duration = traverse_obj(renderer, ('playerVars', {urllib.parse.parse_qs}, 'length_seconds', -1, {int_or_none}))
ad = 'an ad' if duration is None else f'a {duration}s ad'