From fe7355126ad08ea0c02f5bfb1f6bc4c3a951c115 Mon Sep 17 00:00:00 2001 From: "mk-pmb feat. Emilien Devos" <4016501+unixfox@users.noreply.github.com> Date: Fri, 11 Apr 2025 15:22:00 +0200 Subject: [PATCH] Try to detect an "unlisted" badge for videos. --- src/invidious/yt_backend/extractors_utils.cr | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/invidious/yt_backend/extractors_utils.cr b/src/invidious/yt_backend/extractors_utils.cr index c83a2de5..f7b58430 100644 --- a/src/invidious/yt_backend/extractors_utils.cr +++ b/src/invidious/yt_backend/extractors_utils.cr @@ -68,6 +68,23 @@ rescue ex return false end +def has_unlisted_badge?(badges : JSON::Any?) + return false if badges.nil? + + badges.as_a.each do |badge| + icon_type = badge.dig("metadataBadgeRenderer", "icon", "iconType").as_s + + return true if icon_type == "PRIVACY_UNLISTED" + end + + return false +rescue ex + LOGGER.debug("Unable to parse owner badges. Got exception: #{ex.message}") + LOGGER.trace("Owner badges data: #{badges.to_json}") + + return false +end + # This function extracts SearchVideo items from a Category. # Categories are commonly returned in search results and trending pages. def extract_category(category : Category) : Array(SearchVideo)