diff --git a/assets/css/default.css b/assets/css/default.css index e449df229..0f7e9eeea 100644 --- a/assets/css/default.css +++ b/assets/css/default.css @@ -5,6 +5,39 @@ padding: 1px 6px; } +.creator-heart-container { + display: inline-block; + padding: 0px 7px 6px 0px; + margin: 0px -7px -4px 0px; +} + +.creator-heart { + position: relative; + width: 16px; + height: 16px; + border: 2px none; +} + +.creator-heart-background-hearted { + width: 16px; + height: 16px; + padding: 0px; + position: relative; +} + +.creator-heart-small-hearted { + position: absolute; + right: -7px; + bottom: -4px; +} + +.creator-heart-small-container { + position: relative; + width: 13px; + height: 13px; + color: rgb(255, 0, 0); +} + .h-box { padding-left: 1em; padding-right: 1em; diff --git a/locales/en-US.json b/locales/en-US.json index ccc014584..20fc019e3 100644 --- a/locales/en-US.json +++ b/locales/en-US.json @@ -270,5 +270,9 @@ "News": "News", "Movies": "Movies", "Download": "Download", - "Download as: ": "Download as: " + "Download as: ": "Download as: ", + "%A %B %-d, %Y": "%A %B %-d, %Y", + "(edited)": "(edited)", + "Youtube permalink of the comment": "Youtube permalink of the comment", + "`x` marked it with a ❤": "`x` marked it with a ❤" } diff --git a/src/invidious/comments.cr b/src/invidious/comments.cr index 34113c97d..e6d74d1da 100644 --- a/src/invidious/comments.cr +++ b/src/invidious/comments.cr @@ -211,7 +211,14 @@ def fetch_youtube_comments(id, continuation, proxies, format, locale) json.field "authorUrl", "" end - published = decode_date(node_comment["publishedTimeText"]["runs"][0]["text"].as_s.rchop(" (edited)")) + published_text = node_comment["publishedTimeText"]["runs"][0]["text"].as_s + published = decode_date(published_text.rchop(" (edited)")) + + if published_text.includes?(" (edited)") + json.field "isEdited", true + else + json.field "isEdited", false + end json.field "content", content json.field "contentHtml", content_html @@ -221,11 +228,12 @@ def fetch_youtube_comments(id, continuation, proxies, format, locale) json.field "commentId", node_comment["commentId"] json.field "authorIsChannelOwner", node_comment["authorIsChannelOwner"] - if node_comment["creatorHeart"]? + if node_comment["actionButtons"]["commentActionButtonsRenderer"]["creatorHeart"]? + hearth_data = node_comment["actionButtons"]["commentActionButtonsRenderer"]["creatorHeart"]["creatorHeartRenderer"]["creatorThumbnail"] json.field "creatorHeart" do json.object do - json.field "creatorThumbnail", node_comment["creatorHeart"]["creatorHeartRenderer"]["creatorThumbnail"]["thumbnails"][2] - json.field "creatorName", node_comment["creatorHeart"]["creatorHeartRenderer"]["creatorThumbnail"]["accessibility"]["accessibilityData"]["label"] + json.field "creatorThumbnail", hearth_data["thumbnails"][-1]["url"] + json.field "creatorName", hearth_data["accessibility"]["accessibilityData"]["label"] end end end @@ -341,11 +349,27 @@ def template_youtube_comments(comments, locale) #{child["author"]}

#{child["contentHtml"]}

- #{translate(locale, "`x` ago", recode_date(Time.unix(child["published"].as_i64)))} + #{translate(locale, "`x` ago", recode_date(Time.unix(child["published"].as_i64)))} #{child["isEdited"] == true ? translate(locale, "(edited)") : ""} | [YT] | #{number_with_separator(child["likeCount"])} + END_HTML + + if child["creatorHeart"]? + html += <<-END_HTML + +
+ +
+
🖤
+
+
+
+ END_HTML + end + + html += <<-END_HTML

#{replies_html}