feat: show current viewer count for live streams in search results
and related videos feed previously it would fall back to 0
This commit is contained in:
@@ -98,6 +98,20 @@ def parseRenderers(entry: dict, context: dict = {}) -> dict:
|
||||
else:
|
||||
avatar_url = safeTraverse(entry, ["videoRenderer", "avatar", "decoratedAvatarViewModel", "avatar", "avatarViewModel", "image", "sources", 0, "url"], default="unknown")
|
||||
|
||||
views_or_viewers_model = safeTraverse(entry, ["videoRenderer", "viewCountText"])
|
||||
if "simpleText" in views_or_viewers_model:
|
||||
# means this is a video with X views
|
||||
view_count = parseViewsFromViewText(entry["videoRenderer"]["viewCountText"]["simpleText"])
|
||||
view_count_text = entry["videoRenderer"]["viewCountText"]["simpleText"]
|
||||
elif "runs" in views_or_viewers_model:
|
||||
# means this is a livestream with X concurrent viewers
|
||||
view_count = parseViewsFromViewText(entry["videoRenderer"]["viewCountText"]["runs"][0]["text"] + " watching")
|
||||
view_count_text = entry["videoRenderer"]["viewCountText"]["runs"][0]["text"] + " watching"
|
||||
else:
|
||||
# unknown model, assume no views
|
||||
view_count = 0
|
||||
view_count_text = "Unknown amount of views"
|
||||
|
||||
return {
|
||||
"type": "video",
|
||||
"title": safeTraverse(entry, ["videoRenderer", "title", "runs", 0, "text"]),
|
||||
@@ -110,8 +124,8 @@ def parseRenderers(entry: dict, context: dict = {}) -> dict:
|
||||
"videoThumbnails": genThumbs(safeTraverse(entry, ["videoRenderer", "videoId"], default="unknown")),
|
||||
"description": description,
|
||||
"descriptionHtml": description_html,
|
||||
"viewCount": parseViewsFromViewText(safeTraverse(entry, ["videoRenderer", "viewCountText", "simpleText"], default="No views")),
|
||||
"viewCountText": safeTraverse(entry, ["videoRenderer", "viewCountText", "simpleText"], default="Unknown amount of views"),
|
||||
"viewCount": view_count,
|
||||
"viewCountText": view_count_text,
|
||||
"published": int(dateparser.parse(published_date).timestamp()), # sadly best we can do, invidious does this too
|
||||
"publishedText": published_date,
|
||||
"lengthSeconds": parseLengthFromTimeBadge(safeTraverse(entry, ["videoRenderer", "lengthText", "simpleText"], default="0:0")),
|
||||
|
||||
Reference in New Issue
Block a user