|
|
|
@ -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"]
|
|
|
|
|