Fix for M3U8 Hotstar
This commit is contained in:
parent
5b88624051
commit
a8edede94b
@ -71,7 +71,7 @@ class Track:
|
||||
ISM = 4 # https://bitmovin.com/blog/microsoft-smooth-streaming-mss/
|
||||
|
||||
def __init__(self, id_, source, url, codec, language=None, descriptor=Descriptor.URL,
|
||||
needs_proxy=False, needs_repack=False, encrypted=False, psshWV=None, psshPR=None, note=None, kid=None, key=None, extra=None):
|
||||
needs_proxy=False, needs_repack=False, encrypted=False, psshWV=None, psshPR=None, note=None, kid=None, key=None, extra=None, original_url=None):
|
||||
self.id = id_
|
||||
self.source = source
|
||||
self.url = url
|
||||
@ -94,6 +94,8 @@ class Track:
|
||||
# extra data
|
||||
self.extra = extra or {} # allow anything for extra, but default to a dict
|
||||
|
||||
self.original_url = original_url
|
||||
|
||||
# should only be set internally
|
||||
self._location = None
|
||||
|
||||
|
||||
@ -196,6 +196,7 @@ def parse(*, url=None, data=None, source, session=None, downloader=None):
|
||||
tracks.append(VideoTrack(
|
||||
id_=track_id,
|
||||
source=source,
|
||||
original_url=url,
|
||||
url=url,
|
||||
# metadata
|
||||
codec=(codec or "").split(".")[0],
|
||||
|
||||
@ -62,6 +62,7 @@ def parse(master, source=None):
|
||||
[VideoTrack(
|
||||
id_=md5(str(x).encode()).hexdigest()[0:7], # 7 chars only for filename length
|
||||
source=source,
|
||||
original_url=x.base_uri + x.uri,
|
||||
url=("" if re.match("^https?://", x.uri) else x.base_uri) + x.uri,
|
||||
# metadata
|
||||
codec=x.stream_info.codecs.split(",")[0].split(".")[0], # first codec may not be for the video
|
||||
@ -87,6 +88,7 @@ def parse(master, source=None):
|
||||
[AudioTrack(
|
||||
id_=md5(str(x).encode()).hexdigest()[0:6],
|
||||
source=source,
|
||||
original_url=x.base_uri + x.uri,
|
||||
url=("" if re.match("^https?://", x.uri) else x.base_uri) + x.uri,
|
||||
# metadata
|
||||
codec=x.group_id.replace("audio-", "").split("-")[0].split(".")[0],
|
||||
@ -108,6 +110,7 @@ def parse(master, source=None):
|
||||
[TextTrack(
|
||||
id_=md5(str(x).encode()).hexdigest()[0:6],
|
||||
source=source,
|
||||
original_url=x.base_uri + x.uri,
|
||||
url=("" if re.match("^https?://", x.uri) else x.base_uri) + x.uri,
|
||||
# metadata
|
||||
codec="vtt", # assuming VTT, codec info isn't shown
|
||||
|
||||
@ -287,7 +287,8 @@ def parse(*, url=None, data=None, source, session=None, downloader=None):
|
||||
tracks.append(VideoTrack(
|
||||
id_=track_id,
|
||||
source=source,
|
||||
url=url if source == "HS" else track_url,
|
||||
original_url=url,
|
||||
url=track_url,
|
||||
# metadata
|
||||
codec=(codecs or "").split(".")[0],
|
||||
language=track_lang,
|
||||
@ -324,7 +325,8 @@ def parse(*, url=None, data=None, source, session=None, downloader=None):
|
||||
tracks.append(AudioTrack(
|
||||
id_=track_id,
|
||||
source=source,
|
||||
url=url if source == "HS" else track_url,
|
||||
original_url=url,
|
||||
url=track_url,
|
||||
# metadata
|
||||
codec=(codecs or "").split(".")[0],
|
||||
language=track_lang,
|
||||
@ -375,6 +377,7 @@ def parse(*, url=None, data=None, source, session=None, downloader=None):
|
||||
tracks.append(TextTrack(
|
||||
id_=track_id,
|
||||
source=source,
|
||||
original_url=url,
|
||||
url=track_url,
|
||||
# metadata
|
||||
codec=(codecs or "").split(".")[0],
|
||||
@ -390,6 +393,7 @@ def parse(*, url=None, data=None, source, session=None, downloader=None):
|
||||
tracks.append(TextTrack(
|
||||
id_=track_id,
|
||||
source=source,
|
||||
original_url=url,
|
||||
url=track_url,
|
||||
# metadata
|
||||
codec=(codecs or "").split(".")[0],
|
||||
|
||||
@ -248,8 +248,7 @@ async def m3u8dl(uri, out, track, headers=None, proxy=None):
|
||||
ffmpeg_binary = shutil.which("ffmpeg") or "/usr/bin/ffmpeg"
|
||||
arguments = [
|
||||
executable,
|
||||
uri,
|
||||
**["--max-speed", "12M"] if "akamai" in uri else "",
|
||||
track.original_url or uri,
|
||||
"--save-dir", f'"{os.path.dirname(out)}"',
|
||||
"--tmp-dir", f'"{os.path.dirname(out)}"',
|
||||
"--save-name", f'"{os.path.basename(out).replace(".mp4", "")}"',
|
||||
@ -264,13 +263,17 @@ async def m3u8dl(uri, out, track, headers=None, proxy=None):
|
||||
arguments.extend(["--header", f'"Cookie:{headers["cookie"].replace(" ", "")}"'])
|
||||
#for k,v in headers.items():
|
||||
|
||||
if "akamai" in uri:
|
||||
arguments.append("--max-speed")
|
||||
arguments.append("12M")
|
||||
|
||||
if proxy:
|
||||
arguments.extend(["--custom-proxy", proxy])
|
||||
if not ("linux" in platform):
|
||||
arguments.extend(["--http-request-timeout", "8"])
|
||||
if track.__class__.__name__ == "VideoTrack":
|
||||
if track.height:
|
||||
from vinetrimmer.objects.tracks import Track
|
||||
if track.height and not (track.descriptor == Track.Descriptor.M3U):
|
||||
arguments.extend([
|
||||
"-sv", f"res='{track.height}*':codec='{track.codec}':for=best"
|
||||
])
|
||||
|
||||
Loading…
Reference in New Issue
Block a user