Skip to content

Commit 99091e9

Browse files
committed
video parsing: raise if major root element is missing
1 parent 6ddbccb commit 99091e9

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

src/invidious/videos.cr

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -885,16 +885,24 @@ def extract_video_info(video_id : String, proxy_region : String? = nil, context_
885885

886886
# Top level elements
887887

888-
primary_results = player_response
889-
.dig?("contents", "twoColumnWatchNextResults", "results", "results", "contents")
888+
main_results = player_response.dig?("contents", "twoColumnWatchNextResults")
889+
890+
raise BrokenTubeException.new("twoColumnWatchNextResults") if !main_results
891+
892+
primary_results = main_results.dig?("results", "results", "contents")
893+
894+
raise BrokenTubeException.new("results") if !primary_results
890895

891896
video_primary_renderer = primary_results
892-
.try &.as_a.find(&.["videoPrimaryInfoRenderer"]?)
893-
.try &.["videoPrimaryInfoRenderer"]
897+
.as_a.find(&.["videoPrimaryInfoRenderer"]?)
898+
.try &.["videoPrimaryInfoRenderer"]
894899

895900
video_secondary_renderer = primary_results
896-
.try &.as_a.find(&.["videoSecondaryInfoRenderer"]?)
897-
.try &.["videoSecondaryInfoRenderer"]
901+
.as_a.find(&.["videoSecondaryInfoRenderer"]?)
902+
.try &.["videoSecondaryInfoRenderer"]
903+
904+
raise BrokenTubeException.new("videoPrimaryInfoRenderer") if !video_primary_renderer
905+
raise BrokenTubeException.new("videoSecondaryInfoRenderer") if !video_secondary_renderer
898906

899907
# Likes/dislikes
900908

0 commit comments

Comments
 (0)