From 99091e919c9af56c27ca8aebd790c3b64b564f78 Mon Sep 17 00:00:00 2001 From: Samantaz Fox Date: Thu, 3 Feb 2022 00:10:32 +0100 Subject: [PATCH] video parsing: raise if major root element is missing --- src/invidious/videos.cr | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/invidious/videos.cr b/src/invidious/videos.cr index d77d56d2..b0d8b4d1 100644 --- a/src/invidious/videos.cr +++ b/src/invidious/videos.cr @@ -885,16 +885,24 @@ def extract_video_info(video_id : String, proxy_region : String? = nil, context_ # Top level elements - primary_results = player_response - .dig?("contents", "twoColumnWatchNextResults", "results", "results", "contents") + main_results = player_response.dig?("contents", "twoColumnWatchNextResults") + + raise BrokenTubeException.new("twoColumnWatchNextResults") if !main_results + + primary_results = main_results.dig?("results", "results", "contents") + + raise BrokenTubeException.new("results") if !primary_results video_primary_renderer = primary_results - .try &.as_a.find(&.["videoPrimaryInfoRenderer"]?) - .try &.["videoPrimaryInfoRenderer"] + .as_a.find(&.["videoPrimaryInfoRenderer"]?) + .try &.["videoPrimaryInfoRenderer"] video_secondary_renderer = primary_results - .try &.as_a.find(&.["videoSecondaryInfoRenderer"]?) - .try &.["videoSecondaryInfoRenderer"] + .as_a.find(&.["videoSecondaryInfoRenderer"]?) + .try &.["videoSecondaryInfoRenderer"] + + raise BrokenTubeException.new("videoPrimaryInfoRenderer") if !video_primary_renderer + raise BrokenTubeException.new("videoSecondaryInfoRenderer") if !video_secondary_renderer # Likes/dislikes