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:
parent
2414e7db41
commit
07de1e236f
|
@ -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?
|
||||||
|
|
Loading…
Reference in a new issue