diff options
| author | Samantaz Fox <coding@samantaz.fr> | 2023-08-26 12:15:04 +0200 |
|---|---|---|
| committer | Samantaz Fox <coding@samantaz.fr> | 2023-08-26 12:15:04 +0200 |
| commit | ac0c0609bb8b652e630c3603cd9dbb1c87fbdf44 (patch) | |
| tree | 10484e1690646de8c890726b44b62a87f38735c3 /src | |
| parent | 7e84d07c27a51c560f2788e8349bd9e90d8f2a16 (diff) | |
| parent | 2b36d3b419d04fd4fc46e97e03a4c3af7285b663 (diff) | |
| download | invidious-ac0c0609bb8b652e630c3603cd9dbb1c87fbdf44.tar.gz invidious-ac0c0609bb8b652e630c3603cd9dbb1c87fbdf44.tar.bz2 invidious-ac0c0609bb8b652e630c3603cd9dbb1c87fbdf44.zip | |
Add workaround for storyboards on local instances (#4040)
Diffstat (limited to 'src')
| -rw-r--r-- | src/invidious/routes/errors.cr | 5 | ||||
| -rw-r--r-- | src/invidious/videos/parser.cr | 7 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/invidious/routes/errors.cr b/src/invidious/routes/errors.cr index b138b562..1e9ab44e 100644 --- a/src/invidious/routes/errors.cr +++ b/src/invidious/routes/errors.cr @@ -1,5 +1,10 @@ module Invidious::Routes::ErrorRoutes def self.error_404(env) + # Workaround for #3117 + if HOST_URL.empty? && env.request.path.starts_with?("/v1/storyboards/sb") + return env.redirect "#{env.request.path[15..]}?#{env.params.query}" + end + if md = env.request.path.match(/^\/(?<id>([a-zA-Z0-9_-]{11})|(\w+))$/) item = md["id"] diff --git a/src/invidious/videos/parser.cr b/src/invidious/videos/parser.cr index 2a09d187..06ff96b1 100644 --- a/src/invidious/videos/parser.cr +++ b/src/invidious/videos/parser.cr @@ -55,9 +55,7 @@ def extract_video_info(video_id : String, proxy_region : String? = nil) client_config = YoutubeAPI::ClientConfig.new(proxy_region: proxy_region) # Fetch data from the player endpoint - # CgIQBg is a workaround for streaming URLs that returns a 403. - # See https://github.com/iv-org/invidious/issues/4027#issuecomment-1666944520 - player_response = YoutubeAPI.player(video_id: video_id, params: "CgIQBg", client_config: client_config) + player_response = YoutubeAPI.player(video_id: video_id, params: "", client_config: client_config) playability_status = player_response.dig?("playabilityStatus", "status").try &.as_s @@ -120,6 +118,9 @@ def extract_video_info(video_id : String, proxy_region : String? = nil) # Replace player response and reset reason if !new_player_response.nil? + # Preserve storyboard data before replacement + new_player_response["storyboards"] = player_response["storyboards"] if player_response["storyboards"]? + player_response = new_player_response params.delete("reason") end |
