feat(routes): redirect to the backend selected at the time of downloading

This commit is contained in:
Fijxu 2025-05-08 00:44:36 -04:00
parent b9114cbb9d
commit 4e2f59ba37
No known key found for this signature in database
GPG Key ID: 32C1DDF333EDA6A4
3 changed files with 7 additions and 4 deletions

View File

@ -18,14 +18,15 @@ module Invidious::Frontend::WatchPage
end end
end end
def download_widget(locale : String, video : Video, video_assets : VideoAssets) : String def download_widget(locale : String, video : Video, video_assets : VideoAssets, env : HTTP::Server::Context) : String
if CONFIG.disabled?("downloads") if CONFIG.disabled?("downloads")
return "<p id=\"download\">#{translate(locale, "Download is disabled")}</p>" return "<p id=\"download\">#{translate(locale, "Download is disabled")}</p>"
end end
url = "/download" url = "/download"
if (CONFIG.invidious_companion.present?) if (CONFIG.invidious_companion.present?)
invidious_companion = CONFIG.invidious_companion.sample current_companion = env.get("current_companion").as(Int32)
invidious_companion = CONFIG.invidious_companion[current_companion]
url = "#{invidious_companion.public_url}/download?check=#{invidious_companion_encrypt(video.id)}" url = "#{invidious_companion.public_url}/download?check=#{invidious_companion_encrypt(video.id)}"
end end

View File

@ -312,7 +312,9 @@ module Invidious::Routes::Watch
return error_template(403, "Administrator has disabled this endpoint.") return error_template(403, "Administrator has disabled this endpoint.")
end end
if CONFIG.invidious_companion.present? if CONFIG.invidious_companion.present?
return error_template(403, "Downloads should be routed through Companion when present") current_companion = env.get("current_companion").as(Int32)
invidious_companion = CONFIG.invidious_companion[current_companion]
return env.redirect invidious_companion.public_url
end end
title = env.params.body["title"]? || "" title = env.params.body["title"]? || ""

View File

@ -203,7 +203,7 @@ we're going to need to do it here in order to allow for translations.
<% end %> <% end %>
<% end %> <% end %>
<%= Invidious::Frontend::WatchPage.download_widget(locale, video, video_assets) %> <%= Invidious::Frontend::WatchPage.download_widget(locale, video, video_assets, env) %>
<p id="views"><i class="icon ion-ios-eye"></i> <%= number_with_separator(video.views) %></p> <p id="views"><i class="icon ion-ios-eye"></i> <%= number_with_separator(video.views) %></p>
<p id="likes"><i class="icon ion-ios-thumbs-up"></i> <%= number_with_separator(video.likes) %></p> <p id="likes"><i class="icon ion-ios-thumbs-up"></i> <%= number_with_separator(video.likes) %></p>