From d03a62641f20a8dfd15fc9fe50373a5e75ee3d6e Mon Sep 17 00:00:00 2001
From: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>
Date: Wed, 15 Feb 2023 00:20:45 -0500
Subject: [PATCH 1/6] Add support for custom emojis in comments
---
src/invidious/comments.cr | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/invidious/comments.cr b/src/invidious/comments.cr
index 357a461c..5749248e 100644
--- a/src/invidious/comments.cr
+++ b/src/invidious/comments.cr
@@ -182,7 +182,11 @@ def fetch_youtube_comments(id, cursor, format, locale, thin_mode, region, sort_b
json.field "contentHtml", content_html
json.field "isPinned", (node_comment["pinnedCommentBadge"]? != nil)
-
+ json.field "isMember", (node_comment["sponsorCommentBadge"]? != nil)
+ if node_comment["sponsorCommentBadge"]?
+ # Member icon thumbnails always have one object and there's only ever the url property in it
+ json.field "memberIconUrl", node_comment["sponsorCommentBadge"]["sponsorCommentBadgeRenderer"]["customBadge"]["thumbnails"][0]["url"].to_s
+ end
json.field "published", published.to_unix
json.field "publishedText", translate(locale, "`x` ago", recode_date(published, locale))
@@ -674,6 +678,14 @@ def content_to_comment_html(content, video_id : String? = "")
text = "#{text}" if run["bold"]?
text = "#{text}" if run["strikethrough"]?
text = "#{text}" if run["italics"]?
+ if emojiImage = run.dig?("emoji", "image")
+ emojiAlt = emojiImage.dig?("accessibility", "accessibilityData", "label").try &.as_s || text
+ emojiThumb = emojiImage["thumbnails"][0]
+ emojiUrl = "/ggpht#{URI.parse(emojiThumb["url"].as_s).request_target}"
+ emojiWidth = emojiThumb["width"]
+ emojiHeight = emojiThumb["height"]
+ text = ""
+ end
text
end
From 76ad4e802603f82fe45d522a9c268e972d428a75 Mon Sep 17 00:00:00 2001
From: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>
Date: Thu, 16 Feb 2023 14:12:56 -0500
Subject: [PATCH 2/6] show member icon, hide deleted emojis, fix non-custom
emojis
---
locales/en-US.json | 1 +
src/invidious/comments.cr | 29 ++++++++++++++++++++++-------
2 files changed, 23 insertions(+), 7 deletions(-)
diff --git a/locales/en-US.json b/locales/en-US.json
index a5c16fd7..5bbf6db6 100644
--- a/locales/en-US.json
+++ b/locales/en-US.json
@@ -405,6 +405,7 @@
"YouTube comment permalink": "YouTube comment permalink",
"permalink": "permalink",
"`x` marked it with a ❤": "`x` marked it with a ❤",
+ "Member": "Member",
"Audio mode": "Audio mode",
"Video mode": "Video mode",
"Playlists": "Playlists",
diff --git a/src/invidious/comments.cr b/src/invidious/comments.cr
index 5749248e..f1942ceb 100644
--- a/src/invidious/comments.cr
+++ b/src/invidious/comments.cr
@@ -328,11 +328,21 @@ def template_youtube_comments(comments, locale, thin_mode, is_replies = false)
end
author_name = HTML.escape(child["author"].as_s)
+ member_icon = ""
if child["verified"]?.try &.as_bool && child["authorIsChannelOwner"]?.try &.as_bool
author_name += " "
elsif child["verified"]?.try &.as_bool
author_name += " "
end
+ if child["isMember"]?.try &.as_bool
+ member_icon = ""
+ end
html << <<-END_HTML
#{child["contentHtml"]}
END_HTML @@ -678,13 +689,17 @@ def content_to_comment_html(content, video_id : String? = "") text = "#{text}" if run["bold"]? text = "#{child["contentHtml"]}
END_HTML @@ -689,12 +688,21 @@ def content_to_comment_html(content, video_id : String? = "") text = "#{text}" if run["bold"]? text = "