[youtube:tab] fix playlist/comunity continuation items extraction(closes #28266)
This commit is contained in:
parent
8562218350
commit
605e7b5e47
1 changed files with 11 additions and 2 deletions
|
@ -24,6 +24,7 @@ from ..jsinterp import JSInterpreter
|
||||||
from ..utils import (
|
from ..utils import (
|
||||||
ExtractorError,
|
ExtractorError,
|
||||||
clean_html,
|
clean_html,
|
||||||
|
dict_get,
|
||||||
float_or_none,
|
float_or_none,
|
||||||
int_or_none,
|
int_or_none,
|
||||||
mimetype2ext,
|
mimetype2ext,
|
||||||
|
@ -2541,13 +2542,14 @@ class YoutubeTabIE(YoutubeBaseInfoExtractor):
|
||||||
continuation = self._extract_continuation(continuation_renderer)
|
continuation = self._extract_continuation(continuation_renderer)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
on_response_received = dict_get(response, ('onResponseReceivedActions', 'onResponseReceivedEndpoints'))
|
||||||
continuation_items = try_get(
|
continuation_items = try_get(
|
||||||
response, lambda x: x['onResponseReceivedActions'][0]['appendContinuationItemsAction']['continuationItems'], list)
|
on_response_received, lambda x: x[0]['appendContinuationItemsAction']['continuationItems'], list)
|
||||||
if continuation_items:
|
if continuation_items:
|
||||||
continuation_item = continuation_items[0]
|
continuation_item = continuation_items[0]
|
||||||
if not isinstance(continuation_item, dict):
|
if not isinstance(continuation_item, dict):
|
||||||
continue
|
continue
|
||||||
renderer = continuation_item.get('gridVideoRenderer')
|
renderer = self._extract_grid_item_renderer(continuation_item)
|
||||||
if renderer:
|
if renderer:
|
||||||
grid_renderer = {'items': continuation_items}
|
grid_renderer = {'items': continuation_items}
|
||||||
for entry in self._grid_entries(grid_renderer):
|
for entry in self._grid_entries(grid_renderer):
|
||||||
|
@ -2561,6 +2563,13 @@ class YoutubeTabIE(YoutubeBaseInfoExtractor):
|
||||||
yield entry
|
yield entry
|
||||||
continuation = self._extract_continuation(video_list_renderer)
|
continuation = self._extract_continuation(video_list_renderer)
|
||||||
continue
|
continue
|
||||||
|
renderer = continuation_item.get('backstagePostThreadRenderer')
|
||||||
|
if renderer:
|
||||||
|
continuation_renderer = {'contents': continuation_items}
|
||||||
|
for entry in self._post_thread_continuation_entries(continuation_renderer):
|
||||||
|
yield entry
|
||||||
|
continuation = self._extract_continuation(continuation_renderer)
|
||||||
|
continue
|
||||||
|
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue