diff --git a/src/invidious/routes/embed.cr b/src/invidious/routes/embed.cr index 49aeade5..bdbb2d89 100644 --- a/src/invidious/routes/embed.cr +++ b/src/invidious/routes/embed.cr @@ -203,11 +203,12 @@ module Invidious::Routes::Embed return env.redirect url end - if companion_base_url = video.invidious_companion.try &.["baseUrl"].as_s + if CONFIG.invidious_companion.present? + invidious_companion = CONFIG.invidious_companion.sample env.response.headers["Content-Security-Policy"] = env.response.headers["Content-Security-Policy"] - .gsub("media-src", "media-src #{companion_base_url}") - .gsub("connect-src", "connect-src #{companion_base_url}") + .gsub("media-src", "media-src #{invidious_companion.public_url}") + .gsub("connect-src", "connect-src #{invidious_companion.public_url}") end rendered "embed" diff --git a/src/invidious/routes/watch.cr b/src/invidious/routes/watch.cr index 50b5a25d..ab588ad6 100644 --- a/src/invidious/routes/watch.cr +++ b/src/invidious/routes/watch.cr @@ -192,11 +192,12 @@ module Invidious::Routes::Watch captions: video.captions ) - if companion_base_url = video.invidious_companion.try &.["baseUrl"].as_s + if CONFIG.invidious_companion.present? + invidious_companion = CONFIG.invidious_companion.sample env.response.headers["Content-Security-Policy"] = env.response.headers["Content-Security-Policy"] - .gsub("media-src", "media-src #{companion_base_url}") - .gsub("connect-src", "connect-src #{companion_base_url}") + .gsub("media-src", "media-src #{invidious_companion.public_url}") + .gsub("connect-src", "connect-src #{invidious_companion.public_url}") end templated "watch" @@ -329,7 +330,8 @@ module Invidious::Routes::Watch if (CONFIG.invidious_companion.present?) video = get_video(video_id) - return env.redirect "#{video.invidious_companion["baseUrl"].as_s}/latest_version?#{env.params.query}" + 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 diff --git a/src/invidious/videos.cr b/src/invidious/videos.cr index 95abd709..348a0a66 100644 --- a/src/invidious/videos.cr +++ b/src/invidious/videos.cr @@ -192,10 +192,6 @@ struct Video } end - def invidious_companion : Hash(String, JSON::Any)? - info["invidiousCompanion"]?.try &.as_h || {} of String => JSON::Any - end - # Macros defining getters/setters for various types of data private macro getset_string(name) diff --git a/src/invidious/videos/parser.cr b/src/invidious/videos/parser.cr index 2fafe780..26d74f37 100644 --- a/src/invidious/videos/parser.cr +++ b/src/invidious/videos/parser.cr @@ -133,7 +133,7 @@ def extract_video_info(video_id : String) end end - {"captions", "playabilityStatus", "playerConfig", "storyboards", "invidiousCompanion"}.each do |f| + {"captions", "playabilityStatus", "playerConfig", "storyboards"}.each do |f| params[f] = player_response[f] if player_response[f]? end diff --git a/src/invidious/views/components/player.ecr b/src/invidious/views/components/player.ecr index 32badc10..af352102 100644 --- a/src/invidious/views/components/player.ecr +++ b/src/invidious/views/components/player.ecr @@ -22,8 +22,8 @@ audio_streams.each_with_index do |fmt, i| src_url = "/latest_version?id=#{video.id}&itag=#{fmt["itag"]}" src_url += "&local=true" if params.local - src_url = video.invidious_companion["baseUrl"].as_s + src_url + - "&check=#{invidious_companion_encrypt(video.id)}" if (CONFIG.invidious_companion.present?) + src_url = invidious_companion.public_url.to_s + src_url + + "&check=#{invidious_companion_encrypt(video.id)}" if (invidious_companion) bitrate = fmt["bitrate"] mimetype = HTML.escape(fmt["mimeType"].as_s) @@ -38,8 +38,8 @@ <% else %> <% if params.quality == "dash" src_url = "/api/manifest/dash/id/" + video.id + "?local=true&unique_res=1" - src_url = video.invidious_companion["baseUrl"].as_s + src_url + - "&check=#{invidious_companion_encrypt(video.id)}" if (CONFIG.invidious_companion.present?) + src_url = invidious_companion.public_url.to_s + src_url + + "&check=#{invidious_companion_encrypt(video.id)}" if (invidious_companion) %> <% end %> @@ -50,8 +50,8 @@ fmt_stream.each_with_index do |fmt, i| src_url = "/latest_version?id=#{video.id}&itag=#{fmt["itag"]}" src_url += "&local=true" if params.local - src_url = video.invidious_companion["baseUrl"].as_s + src_url + - "&check=#{invidious_companion_encrypt(video.id)}" if (CONFIG.invidious_companion.present?) + src_url = invidious_companion.public_url.to_s + src_url + + "&check=#{invidious_companion_encrypt(video.id)}" if (invidious_companion) quality = fmt["quality"] mimetype = HTML.escape(fmt["mimeType"].as_s)