Add comment formatting
This commit is contained in:
parent
917d220623
commit
b3f9059452
|
@ -1813,9 +1813,38 @@ get "/api/v1/comments/:id" do |env|
|
|||
node_comment = node["commentRenderer"]
|
||||
end
|
||||
|
||||
content_text = node_comment["contentText"]["simpleText"]?.try &.as_s.rchop('\ufeff')
|
||||
content_text ||= node_comment["contentText"]["runs"].as_a.map { |comment| comment["text"] }
|
||||
.join("").rchop('\ufeff')
|
||||
contentHtml = node_comment["contentText"]["simpleText"]?.try &.as_s.rchop('\ufeff')
|
||||
contentHtml ||= node_comment["contentText"]["runs"].as_a.map do |run|
|
||||
text = run["text"].as_s
|
||||
|
||||
if run["text"] == "\n"
|
||||
text = "<br>"
|
||||
end
|
||||
|
||||
if run["bold"]?
|
||||
text = "<b>#{text}</b>"
|
||||
end
|
||||
|
||||
if run["italics"]?
|
||||
text = "<i>#{text}</i>"
|
||||
end
|
||||
|
||||
if run["navigationEndpoint"]?
|
||||
url = run["navigationEndpoint"]["urlEndpoint"]?.try &.["url"].as_s
|
||||
if url
|
||||
url = URI.parse(url)
|
||||
url = HTTP::Params.parse(url.query.not_nil!)["q"]
|
||||
else
|
||||
url = run["navigationEndpoint"]["commandMetadata"]?.try &.["webCommandMetadata"]["url"].as_s
|
||||
end
|
||||
|
||||
text = %(<a href="#{url}">#{text}</a>)
|
||||
end
|
||||
|
||||
text
|
||||
end.join.rchop('\ufeff')
|
||||
|
||||
content, contentHtml = html_to_description(contentHtml)
|
||||
|
||||
author = node_comment["authorText"]?.try &.["simpleText"]
|
||||
author ||= ""
|
||||
|
@ -1843,7 +1872,8 @@ get "/api/v1/comments/:id" do |env|
|
|||
|
||||
published = decode_date(node_comment["publishedTimeText"]["runs"][0]["text"].as_s.rchop(" (edited)"))
|
||||
|
||||
json.field "content", content_text
|
||||
json.field "content", content
|
||||
json.field "contentHtml", contentHtml
|
||||
json.field "published", published.epoch
|
||||
json.field "likeCount", node_comment["likeCount"]
|
||||
json.field "commentId", node_comment["commentId"]
|
||||
|
|
|
@ -113,7 +113,7 @@ def template_youtube_comments(comments)
|
|||
- #{recode_date(Time.epoch(child["published"].as_i64))} ago
|
||||
</p>
|
||||
<div>
|
||||
#{child["content"]}
|
||||
<p style="white-space:pre-wrap">#{child["contentHtml"]}</p>
|
||||
#{replies_html}
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Reference in a new issue