summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamantaz Fox <coding@samantaz.fr>2021-06-13 21:40:11 +0200
committerSamantaz Fox <coding@samantaz.fr>2021-06-13 21:52:36 +0200
commita2f5342a83f2b68a1a980eb5f1e92f3f74188ab9 (patch)
treea9b7d48a1631348f1cabee6d39492b18aef75359
parentfe64e6dbf2dcd71d52e5c0c6092b77bf1c0520d4 (diff)
downloadinvidious-a2f5342a83f2b68a1a980eb5f1e92f3f74188ab9.tar.gz
invidious-a2f5342a83f2b68a1a980eb5f1e92f3f74188ab9.tar.bz2
invidious-a2f5342a83f2b68a1a980eb5f1e92f3f74188ab9.zip
Multiple search fixes
* Remove percent-encoding of the search query when calling youtube API, as it breaks UTF-8 * Empty search redirects to /search, not / * Show the fullscreen search "home page" (from #1977) at /search * Allow 'region=' parameter to be passed to /search * Other minor fixes
-rw-r--r--src/invidious/helpers/youtube_api.cr2
-rw-r--r--src/invidious/routes/search.cr24
-rw-r--r--src/invidious/views/search_homepage.ecr2
3 files changed, 17 insertions, 11 deletions
diff --git a/src/invidious/helpers/youtube_api.cr b/src/invidious/helpers/youtube_api.cr
index 544e635b..e27d4088 100644
--- a/src/invidious/helpers/youtube_api.cr
+++ b/src/invidious/helpers/youtube_api.cr
@@ -79,7 +79,7 @@ end
def request_youtube_api_search(search_query : String, params : String, region = nil)
# JSON Request data, required by the API
data = {
- "query" => URI.encode_www_form(search_query),
+ "query" => search_query,
"context" => make_youtube_api_context(region),
"params" => params,
}
diff --git a/src/invidious/routes/search.cr b/src/invidious/routes/search.cr
index a993a17a..cb05435e 100644
--- a/src/invidious/routes/search.cr
+++ b/src/invidious/routes/search.cr
@@ -20,15 +20,17 @@ class Invidious::Routes::Search < Invidious::Routes::BaseRoute
query = env.params.query["search_query"]?
query ||= env.params.query["q"]?
- query ||= ""
- page = env.params.query["page"]?.try &.to_i?
- page ||= 1
+ page = env.params.query["page"]?
- if query
- env.redirect "/search?q=#{URI.encode_www_form(query)}&page=#{page}"
+ if query && !query.empty?
+ if page && !page.empty?
+ env.redirect "/search?q=" + URI.encode_www_form(query) + "&page=" + page
+ else
+ env.redirect "/search?q=" + URI.encode_www_form(query)
+ end
else
- env.redirect "/"
+ env.redirect "/search"
end
end
@@ -38,9 +40,13 @@ class Invidious::Routes::Search < Invidious::Routes::BaseRoute
query = env.params.query["search_query"]?
query ||= env.params.query["q"]?
- query ||= ""
- return env.redirect "/" if query.empty?
+ if !query || query.empty?
+ # Display the full page search box implemented in #1977
+ env.set "search", ""
+ templated "search_homepage", navbar_search: false
+ return
+ end
page = env.params.query["page"]?.try &.to_i?
page ||= 1
@@ -48,7 +54,7 @@ class Invidious::Routes::Search < Invidious::Routes::BaseRoute
user = env.get? "user"
begin
- search_query, count, videos, operators = process_search_query(query, page, user, region: nil)
+ search_query, count, videos, operators = process_search_query(query, page, user, region: region)
rescue ex
return error_template(500, ex)
end
diff --git a/src/invidious/views/search_homepage.ecr b/src/invidious/views/search_homepage.ecr
index 8927c3f1..7d2dab83 100644
--- a/src/invidious/views/search_homepage.ecr
+++ b/src/invidious/views/search_homepage.ecr
@@ -1,7 +1,7 @@
<% content_for "header" do %>
<meta name="description" content="<%= translate(locale, "An alternative front-end to YouTube") %>">
<title>
- Invidious
+ Invidious - <%= translate(locale, "search") %>
</title>
<link rel="stylesheet" href="/css/empty.css?v=<%= ASSET_COMMIT %>">
<% end %>