summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/invidious/frontend/watch_page.cr8
-rw-r--r--src/invidious/routes/watch.cr11
2 files changed, 11 insertions, 8 deletions
diff --git a/src/invidious/frontend/watch_page.cr b/src/invidious/frontend/watch_page.cr
index 2e2f6ad0..15d925e3 100644
--- a/src/invidious/frontend/watch_page.cr
+++ b/src/invidious/frontend/watch_page.cr
@@ -23,10 +23,16 @@ module Invidious::Frontend::WatchPage
return "<p id=\"download\">#{translate(locale, "Download is disabled")}</p>"
end
+ url = "/download"
+ if (CONFIG.invidious_companion.present?)
+ invidious_companion = CONFIG.invidious_companion.sample
+ url = "#{invidious_companion.public_url}/download?check=#{invidious_companion_encrypt(video.id)}"
+ end
+
return String.build(4000) do |str|
str << "<form"
str << " class=\"pure-form pure-form-stacked\""
- str << " action='/download'"
+ str << " action='#{url}'"
str << " method='post'"
str << " rel='noopener'"
str << " target='_blank'>"
diff --git a/src/invidious/routes/watch.cr b/src/invidious/routes/watch.cr
index ab588ad6..e777b3f1 100644
--- a/src/invidious/routes/watch.cr
+++ b/src/invidious/routes/watch.cr
@@ -293,6 +293,9 @@ module Invidious::Routes::Watch
if CONFIG.disabled?("downloads")
return error_template(403, "Administrator has disabled this endpoint.")
end
+ if CONFIG.invidious_companion.present?
+ return error_template(403, "Downloads should be routed through Companion when present")
+ end
title = env.params.body["title"]? || ""
video_id = env.params.body["id"]? || ""
@@ -328,13 +331,7 @@ module Invidious::Routes::Watch
env.params.query["title"] = filename
env.params.query["local"] = "true"
- if (CONFIG.invidious_companion.present?)
- video = get_video(video_id)
- invidious_companion = CONFIG.invidious_companion.sample
- return env.redirect "#{invidious_companion.public_url}/latest_version?#{env.params.query}"
- else
- return Invidious::Routes::VideoPlayback.latest_version(env)
- end
+ return Invidious::Routes::VideoPlayback.latest_version(env)
else
return error_template(400, "Invalid label or itag")
end