summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>2023-02-19 12:46:46 -0500
committerChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>2023-02-19 12:46:46 -0500
commitbc5d81fe60b324459ac428f4269316bd4cfdc3a1 (patch)
treeee0252231ffc9d76a592133e45bbd81d23287c6c /src
parent76ad4e802603f82fe45d522a9c268e972d428a75 (diff)
downloadinvidious-bc5d81fe60b324459ac428f4269316bd4cfdc3a1.tar.gz
invidious-bc5d81fe60b324459ac428f4269316bd4cfdc3a1.tar.bz2
invidious-bc5d81fe60b324459ac428f4269316bd4cfdc3a1.zip
use string builder to create images
change member to sponsor
Diffstat (limited to 'src')
-rw-r--r--src/invidious/comments.cr36
1 files changed, 22 insertions, 14 deletions
diff --git a/src/invidious/comments.cr b/src/invidious/comments.cr
index f1942ceb..b866b6ef 100644
--- a/src/invidious/comments.cr
+++ b/src/invidious/comments.cr
@@ -182,10 +182,10 @@ 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)
+ json.field "isSponsor", (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
+ # Sponsor icon thumbnails always have one object and there's only ever the url property in it
+ json.field "sponsorIconUrl", node_comment.dig("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))
@@ -328,20 +328,19 @@ def template_youtube_comments(comments, locale, thin_mode, is_replies = false)
end
author_name = HTML.escape(child["author"].as_s)
- member_icon = ""
+ sponsor_icon = ""
if child["verified"]?.try &.as_bool && child["authorIsChannelOwner"]?.try &.as_bool
author_name += "&nbsp;<i class=\"icon ion ion-md-checkmark-circle\"></i>"
elsif child["verified"]?.try &.as_bool
author_name += "&nbsp;<i class=\"icon ion ion-md-checkmark\"></i>"
end
- if child["isMember"]?.try &.as_bool
- member_icon = "<img
- alt=\"\"
- src=\"/ggpht#{URI.parse(child["memberIconUrl"].as_s).request_target}\"
- width=\"16\"
- height=\"16\"
- title=\"#{translate(locale, "Member")}\"
- />"
+ if child["isSponsor"].as_bool
+ sponsor_icon = String.build do |str|
+ str << %(<img alt="")
+ str << %(src="/ggpht) << URI.parse(child["sponsorIconUrl"].as_s).request_target << '"'
+ str << %(title=") << translate(locale, "Channel Sponsor") << '"'
+ str << %(width="16" height="16"/>)
+ end
end
html << <<-END_HTML
<div class="pure-g" style="width:100%">
@@ -353,7 +352,7 @@ def template_youtube_comments(comments, locale, thin_mode, is_replies = false)
<b>
<a class="#{child["authorIsChannelOwner"] == true ? "channel-owner" : ""}" href="#{child["authorUrl"]}">#{author_name}</a>
</b>
- #{member_icon}
+ #{sponsor_icon}
<p style="white-space:pre-wrap">#{child["contentHtml"]}</p>
END_HTML
@@ -689,12 +688,21 @@ def content_to_comment_html(content, video_id : String? = "")
text = "<b>#{text}</b>" if run["bold"]?
text = "<s>#{text}</s>" if run["strikethrough"]?
text = "<i>#{text}</i>" if run["italics"]?
+
+ # check for custom emojis
if run["emoji"]?
if run["emoji"]["isCustomEmoji"]?.try &.as_bool
if emojiImage = run.dig?("emoji", "image")
emojiAlt = emojiImage.dig?("accessibility", "accessibilityData", "label").try &.as_s || text
emojiThumb = emojiImage["thumbnails"][0]
- text = "<img alt=\"#{emojiAlt}\" src=\"/ggpht#{URI.parse(emojiThumb["url"].as_s).request_target}\" title=\"#{emojiAlt}\" width=\"#{emojiThumb["width"]}\" height=\"#{emojiThumb["height"]}\" style=\"margin-right:2px;margin-left:2px;\"/>"
+ text = String.build do |str|
+ str << %(<img alt=") << emojiAlt << '"'
+ str << %(src="/ggpht) << URI.parse(emojiThumb["url"].as_s).request_target << '"'
+ str << %(title=") << emojiAlt << '"'
+ str << %(width=") << emojiThumb["width"] << '"'
+ str << %(height=") << emojiThumb["height"] << '"'
+ str << %( style="margin-right:2px;margin-left:2px;"/>)
+ end
else
# Hide deleted channel emoji
text = ""