diff options
| author | Omar Roth <omarroth@hotmail.com> | 2018-08-30 20:06:08 -0500 |
|---|---|---|
| committer | Omar Roth <omarroth@hotmail.com> | 2018-08-30 20:06:08 -0500 |
| commit | b3f90594527ae007594b95a780c0bf59021972a2 (patch) | |
| tree | f3f7699f13bbf2d9ef045c48e6bedf3946d9e892 | |
| parent | 917d220623e3395892ad3f146062825ff499516b (diff) | |
| download | invidious-b3f90594527ae007594b95a780c0bf59021972a2.tar.gz invidious-b3f90594527ae007594b95a780c0bf59021972a2.tar.bz2 invidious-b3f90594527ae007594b95a780c0bf59021972a2.zip | |
Add comment formatting
| -rw-r--r-- | src/invidious.cr | 38 | ||||
| -rw-r--r-- | src/invidious/comments.cr | 2 |
2 files changed, 35 insertions, 5 deletions
diff --git a/src/invidious.cr b/src/invidious.cr index 799dd1a4..16e41d80 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -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"] diff --git a/src/invidious/comments.cr b/src/invidious/comments.cr index 983a3e92..213ea889 100644 --- a/src/invidious/comments.cr +++ b/src/invidious/comments.cr @@ -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> |
