[youtube:tab] Detect playlists inside community posts

This commit is contained in:
pukkandan 2021-04-27 11:33:58 +05:30
parent 1ad047d0f7
commit 895b0931e5
No known key found for this signature in database
GPG key ID: 0F00D95A001F4698

View file

@ -2958,12 +2958,19 @@ class YoutubeTabIE(YoutubeBaseInfoExtractor):
return return
# video attachment # video attachment
video_renderer = try_get( video_renderer = try_get(
post_renderer, lambda x: x['backstageAttachment']['videoRenderer'], dict) post_renderer, lambda x: x['backstageAttachment']['videoRenderer'], dict) or {}
video_id = None video_id = video_renderer.get('videoId')
if video_renderer: if video_id:
entry = self._video_entry(video_renderer) entry = self._extract_video(video_renderer)
if entry: if entry:
yield entry yield entry
# playlist attachment
playlist_id = try_get(
post_renderer, lambda x: x['backstageAttachment']['playlistRenderer']['playlistId'], compat_str)
if playlist_id:
yield self.url_result(
'https://www.youtube.com/playlist?list=%s' % playlist_id,
ie=YoutubeTabIE.ie_key(), video_id=playlist_id)
# inline video links # inline video links
runs = try_get(post_renderer, lambda x: x['contentText']['runs'], list) or [] runs = try_get(post_renderer, lambda x: x['contentText']['runs'], list) or []
for run in runs: for run in runs:
@ -2978,7 +2985,7 @@ class YoutubeTabIE(YoutubeBaseInfoExtractor):
ep_video_id = YoutubeIE._match_id(ep_url) ep_video_id = YoutubeIE._match_id(ep_url)
if video_id == ep_video_id: if video_id == ep_video_id:
continue continue
yield self.url_result(ep_url, ie=YoutubeIE.ie_key(), video_id=video_id) yield self.url_result(ep_url, ie=YoutubeIE.ie_key(), video_id=ep_video_id)
def _post_thread_continuation_entries(self, post_thread_continuation): def _post_thread_continuation_entries(self, post_thread_continuation):
contents = post_thread_continuation.get('contents') contents = post_thread_continuation.get('contents')