support gridShowRenderers
This commit is contained in:
parent
ac1319e720
commit
09125c9573
@ -400,12 +400,17 @@ def renderer_info(renderer):
|
||||
pass
|
||||
else:
|
||||
for overlay in overlays:
|
||||
try:
|
||||
if 'thumbnailOverlayTimeStatusRenderer' in overlay:
|
||||
info['duration'] = get_text(overlay['thumbnailOverlayTimeStatusRenderer']['text'])
|
||||
# show renderers don't have videoCountText
|
||||
elif 'thumbnailOverlayBottomPanelRenderer' in overlay:
|
||||
info['size'] = get_text(overlay['thumbnailOverlayBottomPanelRenderer']['text'])
|
||||
|
||||
# show renderers don't have playlistId, have to dig into the url to get it
|
||||
try:
|
||||
info['id'] = renderer['navigationEndpoint']['watchEndpoint']['playlistId']
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
break
|
||||
for key, node in renderer.items():
|
||||
if key in ('longBylineText', 'shortBylineText'):
|
||||
info['author'] = get_text(node)
|
||||
@ -414,8 +419,10 @@ def renderer_info(renderer):
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
continue
|
||||
|
||||
# show renderers don't have thumbnail key at top level, dig into thumbnailRenderer
|
||||
elif key == 'thumbnailRenderer' and 'showCustomThumbnailRenderer' in node:
|
||||
info['thumbnail'] = node['showCustomThumbnailRenderer']['thumbnail']['thumbnails'][0]['url']
|
||||
else:
|
||||
try:
|
||||
simple_key, function = dispatch[key]
|
||||
except KeyError:
|
||||
@ -585,18 +592,6 @@ did_you_mean = Template('''
|
||||
def renderer_html(renderer, additional_info={}, current_query_string=''):
|
||||
type = list(renderer.keys())[0]
|
||||
renderer = renderer[type]
|
||||
if type in ('videoRenderer', 'playlistRenderer', 'radioRenderer', 'compactVideoRenderer', 'compactPlaylistRenderer', 'compactRadioRenderer', 'gridVideoRenderer', 'gridPlaylistRenderer', 'gridRadioRenderer'):
|
||||
info = renderer_info(renderer)
|
||||
info.update(additional_info)
|
||||
html_exclude = set(additional_info.keys())
|
||||
if type == 'compactVideoRenderer':
|
||||
return video_item_html(info, small_video_item_template, html_exclude=html_exclude)
|
||||
if type in ('compactPlaylistRenderer', 'compactRadioRenderer'):
|
||||
return playlist_item_html(info, small_playlist_item_template, html_exclude=html_exclude)
|
||||
if type in ('videoRenderer', 'gridVideoRenderer'):
|
||||
return video_item_html(info, medium_video_item_template, html_exclude=html_exclude)
|
||||
if type in ('playlistRenderer', 'gridPlaylistRenderer', 'radioRenderer', 'gridRadioRenderer'):
|
||||
return playlist_item_html(info, medium_playlist_item_template, html_exclude=html_exclude)
|
||||
|
||||
if type == 'channelRenderer':
|
||||
info = renderer_info(renderer)
|
||||
@ -606,5 +601,18 @@ def renderer_html(renderer, additional_info={}, current_query_string=''):
|
||||
|
||||
if type == 'movieRenderer':
|
||||
return ''
|
||||
|
||||
info = renderer_info(renderer)
|
||||
info.update(additional_info)
|
||||
html_exclude = set(additional_info.keys())
|
||||
if type == 'compactVideoRenderer':
|
||||
return video_item_html(info, small_video_item_template, html_exclude=html_exclude)
|
||||
if type in ('compactPlaylistRenderer', 'compactRadioRenderer', 'compactShowRenderer'):
|
||||
return playlist_item_html(info, small_playlist_item_template, html_exclude=html_exclude)
|
||||
if type in ('videoRenderer', 'gridVideoRenderer'):
|
||||
return video_item_html(info, medium_video_item_template, html_exclude=html_exclude)
|
||||
if type in ('playlistRenderer', 'gridPlaylistRenderer', 'radioRenderer', 'gridRadioRenderer', 'gridShowRenderer', 'showRenderer'):
|
||||
return playlist_item_html(info, medium_playlist_item_template, html_exclude=html_exclude)
|
||||
|
||||
print(renderer)
|
||||
raise NotImplementedError('Unknown renderer type: ' + type)
|
||||
|
Loading…
x
Reference in New Issue
Block a user