Add error message when comments are disabled

This commit is contained in:
syeopite 2023-08-08 21:49:06 -07:00
parent 97c4165f55
commit ab2e7a0600
No known key found for this signature in database
GPG Key ID: A73C186DA3955A1A
7 changed files with 52 additions and 11 deletions

View File

@ -797,3 +797,7 @@ h1, h2, h3, h4, h5, p,
#download_widget { #download_widget {
width: 100%; width: 100%;
} }
#comments-turned-off-on-video-message > p, #comments-disabled-message > p {
text-align: center;
}

View File

@ -53,6 +53,10 @@ function show_youtube_replies(event) {
} }
function get_youtube_comments() { function get_youtube_comments() {
if (!video_data.comments_enabled) {
return;
};
var comments = document.getElementById('comments'); var comments = document.getElementById('comments');
var fallback = comments.innerHTML; var fallback = comments.innerHTML;

View File

@ -186,8 +186,5 @@ addEventListener('load', function (e) {
get_youtube_comments(); get_youtube_comments();
} else if (video_data.params.comments[1] === 'reddit') { } else if (video_data.params.comments[1] === 'reddit') {
get_reddit_comments(); get_reddit_comments();
} else {
var comments = document.getElementById('comments');
comments.innerHTML = '';
} }
}); });

View File

@ -213,6 +213,8 @@
"View Reddit comments": "View Reddit comments", "View Reddit comments": "View Reddit comments",
"Hide replies": "Hide replies", "Hide replies": "Hide replies",
"Show replies": "Show replies", "Show replies": "Show replies",
"youtube_comments_disabled_text": "Comments are turned off on this video",
"invidious_comments_disabled_text": "Comments are hidden as per configuration",
"Incorrect password": "Incorrect password", "Incorrect password": "Incorrect password",
"Wrong answer": "Wrong answer", "Wrong answer": "Wrong answer",
"Erroneous CAPTCHA": "Erroneous CAPTCHA", "Erroneous CAPTCHA": "Erroneous CAPTCHA",

View File

@ -272,6 +272,11 @@ struct Video
} }
end end
# Returns true if comments are enabled on the video
def comments?
return info["commentsEnabled"].as_bool
end
# Macros defining getters/setters for various types of data # Macros defining getters/setters for various types of data
private macro getset_string(name) private macro getset_string(name)

View File

@ -378,6 +378,20 @@ def parse_video_info(video_id : String, player_response : Hash(String, JSON::Any
.try &.as_s.split(" ", 2)[0] .try &.as_s.split(" ", 2)[0]
end end
# Comments enabled?
comments_enabled = true
# When comments are enabled the primary results should contain either the comments-entry-point
# or comment-item-section section
if primary_results
section = primary_results.as_a.find { |s| s.dig?("itemSectionRenderer", "sectionIdentifier") == "comment-item-section" }
# messageRenderer should say "Comments are turned off."
if section && section.dig?("itemSectionRenderer", "contents", 0, "messageRenderer")
comments_enabled = false
end
end
# Return data # Return data
if live_now if live_now
@ -422,6 +436,8 @@ def parse_video_info(video_id : String, player_response : Hash(String, JSON::Any
"authorThumbnail" => JSON::Any.new(author_thumbnail.try &.as_s || ""), "authorThumbnail" => JSON::Any.new(author_thumbnail.try &.as_s || ""),
"authorVerified" => JSON::Any.new(author_verified || false), "authorVerified" => JSON::Any.new(author_verified || false),
"subCountText" => JSON::Any.new(subs_text || "-"), "subCountText" => JSON::Any.new(subs_text || "-"),
"commentsEnabled" => JSON::Any.new(comments_enabled),
} }
return params return params

View File

@ -63,6 +63,7 @@ we're going to need to do it here in order to allow for translations.
"preferences" => preferences, "preferences" => preferences,
"premiere_timestamp" => video.premiere_timestamp.try &.to_unix, "premiere_timestamp" => video.premiere_timestamp.try &.to_unix,
"vr" => video.is_vr, "vr" => video.is_vr,
"comments_enabled" => video.comments?,
"projection_type" => video.projection_type, "projection_type" => video.projection_type,
"local_disabled" => CONFIG.disabled?("local"), "local_disabled" => CONFIG.disabled?("local"),
"support_reddit" => true "support_reddit" => true
@ -289,14 +290,26 @@ we're going to need to do it here in order to allow for translations.
<% end %> <% end %>
<div id="comments" class="comments"> <div id="comments" class="comments">
<% if nojs %> <% if (params.comments <=> ["", ""]) == 0 %>
<%= comment_html %> <div id="comments-disabled-message" class="h-box v-box">
<p><b><%=translate(locale, "invidious_comments_disabled_text")%></b></p>
</div>
<% else %> <% else %>
<noscript> <% if video.comments? %>
<a href="/watch?<%= env.params.query %>&nojs=1"> <% if nojs %>
<%= translate(locale, "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.") %> <%= comment_html %>
</a> <% else %>
</noscript> <noscript>
<a href="/watch?<%= env.params.query %>&nojs=1">
<%= translate(locale, "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.") %>
</a>
</noscript>
<% end %>
<% else %>
<div id="comments-turned-off-on-video-message" class="h-box v-box">
<p><b><%=translate(locale, "youtube_comments_disabled_text")%></b></p>
</div>
<% end %>
<% end %> <% end %>
</div> </div>
</div> </div>