|
|
@ -185,10 +185,12 @@ def parse_video_info(video_id : String, player_response : Hash(String, JSON::Any
|
|
|
|
# We have to try to extract viewCount from videoPrimaryInfoRenderer first,
|
|
|
|
# We have to try to extract viewCount from videoPrimaryInfoRenderer first,
|
|
|
|
# then from videoDetails, as the latter is "0" for livestreams (we want
|
|
|
|
# then from videoDetails, as the latter is "0" for livestreams (we want
|
|
|
|
# to get the amount of viewers watching).
|
|
|
|
# to get the amount of viewers watching).
|
|
|
|
views_txt = video_primary_renderer
|
|
|
|
views_txt = extract_text(
|
|
|
|
.try &.dig?("viewCount", "videoViewCountRenderer", "viewCount", "simpleText")
|
|
|
|
video_primary_renderer
|
|
|
|
views_txt ||= video_details["viewCount"]?
|
|
|
|
.try &.dig?("viewCount", "videoViewCountRenderer", "viewCount")
|
|
|
|
views = views_txt.try &.as_s.gsub(/\D/, "").to_i64?
|
|
|
|
)
|
|
|
|
|
|
|
|
views_txt ||= video_details["viewCount"]?.try &.as_s || ""
|
|
|
|
|
|
|
|
views = views_txt.gsub(/\D/, "").to_i64?
|
|
|
|
|
|
|
|
|
|
|
|
length_txt = (microformat["lengthSeconds"]? || video_details["lengthSeconds"])
|
|
|
|
length_txt = (microformat["lengthSeconds"]? || video_details["lengthSeconds"])
|
|
|
|
.try &.as_s.to_i64
|
|
|
|
.try &.as_s.to_i64
|
|
|
|