diff options
| author | ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com> | 2023-02-19 12:46:46 -0500 |
|---|---|---|
| committer | ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com> | 2023-02-19 12:46:46 -0500 |
| commit | bc5d81fe60b324459ac428f4269316bd4cfdc3a1 (patch) | |
| tree | ee0252231ffc9d76a592133e45bbd81d23287c6c /src | |
| parent | 76ad4e802603f82fe45d522a9c268e972d428a75 (diff) | |
| download | invidious-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.cr | 36 |
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 += " <i class=\"icon ion ion-md-checkmark-circle\"></i>" elsif child["verified"]?.try &.as_bool author_name += " <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 = "" |
