From 2782facc94e0529b51d732638369e689b0335417 Mon Sep 17 00:00:00 2001 From: Richard Lora Date: Sun, 24 May 2026 01:03:32 +0000 Subject: [PATCH] fix(extractors): skip lockupViewModel items missing collectionThumbnailViewModel YouTube changed the thumbnail structure for some collection/playlist items. Use dig? and return nil to skip unparseable items instead of crashing. --- src/invidious/yt_backend/extractors.cr | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/invidious/yt_backend/extractors.cr b/src/invidious/yt_backend/extractors.cr index 04e00f20..2edc86bb 100644 --- a/src/invidious/yt_backend/extractors.cr +++ b/src/invidious/yt_backend/extractors.cr @@ -650,11 +650,13 @@ private module Parsers private def parse_internal(item_contents, author_fallback) playlist_id = item_contents["contentId"].as_s - thumbnail_view_model = item_contents.dig( + thumbnail_view_model = item_contents.dig?( "contentImage", "collectionThumbnailViewModel", "primaryThumbnail", "thumbnailViewModel" ) + return nil if thumbnail_view_model.nil? + thumbnail = thumbnail_view_model.dig("image", "sources", 0, "url").as_s # This complicated sequences tries to extract the following data structure: