[extractor/youtube] Fix video like count extraction

Support new combined button layout
Authored by: coletdjnz
pull/4881/head
coletdjnz 2 years ago
parent ae1035646a
commit 3ffb2f5bea
No known key found for this signature in database
GPG Key ID: 91984263BB39894A

@ -3911,19 +3911,24 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
vpir, vpir,
lambda x: x['videoActions']['menuRenderer']['topLevelButtons'], lambda x: x['videoActions']['menuRenderer']['topLevelButtons'],
list) or []): list) or []):
tbr = tlb.get('toggleButtonRenderer') or {} tbrs = variadic(
for getter, regex in [( traverse_obj(
lambda x: x['defaultText']['accessibility']['accessibilityData'], tlb, 'toggleButtonRenderer',
r'(?P<count>[\d,]+)\s*(?P<type>(?:dis)?like)'), ([ ('segmentedLikeDislikeButtonRenderer', ..., 'toggleButtonRenderer'),
lambda x: x['accessibility'], default=[]))
lambda x: x['accessibilityData']['accessibilityData'], for tbr in tbrs:
], r'(?P<type>(?:dis)?like) this video along with (?P<count>[\d,]+) other people')]: for getter, regex in [(
label = (try_get(tbr, getter, dict) or {}).get('label') lambda x: x['defaultText']['accessibility']['accessibilityData'],
if label: r'(?P<count>[\d,]+)\s*(?P<type>(?:dis)?like)'), ([
mobj = re.match(regex, label) lambda x: x['accessibility'],
if mobj: lambda x: x['accessibilityData']['accessibilityData'],
info[mobj.group('type') + '_count'] = str_to_int(mobj.group('count')) ], r'(?P<type>(?:dis)?like) this video along with (?P<count>[\d,]+) other people')]:
break label = (try_get(tbr, getter, dict) or {}).get('label')
if label:
mobj = re.match(regex, label)
if mobj:
info[mobj.group('type') + '_count'] = str_to_int(mobj.group('count'))
break
sbr_tooltip = try_get( sbr_tooltip = try_get(
vpir, lambda x: x['sentimentBar']['sentimentBarRenderer']['tooltip']) vpir, lambda x: x['sentimentBar']['sentimentBarRenderer']['tooltip'])
if sbr_tooltip: if sbr_tooltip:

Loading…
Cancel
Save