forked from midou/invidious
Add dash support for videos that already have manifest
This commit is contained in:
parent
c19b373944
commit
f05afaf342
@ -678,8 +678,6 @@ get "/redirect" do |env|
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Return dash manifest for the given video ID, note this will not work on
|
|
||||||
# videos that already have a dashmpd in video info.
|
|
||||||
get "/api/manifest/dash/id/:id" do |env|
|
get "/api/manifest/dash/id/:id" do |env|
|
||||||
env.response.headers.add("Access-Control-Allow-Origin", "*")
|
env.response.headers.add("Access-Control-Allow-Origin", "*")
|
||||||
env.response.content_type = "application/dash+xml"
|
env.response.content_type = "application/dash+xml"
|
||||||
@ -694,6 +692,28 @@ get "/api/manifest/dash/id/:id" do |env|
|
|||||||
halt env, status_code: 403
|
halt env, status_code: 403
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if video.info["dashmpd"]?
|
||||||
|
manifest = client.get(video.info["dashmpd"]).body
|
||||||
|
|
||||||
|
manifest = manifest.gsub(/<BaseURL>[^<]+<\/BaseURL>/) do |baseurl|
|
||||||
|
url = baseurl.lchop("<BaseURL>")
|
||||||
|
url = url.rchop("</BaseURL>")
|
||||||
|
|
||||||
|
if local
|
||||||
|
if Kemal.config.ssl
|
||||||
|
scheme = "https://"
|
||||||
|
end
|
||||||
|
scheme ||= "http://"
|
||||||
|
|
||||||
|
url = scheme + env.request.headers["Host"] + URI.parse(url).full_path
|
||||||
|
end
|
||||||
|
|
||||||
|
"<BaseURL>#{url}</BaseURL>"
|
||||||
|
end
|
||||||
|
|
||||||
|
next manifest
|
||||||
|
end
|
||||||
|
|
||||||
adaptive_fmts = [] of HTTP::Params
|
adaptive_fmts = [] of HTTP::Params
|
||||||
if video.info.has_key?("adaptive_fmts")
|
if video.info.has_key?("adaptive_fmts")
|
||||||
video.info["adaptive_fmts"].split(",") do |string|
|
video.info["adaptive_fmts"].split(",") do |string|
|
||||||
|
Loading…
Reference in New Issue
Block a user