add support for i2p backends and onion numbered backends
Some checks are pending
Build and release container directly from master / release (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.12.1, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.13.2, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.14.0, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.15.0, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (nightly, false) (push) Waiting to run
Invidious CI / build-docker (push) Waiting to run
Invidious CI / build-docker-arm64 (push) Waiting to run
Invidious CI / lint (push) Waiting to run

This commit is contained in:
Fijxu
2025-04-05 20:24:01 -03:00
parent bbec111997
commit c124c4854e
8 changed files with 65 additions and 44 deletions

View File

@@ -9,9 +9,8 @@ module Invidious::Routes::API::Manifest
region = env.params.query["region"]?
if CONFIG.invidious_companion.present?
current_companion = env.get("current_companion").as(Int32)
invidious_companion = CONFIG.invidious_companion[current_companion]
return env.redirect "#{invidious_companion.public_url}/api/manifest/dash/id/#{id}?#{env.params.query}"
companion_public_url = env.get("companion_public_url").as(String)
return env.redirect "#{companion_public_url}/api/manifest/dash/id/#{id}?#{env.params.query}"
end
# Since some implementations create playlists based on resolution regardless of different codecs,

View File

@@ -25,11 +25,22 @@ module Invidious::Routes::BeforeAll
if CONFIG.invidious_companion.present?
CONFIG.invidious_companion.each_with_index do |companion, index|
if companion.domain == env.request.headers["Host"]
env.set "current_companion", index
env.set "domain", true
break
puts "inv-companion " + index.to_s
if companion.domain.each_with_index do |domain, domain_index|
puts "domain " + domain_index.to_s
if domain == env.request.headers["Host"]
env.set "current_companion", index
env.set "companion_public_url", companion.public_url.to_s
env.set "domain_index", domain_index
if domain_index == 2
env.set "companion_public_url", companion.i2p_public_url.to_s
end
puts "exit_inner"
break
end
end
end
break if env.get?("current_companion")
end
if env.get?("current_companion").try &.as(Int32) == nil
@@ -49,6 +60,7 @@ module Invidious::Routes::BeforeAll
end
env.set "current_companion", current_companion
env.set "companion_public_url", CONFIG.invidious_companion[current_companion].public_url.to_s
end
extra_media_csp, extra_connect_csp = BackendInfo.get_csp(env.get("current_companion").as(Int32))

View File

@@ -267,9 +267,8 @@ module Invidious::Routes::VideoPlayback
# so we have a mechanism here to redirect to the latest version
def self.latest_version(env)
if CONFIG.invidious_companion.present?
current_companion = env.get("current_companion").as(Int32)
invidious_companion = CONFIG.invidious_companion[current_companion]
return env.redirect "#{invidious_companion.public_url}/latest_version?#{env.params.query}"
companion_public_url = env.get("companion_public_url").as(String)
return env.redirect "#{companion_public_url}/latest_version?#{env.params.query}"
end
id = env.params.query["id"]?

View File

@@ -348,9 +348,8 @@ module Invidious::Routes::Watch
if (CONFIG.invidious_companion.present?)
video = get_video(video_id, env: env)
current_companion = env.get("current_companion").as(Int32)
invidious_companion = CONFIG.invidious_companion[current_companion]
return env.redirect "#{invidious_companion.public_url}/latest_version?#{env.params.query}"
companion_public_url = env.get("companion_public_url").as(String)
return env.redirect "#{companion_public_url}/latest_version?#{env.params.query}"
else
return Invidious::Routes::VideoPlayback.latest_version(env)
end