summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/invidious.cr47
-rw-r--r--src/invidious/videos.cr3
-rw-r--r--src/invidious/views/preferences.ecr2
3 files changed, 41 insertions, 11 deletions
diff --git a/src/invidious.cr b/src/invidious.cr
index df3d4cfe..3eb8d688 100644
--- a/src/invidious.cr
+++ b/src/invidious.cr
@@ -175,11 +175,23 @@ get "/:id" do |env|
end
get "/watch" do |env|
+ if env.params.query.to_s.includes?("%20") || env.params.query.to_s.includes?("+")
+ puts env.params.query.to_s
+ url = "/watch?" + env.params.query.to_s.gsub("%20", "").delete("+")
+ next env.redirect url
+ end
+
if env.params.query["v"]?
id = env.params.query["v"]
if id.size > 11
- next env.redirect "/watch?v=#{id[0, 11]}"
+ url = "/watch?v=#{id[0, 11]}"
+ env.params.query.delete_all("v")
+ if env.params.query.size > 0
+ url += "&#{env.params.query}"
+ end
+
+ next env.redirect url
end
else
next env.redirect "/"
@@ -288,14 +300,28 @@ get "/watch" do |env|
end
get "/embed/:id" do |env|
- if env.params.url["id"]?
- id = env.params.url["id"]
+ id = env.params.url["id"]
- if id.size > 11
- next env.redirect "/embed/#{id[0, 11]}"
+ if id.includes?("%20") || id.includes?("+") || env.params.query.to_s.includes?("%20") || env.params.query.to_s.includes?("+")
+ id = env.params.url["id"].gsub("%20", "").delete("+")
+
+ url = "/embed/#{id}"
+
+ if env.params.query.size > 0
+ url += "?#{env.params.query.to_s.gsub("%20", "").delete("+")}"
end
- else
- next env.redirect "/"
+
+ next env.redirect url
+ end
+
+ if id.size > 11
+ url = "/embed/#{id[0, 11]}"
+
+ if env.params.query.size > 0
+ url += "?#{env.params.query}"
+ end
+
+ next env.redirect url
end
autoplay, video_loop, video_start, video_end, listen, raw, quality, autoplay, controls = process_video_params(env.params.query, nil)
@@ -687,7 +713,7 @@ get "/preferences" do |env|
user = user.as(User)
templated "preferences"
else
- env.redirect referer
+ env.redirect "/"
end
end
@@ -1039,7 +1065,10 @@ end
get "/subscription_ajax" do |env|
user = env.get? "user"
referer = env.request.headers["referer"]?
- referer ||= "/"
+
+ if !referer || URI.parse(referer).path.try &.== "/subscription_ajax"
+ referer = "/"
+ end
if user
user = user.as(User)
diff --git a/src/invidious/videos.cr b/src/invidious/videos.cr
index a4b96799..346b60b6 100644
--- a/src/invidious/videos.cr
+++ b/src/invidious/videos.cr
@@ -167,7 +167,8 @@ class Video
captions = [] of Caption
if player_response["captions"]?
- caption_list = player_response["captions"]["playerCaptionsTracklistRenderer"]["captionTracks"].as_a
+ caption_list = player_response["captions"]["playerCaptionsTracklistRenderer"]["captionTracks"]?.try &.as_a
+ caption_list ||= [] of JSON::Any
caption_list.each do |caption|
caption = Caption.from_json(caption.to_json)
diff --git a/src/invidious/views/preferences.ecr b/src/invidious/views/preferences.ecr
index 5fe4cf52..1afd2ce7 100644
--- a/src/invidious/views/preferences.ecr
+++ b/src/invidious/views/preferences.ecr
@@ -136,7 +136,7 @@ function update_value(element) {
</div>
<div class="pure-control-group">
- <a href="/subscription_manager">Manage subscriptions></a>
+ <a href="/subscription_manager">Manage subscriptions</a>
</div>
<div class="pure-controls">