forked from DRMTalks/devine
DASH: Fix URL concatenation in some edge cases
In some of the urljoin()'s it would end with `/None`, e.g., `http://.../some_base_value/None`, when it should just join with the base value only.
This commit is contained in:
parent
1b76e8ee28
commit
c826a702ab
|
@ -247,7 +247,9 @@ class DASH:
|
||||||
manifest_url_query = urlparse(manifest_url).query
|
manifest_url_query = urlparse(manifest_url).query
|
||||||
|
|
||||||
manifest_base_url = manifest.findtext("BaseURL")
|
manifest_base_url = manifest.findtext("BaseURL")
|
||||||
if not manifest_base_url or not re.match("^https?://", manifest_base_url, re.IGNORECASE):
|
if not manifest_base_url:
|
||||||
|
manifest_base_url = manifest_url
|
||||||
|
elif not re.match("^https?://", manifest_base_url, re.IGNORECASE):
|
||||||
manifest_base_url = urljoin(manifest_url, f"./{manifest_base_url}")
|
manifest_base_url = urljoin(manifest_url, f"./{manifest_base_url}")
|
||||||
period_base_url = urljoin(manifest_base_url, period.findtext("BaseURL"))
|
period_base_url = urljoin(manifest_base_url, period.findtext("BaseURL"))
|
||||||
rep_base_url = urljoin(period_base_url, representation.findtext("BaseURL"))
|
rep_base_url = urljoin(period_base_url, representation.findtext("BaseURL"))
|
||||||
|
@ -342,7 +344,9 @@ class DASH:
|
||||||
initialization = segment_list.find("Initialization")
|
initialization = segment_list.find("Initialization")
|
||||||
if initialization is not None:
|
if initialization is not None:
|
||||||
source_url = initialization.get("sourceURL")
|
source_url = initialization.get("sourceURL")
|
||||||
if not source_url or not re.match("^https?://", source_url, re.IGNORECASE):
|
if not source_url:
|
||||||
|
source_url = rep_base_url
|
||||||
|
elif not re.match("^https?://", source_url, re.IGNORECASE):
|
||||||
source_url = urljoin(rep_base_url, f"./{source_url}")
|
source_url = urljoin(rep_base_url, f"./{source_url}")
|
||||||
|
|
||||||
if initialization.get("range"):
|
if initialization.get("range"):
|
||||||
|
@ -358,7 +362,9 @@ class DASH:
|
||||||
segment_urls = segment_list.findall("SegmentURL")
|
segment_urls = segment_list.findall("SegmentURL")
|
||||||
for segment_url in segment_urls:
|
for segment_url in segment_urls:
|
||||||
media_url = segment_url.get("media")
|
media_url = segment_url.get("media")
|
||||||
if not media_url or not re.match("^https?://", media_url, re.IGNORECASE):
|
if not media_url:
|
||||||
|
media_url = rep_base_url
|
||||||
|
elif not re.match("^https?://", media_url, re.IGNORECASE):
|
||||||
media_url = urljoin(rep_base_url, f"./{media_url}")
|
media_url = urljoin(rep_base_url, f"./{media_url}")
|
||||||
|
|
||||||
segments.append((
|
segments.append((
|
||||||
|
|
Loading…
Reference in New Issue