mirror of
https://github.com/iv-org/invidious.git
synced 2025-01-10 11:30:34 +05:30
feat: optional trending_enabled
and search_enabled
params added
This commit is contained in:
parent
eda7444ca4
commit
e613e3c08c
@ -210,6 +210,22 @@ https_only: false
|
|||||||
##
|
##
|
||||||
#popular_enabled: true
|
#popular_enabled: true
|
||||||
|
|
||||||
|
##
|
||||||
|
## Enable/Disable the "Trending" tab on the main page.
|
||||||
|
##
|
||||||
|
## Accepted values: true, false
|
||||||
|
## Default: true
|
||||||
|
##
|
||||||
|
#trending_enabled: true
|
||||||
|
|
||||||
|
##
|
||||||
|
## Enable/Disable "Search" on the main page.
|
||||||
|
##
|
||||||
|
## Accepted values: true, false
|
||||||
|
## Default: true
|
||||||
|
##
|
||||||
|
#search_enabled: true
|
||||||
|
|
||||||
##
|
##
|
||||||
## Enable/Disable statstics (available at /api/v1/stats).
|
## Enable/Disable statstics (available at /api/v1/stats).
|
||||||
## The following data is available:
|
## The following data is available:
|
||||||
|
@ -91,6 +91,8 @@ class Config
|
|||||||
# Subscribe to channels using PubSubHubbub (requires domain, hmac_key)
|
# Subscribe to channels using PubSubHubbub (requires domain, hmac_key)
|
||||||
property use_pubsub_feeds : Bool | Int32 = false
|
property use_pubsub_feeds : Bool | Int32 = false
|
||||||
property popular_enabled : Bool = true
|
property popular_enabled : Bool = true
|
||||||
|
property trending_enabled : Bool = true
|
||||||
|
property search_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
|
||||||
|
@ -4,6 +4,11 @@ module Invidious::Routes::API::V1::Feeds
|
|||||||
|
|
||||||
env.response.content_type = "application/json"
|
env.response.content_type = "application/json"
|
||||||
|
|
||||||
|
if !CONFIG.trending_enabled
|
||||||
|
error_message = {"error" => "Administrator has disabled this endpoint."}.to_json
|
||||||
|
haltf env, 400, error_message
|
||||||
|
end
|
||||||
|
|
||||||
region = env.params.query["region"]?
|
region = env.params.query["region"]?
|
||||||
trending_type = env.params.query["type"]?
|
trending_type = env.params.query["type"]?
|
||||||
|
|
||||||
|
@ -5,6 +5,11 @@ module Invidious::Routes::API::V1::Search
|
|||||||
|
|
||||||
env.response.content_type = "application/json"
|
env.response.content_type = "application/json"
|
||||||
|
|
||||||
|
if !CONFIG.search_enabled
|
||||||
|
error_message = {"error" => "Administrator has disabled this endpoint."}.to_json
|
||||||
|
haltf env, 400, error_message
|
||||||
|
end
|
||||||
|
|
||||||
query = Invidious::Search::Query.new(env.params.query, :regular, region)
|
query = Invidious::Search::Query.new(env.params.query, :regular, region)
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
@ -45,19 +45,24 @@ module Invidious::Routes::Feeds
|
|||||||
def self.trending(env)
|
def self.trending(env)
|
||||||
locale = env.get("preferences").as(Preferences).locale
|
locale = env.get("preferences").as(Preferences).locale
|
||||||
|
|
||||||
trending_type = env.params.query["type"]?
|
if CONFIG.trending_enabled
|
||||||
trending_type ||= "Default"
|
trending_type = env.params.query["type"]?
|
||||||
|
trending_type ||= "Default"
|
||||||
|
|
||||||
region = env.params.query["region"]?
|
region = env.params.query["region"]?
|
||||||
region ||= env.get("preferences").as(Preferences).region
|
region ||= env.get("preferences").as(Preferences).region
|
||||||
|
|
||||||
begin
|
begin
|
||||||
trending, plid = fetch_trending(trending_type, region, locale)
|
trending, plid = fetch_trending(trending_type, region, locale)
|
||||||
rescue ex
|
rescue ex
|
||||||
return error_template(500, ex)
|
return error_template(500, ex)
|
||||||
|
end
|
||||||
|
|
||||||
|
templated "feeds/trending"
|
||||||
|
else
|
||||||
|
message = translate(locale, "The Trending feed has been disabled by the administrator.")
|
||||||
|
templated "message"
|
||||||
end
|
end
|
||||||
|
|
||||||
templated "feeds/trending"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.subscriptions(env)
|
def self.subscriptions(env)
|
||||||
|
@ -198,6 +198,14 @@ module Invidious::Routes::PreferencesRoute
|
|||||||
popular_enabled ||= "off"
|
popular_enabled ||= "off"
|
||||||
CONFIG.popular_enabled = popular_enabled == "on"
|
CONFIG.popular_enabled = popular_enabled == "on"
|
||||||
|
|
||||||
|
trending_enabled = env.params.body["trending_enabled"]?.try &.as(String)
|
||||||
|
trending_enabled ||= "off"
|
||||||
|
CONFIG.trending_enabled = trending_enabled == "on"
|
||||||
|
|
||||||
|
search_enabled = env.params.body["search_enabled"]?.try &.as(String)
|
||||||
|
search_enabled ||= "off"
|
||||||
|
CONFIG.search_enabled = search_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"
|
||||||
|
@ -40,41 +40,46 @@ module Invidious::Routes::Search
|
|||||||
prefs = env.get("preferences").as(Preferences)
|
prefs = env.get("preferences").as(Preferences)
|
||||||
locale = prefs.locale
|
locale = prefs.locale
|
||||||
|
|
||||||
region = env.params.query["region"]? || prefs.region
|
if CONFIG.search_enabled
|
||||||
|
region = env.params.query["region"]? || prefs.region
|
||||||
|
|
||||||
query = Invidious::Search::Query.new(env.params.query, :regular, region)
|
query = Invidious::Search::Query.new(env.params.query, :regular, region)
|
||||||
|
|
||||||
if query.empty?
|
if query.empty?
|
||||||
# Display the full page search box implemented in #1977
|
# Display the full page search box implemented in #1977
|
||||||
env.set "search", ""
|
env.set "search", ""
|
||||||
templated "search_homepage", navbar_search: false
|
templated "search_homepage", navbar_search: false
|
||||||
else
|
|
||||||
user = env.get? "user"
|
|
||||||
|
|
||||||
begin
|
|
||||||
items = query.process
|
|
||||||
rescue ex : ChannelSearchException
|
|
||||||
return error_template(404, "Unable to find channel with id of '#{HTML.escape(ex.channel)}'. Are you sure that's an actual channel id? It should look like 'UC4QobU6STFB0P71PMvOGN5A'.")
|
|
||||||
rescue ex
|
|
||||||
return error_template(500, ex)
|
|
||||||
end
|
|
||||||
|
|
||||||
redirect_url = Invidious::Frontend::Misc.redirect_url(env)
|
|
||||||
|
|
||||||
# Pagination
|
|
||||||
page_nav_html = Frontend::Pagination.nav_numeric(locale,
|
|
||||||
base_url: "/search?#{query.to_http_params}",
|
|
||||||
current_page: query.page,
|
|
||||||
show_next: (items.size >= 20)
|
|
||||||
)
|
|
||||||
|
|
||||||
if query.type == Invidious::Search::Query::Type::Channel
|
|
||||||
env.set "search", "channel:#{query.channel} #{query.text}"
|
|
||||||
else
|
else
|
||||||
env.set "search", query.text
|
user = env.get? "user"
|
||||||
end
|
|
||||||
|
|
||||||
templated "search"
|
begin
|
||||||
|
items = query.process
|
||||||
|
rescue ex : ChannelSearchException
|
||||||
|
return error_template(404, "Unable to find channel with id of '#{HTML.escape(ex.channel)}'. Are you sure that's an actual channel id? It should look like 'UC4QobU6STFB0P71PMvOGN5A'.")
|
||||||
|
rescue ex
|
||||||
|
return error_template(500, ex)
|
||||||
|
end
|
||||||
|
|
||||||
|
redirect_url = Invidious::Frontend::Misc.redirect_url(env)
|
||||||
|
|
||||||
|
# Pagination
|
||||||
|
page_nav_html = Frontend::Pagination.nav_numeric(locale,
|
||||||
|
base_url: "/search?#{query.to_http_params}",
|
||||||
|
current_page: query.page,
|
||||||
|
show_next: (items.size >= 20)
|
||||||
|
)
|
||||||
|
|
||||||
|
if query.type == Invidious::Search::Query::Type::Channel
|
||||||
|
env.set "search", "channel:#{query.channel} #{query.text}"
|
||||||
|
else
|
||||||
|
env.set "search", query.text
|
||||||
|
end
|
||||||
|
|
||||||
|
templated "search"
|
||||||
|
end
|
||||||
|
else
|
||||||
|
message = translate(locale, "Search has been disabled by the administrator.")
|
||||||
|
templated "message"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -287,6 +287,15 @@
|
|||||||
<input name="popular_enabled" id="popular_enabled" type="checkbox" <% if CONFIG.popular_enabled %>checked<% end %>>
|
<input name="popular_enabled" id="popular_enabled" type="checkbox" <% if CONFIG.popular_enabled %>checked<% end %>>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="pure-control-group">
|
||||||
|
<label for="trending_enabled"><%= translate(locale, "Trending enabled: ") %></label>
|
||||||
|
<input name="trending_enabled" id="trending_enabled" type="checkbox" <% if CONFIG.trending_enabled %>checked<% end %>>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pure-control-group">
|
||||||
|
<label for="search_enabled"><%= translate(locale, "Search enabled: ") %></label>
|
||||||
|
<input name="search_enabled" id="search_enabled" type="checkbox" <% if CONFIG.search_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>
|
||||||
|
Loading…
Reference in New Issue
Block a user