forked from midou/invidious
Merge pull request #1609 from saltycrys/add-popular-enabled-option
Add `popular-enabled` option
This commit is contained in:
commit
b19524d56a
@ -168,13 +168,16 @@ end
|
|||||||
Invidious::Jobs.register Invidious::Jobs::RefreshChannelsJob.new(PG_DB, logger, config)
|
Invidious::Jobs.register Invidious::Jobs::RefreshChannelsJob.new(PG_DB, logger, config)
|
||||||
Invidious::Jobs.register Invidious::Jobs::RefreshFeedsJob.new(PG_DB, logger, config)
|
Invidious::Jobs.register Invidious::Jobs::RefreshFeedsJob.new(PG_DB, logger, config)
|
||||||
Invidious::Jobs.register Invidious::Jobs::SubscribeToFeedsJob.new(PG_DB, logger, config, HMAC_KEY)
|
Invidious::Jobs.register Invidious::Jobs::SubscribeToFeedsJob.new(PG_DB, logger, config, HMAC_KEY)
|
||||||
Invidious::Jobs.register Invidious::Jobs::PullPopularVideosJob.new(PG_DB)
|
|
||||||
Invidious::Jobs.register Invidious::Jobs::UpdateDecryptFunctionJob.new
|
Invidious::Jobs.register Invidious::Jobs::UpdateDecryptFunctionJob.new
|
||||||
|
|
||||||
if config.statistics_enabled
|
if config.statistics_enabled
|
||||||
Invidious::Jobs.register Invidious::Jobs::StatisticsRefreshJob.new(PG_DB, config, SOFTWARE)
|
Invidious::Jobs.register Invidious::Jobs::StatisticsRefreshJob.new(PG_DB, config, SOFTWARE)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if config.popular_enabled
|
||||||
|
Invidious::Jobs.register Invidious::Jobs::PullPopularVideosJob.new(PG_DB)
|
||||||
|
end
|
||||||
|
|
||||||
if config.captcha_key
|
if config.captcha_key
|
||||||
Invidious::Jobs.register Invidious::Jobs::BypassCaptchaJob.new(logger, config)
|
Invidious::Jobs.register Invidious::Jobs::BypassCaptchaJob.new(logger, config)
|
||||||
end
|
end
|
||||||
@ -1146,13 +1149,20 @@ end
|
|||||||
|
|
||||||
get "/feed/top" do |env|
|
get "/feed/top" do |env|
|
||||||
locale = LOCALES[env.get("preferences").as(Preferences).locale]?
|
locale = LOCALES[env.get("preferences").as(Preferences).locale]?
|
||||||
env.redirect "/"
|
|
||||||
|
message = translate(locale, "The Top feed has been removed from Invidious.")
|
||||||
|
templated "message"
|
||||||
end
|
end
|
||||||
|
|
||||||
get "/feed/popular" do |env|
|
get "/feed/popular" do |env|
|
||||||
locale = LOCALES[env.get("preferences").as(Preferences).locale]?
|
locale = LOCALES[env.get("preferences").as(Preferences).locale]?
|
||||||
|
|
||||||
|
if config.popular_enabled
|
||||||
templated "popular"
|
templated "popular"
|
||||||
|
else
|
||||||
|
message = translate(locale, "The Popular feed has been disabled by the administrator.")
|
||||||
|
templated "message"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
get "/feed/trending" do |env|
|
get "/feed/trending" do |env|
|
||||||
@ -2216,6 +2226,12 @@ get "/api/v1/popular" do |env|
|
|||||||
|
|
||||||
env.response.content_type = "application/json"
|
env.response.content_type = "application/json"
|
||||||
|
|
||||||
|
if !config.popular_enabled
|
||||||
|
error_message = {"error" => "Administrator has disabled this endpoint."}.to_json
|
||||||
|
env.response.status_code = 400
|
||||||
|
next error_message
|
||||||
|
end
|
||||||
|
|
||||||
JSON.build do |json|
|
JSON.build do |json|
|
||||||
json.array do
|
json.array do
|
||||||
popular_videos.each do |video|
|
popular_videos.each do |video|
|
||||||
@ -2229,7 +2245,8 @@ get "/api/v1/top" do |env|
|
|||||||
locale = LOCALES[env.get("preferences").as(Preferences).locale]?
|
locale = LOCALES[env.get("preferences").as(Preferences).locale]?
|
||||||
|
|
||||||
env.response.content_type = "application/json"
|
env.response.content_type = "application/json"
|
||||||
"[]"
|
env.response.status_code = 400
|
||||||
|
{"error" => "The Top feed has been removed from Invidious."}.to_json
|
||||||
end
|
end
|
||||||
|
|
||||||
get "/api/v1/channels/:ucid" do |env|
|
get "/api/v1/channels/:ucid" do |env|
|
||||||
|
@ -61,7 +61,7 @@ struct ConfigPreferences
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
struct Config
|
class Config
|
||||||
include YAML::Serializable
|
include YAML::Serializable
|
||||||
|
|
||||||
property channel_threads : Int32 # Number of threads to use for crawling videos from channels (for updating subscriptions)
|
property channel_threads : Int32 # Number of threads to use for crawling videos from channels (for updating subscriptions)
|
||||||
@ -72,6 +72,7 @@ struct Config
|
|||||||
property hmac_key : String? # HMAC signing key for CSRF tokens and verifying pubsub subscriptions
|
property hmac_key : String? # HMAC signing key for CSRF tokens and verifying pubsub subscriptions
|
||||||
property domain : String? # Domain to be used for links to resources on the site where an absolute URL is required
|
property domain : String? # Domain to be used for links to resources on the site where an absolute URL is required
|
||||||
property use_pubsub_feeds : Bool | Int32 = false # Subscribe to channels using PubSubHubbub (requires domain, hmac_key)
|
property use_pubsub_feeds : Bool | Int32 = false # Subscribe to channels using PubSubHubbub (requires domain, hmac_key)
|
||||||
|
property popular_enabled : Bool = true
|
||||||
property captcha_enabled : Bool = true
|
property captcha_enabled : Bool = true
|
||||||
property login_enabled : Bool = true
|
property login_enabled : Bool = true
|
||||||
property registration_enabled : Bool = true
|
property registration_enabled : Bool = true
|
||||||
|
@ -5,30 +5,24 @@ class Invidious::Routes::Home < Invidious::Routes::BaseRoute
|
|||||||
user = env.get? "user"
|
user = env.get? "user"
|
||||||
|
|
||||||
case preferences.default_home
|
case preferences.default_home
|
||||||
when ""
|
|
||||||
templated "empty"
|
|
||||||
when "Popular"
|
when "Popular"
|
||||||
templated "popular"
|
env.redirect "/feed/popular"
|
||||||
when "Trending"
|
when "Trending"
|
||||||
env.redirect "/feed/trending"
|
env.redirect "/feed/trending"
|
||||||
when "Subscriptions"
|
when "Subscriptions"
|
||||||
if user
|
if user
|
||||||
env.redirect "/feed/subscriptions"
|
env.redirect "/feed/subscriptions"
|
||||||
else
|
else
|
||||||
templated "popular"
|
env.redirect "/feed/popular"
|
||||||
end
|
end
|
||||||
when "Playlists"
|
when "Playlists"
|
||||||
if user
|
if user
|
||||||
env.redirect "/view_all_playlists"
|
env.redirect "/view_all_playlists"
|
||||||
else
|
else
|
||||||
templated "popular"
|
env.redirect "/feed/popular"
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
templated "empty"
|
templated "empty"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private def popular_videos
|
|
||||||
Jobs::PullPopularVideosJob::POPULAR_VIDEOS.get
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
@ -158,6 +158,10 @@ class Invidious::Routes::UserPreferences < Invidious::Routes::BaseRoute
|
|||||||
end
|
end
|
||||||
config.default_user_preferences.feed_menu = admin_feed_menu
|
config.default_user_preferences.feed_menu = admin_feed_menu
|
||||||
|
|
||||||
|
popular_enabled = env.params.body["popular_enabled"]?.try &.as(String)
|
||||||
|
popular_enabled ||= "off"
|
||||||
|
config.popular_enabled = popular_enabled == "on"
|
||||||
|
|
||||||
captcha_enabled = env.params.body["captcha_enabled"]?.try &.as(String)
|
captcha_enabled = env.params.body["captcha_enabled"]?.try &.as(String)
|
||||||
captcha_enabled ||= "off"
|
captcha_enabled ||= "off"
|
||||||
config.captcha_enabled = captcha_enabled == "on"
|
config.captcha_enabled = captcha_enabled == "on"
|
||||||
|
12
src/invidious/views/message.ecr
Normal file
12
src/invidious/views/message.ecr
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<% content_for "header" do %>
|
||||||
|
<meta name="description" content="<%= translate(locale, "An alternative front-end to YouTube") %>">
|
||||||
|
<title>
|
||||||
|
Invidious
|
||||||
|
</title>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<%= rendered "components/feed_menu" %>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<%= message %>
|
||||||
|
</p>
|
@ -238,6 +238,12 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="pure-control-group">
|
||||||
|
<label for="popular_enabled"><%= translate(locale, "Popular enabled: ") %></label>
|
||||||
|
<input name="popular_enabled" id="popular_enabled" type="checkbox" <% if config.popular_enabled %>checked<% end %>>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="pure-control-group">
|
<div class="pure-control-group">
|
||||||
<label for="captcha_enabled"><%= translate(locale, "CAPTCHA enabled: ") %></label>
|
<label for="captcha_enabled"><%= translate(locale, "CAPTCHA enabled: ") %></label>
|
||||||
<input name="captcha_enabled" id="captcha_enabled" type="checkbox" <% if config.captcha_enabled %>checked<% end %>>
|
<input name="captcha_enabled" id="captcha_enabled" type="checkbox" <% if config.captcha_enabled %>checked<% end %>>
|
||||||
|
Loading…
Reference in New Issue
Block a user