diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/invidious.cr | 47 | ||||
| -rw-r--r-- | src/invidious/videos.cr | 3 | ||||
| -rw-r--r-- | src/invidious/views/preferences.ecr | 2 |
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"> |
