Videos: Append '&mpd_version=5' to DASH manifest URL

This makes Youtube return a MPD manifest with templates rather than
lengthy <SegmentList>. The returned  manifest is about 44 times smaller.
This commit is contained in:
Samantaz Fox 2023-10-22 17:09:52 +02:00
parent 2414e7db41
commit 07de1e236f
No known key found for this signature in database
GPG Key ID: F42821059186176E
1 changed files with 16 additions and 2 deletions

View File

@ -227,8 +227,22 @@ struct Video
info.dig?("streamingData", "hlsManifestUrl").try &.as_s info.dig?("streamingData", "hlsManifestUrl").try &.as_s
end end
def dash_manifest_url def dash_manifest_url : String?
info.dig?("streamingData", "dashManifestUrl").try &.as_s raw_dash_url = info.dig?("streamingData", "dashManifestUrl").try &.as_s
return nil if raw_dash_url.nil?
# Use manifest v5 parameter to reduce file size
# See https://github.com/iv-org/invidious/issues/4186
dash_url = URI.parse(raw_dash_url)
dash_query = dash_url.query || ""
if dash_query.empty?
dash_url.path = "#{dash_url.path}/mpd_version/5"
else
dash_url.query = "#{dash_query}&mpd_version=5"
end
return dash_url.to_s
end end
def genre_url : String? def genre_url : String?