diff --git a/ythdd_struct_parser.py b/ythdd_struct_parser.py index 45b3f50..2915361 100644 --- a/ythdd_struct_parser.py +++ b/ythdd_struct_parser.py @@ -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")),