Parse links in the comments
Co-Authored-By: Samantaz Fox <coding@samantaz.fr>
This commit is contained in:
parent
de2287963f
commit
fbf07e18aa
3 changed files with 22 additions and 10 deletions
|
@ -64,15 +64,15 @@ def content_to_comment_html(content, video_id : String? = "")
|
||||||
# check for custom emojis
|
# check for custom emojis
|
||||||
if run["emoji"]?
|
if run["emoji"]?
|
||||||
if run["emoji"]["isCustomEmoji"]?.try &.as_bool
|
if run["emoji"]["isCustomEmoji"]?.try &.as_bool
|
||||||
if emojiImage = run.dig?("emoji", "image")
|
if emoji_image = run.dig?("emoji", "image")
|
||||||
emojiAlt = emojiImage.dig?("accessibility", "accessibilityData", "label").try &.as_s || text
|
emoji_alt = emoji_image.dig?("accessibility", "accessibilityData", "label").try &.as_s || text
|
||||||
emojiThumb = emojiImage["thumbnails"][0]
|
emoji_thumb = emoji_image["thumbnails"][0]
|
||||||
text = String.build do |str|
|
text = String.build do |str|
|
||||||
str << %(<img alt=") << emojiAlt << "\" "
|
str << %(<img alt=") << emoji_alt << "\" "
|
||||||
str << %(src="/ggpht) << URI.parse(emojiThumb["url"].as_s).request_target << "\" "
|
str << %(src="/ggpht) << URI.parse(emoji_thumb["url"].as_s).request_target << "\" "
|
||||||
str << %(title=") << emojiAlt << "\" "
|
str << %(title=") << emoji_alt << "\" "
|
||||||
str << %(width=") << emojiThumb["width"] << "\" "
|
str << %(width=") << emoji_thumb["width"] << "\" "
|
||||||
str << %(height=") << emojiThumb["height"] << "\" "
|
str << %(height=") << emoji_thumb["height"] << "\" "
|
||||||
str << %(class="channel-emoji" />)
|
str << %(class="channel-emoji" />)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
|
|
@ -144,7 +144,7 @@ module Invidious::Comments
|
||||||
toolbar_mutation = mutations.find { |i| i.dig?("entityKey") == toolbar_key }
|
toolbar_mutation = mutations.find { |i| i.dig?("entityKey") == toolbar_key }
|
||||||
if !comment_mutation.nil? && !toolbar_mutation.nil?
|
if !comment_mutation.nil? && !toolbar_mutation.nil?
|
||||||
# todo parse styleRuns, commandRuns and attachmentRuns for comments
|
# todo parse styleRuns, commandRuns and attachmentRuns for comments
|
||||||
html_content = HTML.escape(comment_mutation.dig("payload", "commentEntityPayload", "properties", "content", "content").as_s)
|
html_content = parse_description(comment_mutation.dig("payload", "commentEntityPayload", "properties", "content"), id)
|
||||||
comment_author = comment_mutation.dig("payload", "commentEntityPayload", "author")
|
comment_author = comment_mutation.dig("payload", "commentEntityPayload", "author")
|
||||||
json.field "authorId", comment_author["channelId"].as_s
|
json.field "authorId", comment_author["channelId"].as_s
|
||||||
json.field "authorUrl", "/channel/#{comment_author["channelId"].as_s}"
|
json.field "authorUrl", "/channel/#{comment_author["channelId"].as_s}"
|
||||||
|
|
|
@ -7,7 +7,19 @@ private def copy_string(str : String::Builder, iter : Iterator, count : Int) : I
|
||||||
cp = iter.next
|
cp = iter.next
|
||||||
break if cp.is_a?(Iterator::Stop)
|
break if cp.is_a?(Iterator::Stop)
|
||||||
|
|
||||||
|
if cp == 0x26 # Ampersand (&)
|
||||||
|
str << "&"
|
||||||
|
elsif cp == 0x27 # Single quote (')
|
||||||
|
str << "'"
|
||||||
|
elsif cp == 0x22 # Double quote (")
|
||||||
|
str << """
|
||||||
|
elsif cp == 0x3C # Less-than (<)
|
||||||
|
str << "<"
|
||||||
|
elsif cp == 0x3E # Greater than (>)
|
||||||
|
str << ">"
|
||||||
|
else
|
||||||
str << cp.chr
|
str << cp.chr
|
||||||
|
end
|
||||||
|
|
||||||
# A codepoint from the SMP counts twice
|
# A codepoint from the SMP counts twice
|
||||||
copied += 1 if cp > 0xFFFF
|
copied += 1 if cp > 0xFFFF
|
||||||
|
|
Loading…
Reference in a new issue