diff --git a/src/invidious/channels/about.cr b/src/invidious/channels/about.cr
index 6114e8af..97b45df5 100644
--- a/src/invidious/channels/about.cr
+++ b/src/invidious/channels/about.cr
@@ -42,7 +42,7 @@ def get_about_info(ucid, locale) : AboutChannel
if !initdata.has_key?("metadata")
auto_generated = true
end
- verified = false
+
if auto_generated
author = initdata["header"]["interactiveTabbedHeaderRenderer"]["title"]["simpleText"].as_s
author_url = initdata["microformat"]["microformatDataRenderer"]["urlCanonical"].as_s
@@ -71,10 +71,9 @@ def get_about_info(ucid, locale) : AboutChannel
# if banner.includes? "channels/c4/default_banner"
# banner = nil
# end
- badges = initdata["header"]["c4TabbedHeaderRenderer"]?.try &.["badges"]?
- if !badges.nil?
- verified = true
- end
+ author_verified_badges = initdata["header"]?.try &.["c4TabbedHeaderRenderer"]?.try &.["badges"]?
+
+ author_verified = (author_verified_badges && author_verified_badges.size > 0)
description = initdata["metadata"]["channelMetadataRenderer"]?.try &.["description"]?.try &.as_s? || ""
description_html = HTML.escape(description)
@@ -132,7 +131,7 @@ def get_about_info(ucid, locale) : AboutChannel
is_family_friendly: is_family_friendly,
allowed_regions: allowed_regions,
tabs: tabs,
- verified: verified,
+ verified: author_verified || false,
)
end
diff --git a/src/invidious/channels/channels.cr b/src/invidious/channels/channels.cr
index e0459cc3..9e701043 100644
--- a/src/invidious/channels/channels.cr
+++ b/src/invidious/channels/channels.cr
@@ -21,6 +21,7 @@ struct ChannelVideo
property live_now : Bool = false
property premiere_timestamp : Time? = nil
property views : Int64? = nil
+ property author_verified : Bool #TODO currently a dummy
def to_json(locale, json : JSON::Builder)
json.object do
@@ -218,6 +219,7 @@ def fetch_channel(ucid, pull_all_videos : Bool)
live_now: live_now,
premiere_timestamp: premiere_timestamp,
views: views,
+ author_verified: false, #TODO dummy for components/item.ecr
})
LOGGER.trace("fetch_channel: #{ucid} : video #{video_id} : Updating or inserting video")
@@ -255,6 +257,7 @@ def fetch_channel(ucid, pull_all_videos : Bool)
live_now: video.live_now,
premiere_timestamp: video.premiere_timestamp,
views: video.views,
+ author_verified: false, #TODO dummy for components/item.ecr
}) }
videos.each do |video|
diff --git a/src/invidious/comments.cr b/src/invidious/comments.cr
index 6febbe45..7d52b918 100644
--- a/src/invidious/comments.cr
+++ b/src/invidious/comments.cr
@@ -144,8 +144,8 @@ def fetch_youtube_comments(id, cursor, format, locale, thin_mode, region, sort_b
content_html = node_comment["contentText"]?.try { |t| parse_content(t) } || ""
author = node_comment["authorText"]?.try &.["simpleText"]? || ""
- verified = node_comment["authorCommentBadge"]? != nil
- json.field "verified", verified
+ verified = (node_comment["authorCommentBadge"]? != nil)
+ json.field "verified", (verified || false)
json.field "author", author
json.field "authorThumbnails" do
json.array do
@@ -329,7 +329,7 @@ def template_youtube_comments(comments, locale, thin_mode, is_replies = false)
end
author_name = HTML.escape(child["author"].as_s)
- if child["verified"].as_bool
+ if child["verified"]?.try &.as_bool
author_name += ""
end
html << <<-END_HTML
diff --git a/src/invidious/helpers/serialized_yt_data.cr b/src/invidious/helpers/serialized_yt_data.cr
index bfbc237c..186bca25 100644
--- a/src/invidious/helpers/serialized_yt_data.cr
+++ b/src/invidious/helpers/serialized_yt_data.cr
@@ -12,6 +12,7 @@ struct SearchVideo
property live_now : Bool
property premium : Bool
property premiere_timestamp : Time?
+ property author_verified : Bool
def to_xml(auto_generated, query_params, xml : XML::Builder)
query_params["v"] = self.id
@@ -129,6 +130,7 @@ struct SearchPlaylist
property video_count : Int32
property videos : Array(SearchPlaylistVideo)
property thumbnail : String?
+ property author_verified : Bool
def to_json(locale : String?, json : JSON::Builder)
json.object do
@@ -140,7 +142,7 @@ struct SearchPlaylist
json.field "author", self.author
json.field "authorId", self.ucid
json.field "authorUrl", "/channel/#{self.ucid}"
-
+ json.field "authorVerified", self.author_verified
json.field "videoCount", self.video_count
json.field "videos" do
json.array do
@@ -182,6 +184,7 @@ struct SearchChannel
property video_count : Int32
property description_html : String
property auto_generated : Bool
+ property author_verified : Bool
def to_json(locale : String?, json : JSON::Builder)
json.object do
@@ -189,7 +192,7 @@ struct SearchChannel
json.field "author", self.author
json.field "authorId", self.ucid
json.field "authorUrl", "/channel/#{self.ucid}"
-
+ json.field "authorVerified", self.author_verified
json.field "authorThumbnails" do
json.array do
qualities = {32, 48, 76, 100, 176, 512}
diff --git a/src/invidious/mixes.cr b/src/invidious/mixes.cr
index 3f342b92..b578e3d9 100644
--- a/src/invidious/mixes.cr
+++ b/src/invidious/mixes.cr
@@ -8,6 +8,10 @@ struct MixVideo
property length_seconds : Int32
property index : Int32
property rdid : String
+
+ def author_verified
+ false #TODO dummy
+ end
end
struct Mix
diff --git a/src/invidious/playlists.cr b/src/invidious/playlists.cr
index 88888a65..a17766e3 100644
--- a/src/invidious/playlists.cr
+++ b/src/invidious/playlists.cr
@@ -234,6 +234,10 @@ struct InvidiousPlaylist
0_i64
end
+ def author_verified
+ false # TODO dummy for components/item.ecr
+ end
+
def description_html
HTML.escape(self.description)
end
@@ -252,6 +256,7 @@ def create_playlist(title, privacy, user)
updated: Time.utc,
privacy: privacy,
index: [] of Int64,
+ author_verified: false, # TODO dummy for components/item.ecr
})
Invidious::Database::Playlists.insert(playlist)
@@ -270,6 +275,7 @@ def subscribe_playlist(user, playlist)
updated: playlist.updated,
privacy: PlaylistPrivacy::Private,
index: [] of Int64,
+ author_verified: false, # TODO dummy for components/item.ecr
})
Invidious::Database::Playlists.insert(playlist)
diff --git a/src/invidious/routes/feeds.cr b/src/invidious/routes/feeds.cr
index f7f7b426..6d1f098f 100644
--- a/src/invidious/routes/feeds.cr
+++ b/src/invidious/routes/feeds.cr
@@ -182,6 +182,7 @@ module Invidious::Routes::Feeds
paid: false,
premium: false,
premiere_timestamp: nil,
+ author_verified: false, #TODO real value
})
end
@@ -414,6 +415,7 @@ module Invidious::Routes::Feeds
live_now: video.live_now,
premiere_timestamp: video.premiere_timestamp,
views: video.views,
+ author_verified: false, #TODO dummy for components/item.ecr
})
was_insert = Invidious::Database::ChannelVideos.insert(video, with_premiere_timestamp: true)
diff --git a/src/invidious/videos.cr b/src/invidious/videos.cr
index 69468b5e..c52cbe58 100644
--- a/src/invidious/videos.cr
+++ b/src/invidious/videos.cr
@@ -1047,7 +1047,9 @@ 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)
+ author_verified_badge = author_info.try &.["badges"]?
+
+ params["authorVerified"] = JSON::Any.new((author_verified_badge && author_verified_badge.size > 0) || false)
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/components/item.ecr b/src/invidious/views/components/item.ecr
index 5a93d802..db003146 100644
--- a/src/invidious/views/components/item.ecr
+++ b/src/invidious/views/components/item.ecr
@@ -8,7 +8,7 @@
"/>
<% end %>
-
<%= HTML.escape(item.author) %>
+<%= HTML.escape(item.author) %><% if !item.author_verified.nil? && item.author_verified %><% end %>
<%= translate_count(locale, "generic_subscribers_count", item.subscriber_count, NumberFormatting::Separator) %>
<% if !item.auto_generated %><%= translate_count(locale, "generic_videos_count", item.video_count, NumberFormatting::Separator) %>
<% end %> @@ -30,7 +30,7 @@<%= HTML.escape(item.title) %>
-<%= HTML.escape(item.author) %>
+<%= HTML.escape(item.author) %><% if !item.author_verified.nil? && item.author_verified %><% end %>
<% when MixVideo %> @@ -45,7 +45,7 @@<%= HTML.escape(item.title) %>
-<%= HTML.escape(item.author) %>
+<%= HTML.escape(item.author) %><% if !item.author_verified.nil? && item.author_verified %><% end %>
<% when PlaylistVideo %> @@ -142,7 +142,7 @@