Regression from #4037 | Fix storyboards

PR #4037 introduced a workaround around YouTube's new integrity checks
on streaming URLs. However, the usage of this workaround prevents
storyboard data from being returned by InnerTube.

This commit fixes that by only using the workaround when calling try_fetch_streaming_data
This commit is contained in:
syeopite 2023-08-08 15:20:48 -07:00
parent a81c0f329c
commit 6b17bb5250
No known key found for this signature in database
GPG key ID: A73C186DA3955A1A

View file

@ -55,9 +55,7 @@ def extract_video_info(video_id : String, proxy_region : String? = nil)
client_config = YoutubeAPI::ClientConfig.new(proxy_region: proxy_region) client_config = YoutubeAPI::ClientConfig.new(proxy_region: proxy_region)
# Fetch data from the player endpoint # Fetch data from the player endpoint
# CgIQBg is a workaround for streaming URLs that returns a 403. player_response = YoutubeAPI.player(video_id: video_id, params: "", client_config: client_config)
# 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)
playability_status = player_response.dig?("playabilityStatus", "status").try &.as_s 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 # Replace player response and reset reason
if !new_player_response.nil? 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 player_response = new_player_response
params.delete("reason") params.delete("reason")
end end