Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Use workaround for fetching streaming URLs (#4037)
  • Loading branch information
SamantazFox committed Aug 7, 2023
2 parents 4195dcd + 2f6b268 commit 3450896
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions src/invidious/videos/parser.cr
Expand Up @@ -55,8 +55,9 @@ 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
# 8AEB param is used to fetch YouTube stories
player_response = YoutubeAPI.player(video_id: video_id, params: "8AEB", client_config: client_config)
# 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)

playability_status = player_response.dig?("playabilityStatus", "status").try &.as_s

Expand Down Expand Up @@ -135,8 +136,9 @@ end

def try_fetch_streaming_data(id : String, client_config : YoutubeAPI::ClientConfig) : Hash(String, JSON::Any)?
LOGGER.debug("try_fetch_streaming_data: [#{id}] Using #{client_config.client_type} client.")
# 8AEB param is used to fetch YouTube stories
response = YoutubeAPI.player(video_id: id, params: "8AEB", client_config: client_config)
# CgIQBg is a workaround for streaming URLs that returns a 403.
# See https://github.com/iv-org/invidious/issues/4027#issuecomment-1666944520
response = YoutubeAPI.player(video_id: id, params: "CgIQBg", client_config: client_config)

playability_status = response["playabilityStatus"]["status"]
LOGGER.debug("try_fetch_streaming_data: [#{id}] Got playabilityStatus == #{playability_status}.")
Expand Down

0 comments on commit 3450896

Please sign in to comment.