From 1fee636afae81b45ee433b54077b41b4baf291ea Mon Sep 17 00:00:00 2001 From: jonas-w Date: Thu, 3 Feb 2022 23:18:50 +0100 Subject: [PATCH] Added verification badge to video player and error with related_videos --- src/invidious/channels/about.cr | 4 ++-- src/invidious/videos.cr | 8 +++++++- src/invidious/views/watch.ecr | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/invidious/channels/about.cr b/src/invidious/channels/about.cr index f92681a7..6114e8af 100644 --- a/src/invidious/channels/about.cr +++ b/src/invidious/channels/about.cr @@ -63,7 +63,7 @@ def get_about_info(ucid, locale) : AboutChannel author_thumbnail = initdata["metadata"]["channelMetadataRenderer"]["avatar"]["thumbnails"][0]["url"].as_s ucid = initdata["metadata"]["channelMetadataRenderer"]["externalId"].as_s - + # Raises a KeyError on failure. banners = initdata["header"]["c4TabbedHeaderRenderer"]?.try &.["banner"]?.try &.["thumbnails"]? banner = banners.try &.[-1]?.try &.["url"].as_s? @@ -73,7 +73,7 @@ def get_about_info(ucid, locale) : AboutChannel # end badges = initdata["header"]["c4TabbedHeaderRenderer"]?.try &.["badges"]? if !badges.nil? - verified=true + verified = true end description = initdata["metadata"]["channelMetadataRenderer"]?.try &.["description"]?.try &.as_s? || "" description_html = HTML.escape(description) diff --git a/src/invidious/videos.cr b/src/invidious/videos.cr index 446e8e03..a5ecdeea 100644 --- a/src/invidious/videos.cr +++ b/src/invidious/videos.cr @@ -570,6 +570,10 @@ struct Video info["authorThumbnail"]?.try &.as_s || "" end + def author_verified : Bool + info["authorVerified"].as_bool + end + def sub_count_text : String info["subCountText"]?.try &.as_s || "-" end @@ -822,6 +826,7 @@ def parse_related_video(related : JSON::Any) : Hash(String, JSON::Any)? .try &.dig?("runs", 0) author = channel_info.try &.dig?("text") + authorVerified = channel_info.try &.dig?("ownerBadges") != nil ucid = channel_info.try { |ci| HelperExtractors.get_browse_id(ci) } # "4,088,033 views", only available on compact renderer @@ -845,6 +850,7 @@ def parse_related_video(related : JSON::Any) : Hash(String, JSON::Any)? "length_seconds" => JSON::Any.new(length || "0"), "view_count" => JSON::Any.new(view_count || "0"), "short_view_count" => JSON::Any.new(short_view_count || "0"), + "author_verified" => JSON::Any.new(authorVerified), } end @@ -1037,7 +1043,7 @@ def extract_video_info(video_id : String, proxy_region : String? = nil, context_ author_info = video_secondary_renderer.try &.dig?("owner", "videoOwnerRenderer") author_thumbnail = author_info.try &.dig?("thumbnail", "thumbnails", 0, "url") - + params["authorVerified"] = JSON::Any.new(author_info.try &.["badges"]? != nil) params["authorThumbnail"] = JSON::Any.new(author_thumbnail.try &.as_s || "") params["subCountText"] = JSON::Any.new(author_info.try &.["subscriberCountText"]? diff --git a/src/invidious/views/watch.ecr b/src/invidious/views/watch.ecr index 2e0aee99..8422fce0 100644 --- a/src/invidious/views/watch.ecr +++ b/src/invidious/views/watch.ecr @@ -240,7 +240,7 @@ we're going to need to do it here in order to allow for translations. <% if !video.author_thumbnail.empty? %> <% end %> - <%= author %> + <%= author %><% if video.author_verified %><% end %>