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:
|
else:
|
||||||
avatar_url = safeTraverse(entry, ["videoRenderer", "avatar", "decoratedAvatarViewModel", "avatar", "avatarViewModel", "image", "sources", 0, "url"], default="unknown")
|
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 {
|
return {
|
||||||
"type": "video",
|
"type": "video",
|
||||||
"title": safeTraverse(entry, ["videoRenderer", "title", "runs", 0, "text"]),
|
"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")),
|
"videoThumbnails": genThumbs(safeTraverse(entry, ["videoRenderer", "videoId"], default="unknown")),
|
||||||
"description": description,
|
"description": description,
|
||||||
"descriptionHtml": description_html,
|
"descriptionHtml": description_html,
|
||||||
"viewCount": parseViewsFromViewText(safeTraverse(entry, ["videoRenderer", "viewCountText", "simpleText"], default="No views")),
|
"viewCount": view_count,
|
||||||
"viewCountText": safeTraverse(entry, ["videoRenderer", "viewCountText", "simpleText"], default="Unknown amount of views"),
|
"viewCountText": view_count_text,
|
||||||
"published": int(dateparser.parse(published_date).timestamp()), # sadly best we can do, invidious does this too
|
"published": int(dateparser.parse(published_date).timestamp()), # sadly best we can do, invidious does this too
|
||||||
"publishedText": published_date,
|
"publishedText": published_date,
|
||||||
"lengthSeconds": parseLengthFromTimeBadge(safeTraverse(entry, ["videoRenderer", "lengthText", "simpleText"], default="0:0")),
|
"lengthSeconds": parseLengthFromTimeBadge(safeTraverse(entry, ["videoRenderer", "lengthText", "simpleText"], default="0:0")),
|
||||||
|
|||||||
Reference in New Issue
Block a user