Fix for m3u8 ATVP + DSNP
This commit is contained in:
parent
b3601b2d12
commit
bb3087750f
Binary file not shown.
@ -36,37 +36,11 @@ def parse(master, source=None):
|
||||
# get pssh if available
|
||||
# uses master.session_keys instead of master.keys as master.keys is ONLY EXT-X-KEYS and
|
||||
# doesn't include EXT-X-SESSION-KEYS which is whats used for variant playlist M3U8.
|
||||
try:
|
||||
psshPR = [
|
||||
session_key.uri.split(",")[-1]
|
||||
for session_key in master.session_keys
|
||||
if (
|
||||
session_key.keyformat.lower() == "com.microsoft.playready"
|
||||
and
|
||||
source == "DSNP"
|
||||
and
|
||||
x.stream_info.characteristics.lower().replace('"', "") in session_key.characteristics.lower().split(",")
|
||||
)
|
||||
][0]
|
||||
except:
|
||||
try:
|
||||
psshPR = [x.uri.split(",")[-1] for x in master.session_keys if x.keyformat.lower() == "com.microsoft.playready"][0]
|
||||
except IndexError:
|
||||
psshPR = [x.uri.split(",")[-1] for x in master.session_keys if x.keyformat.lower() == "com.microsoft.playready"]
|
||||
|
||||
try:
|
||||
psshWV = [
|
||||
session_key.uri.split(",")[-1]
|
||||
for session_key in master.session_keys
|
||||
if (
|
||||
session_key.keyformat.lower() == "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
|
||||
and
|
||||
source == "DSNP"
|
||||
and
|
||||
x.stream_info.characteristics.lower().replace('"', "") in session_key.characteristics.lower().split(",")
|
||||
)
|
||||
][0]
|
||||
except IndexError:
|
||||
try:
|
||||
psshWV = [x.uri.split(",")[-1] for x in master.session_keys if x.keyformat.lower() == "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"][0]
|
||||
except IndexError:
|
||||
@ -108,8 +82,24 @@ def parse(master, source=None):
|
||||
descriptor=Track.Descriptor.M3U,
|
||||
# decryption
|
||||
encrypted=bool(master.keys or master.session_keys),
|
||||
psshWV=psshWV,
|
||||
psshPR=psshPR,
|
||||
psshWV= [
|
||||
session_key.uri.split(",")[-1]
|
||||
for session_key in master.session_keys
|
||||
if (
|
||||
session_key.keyformat.lower() == "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
|
||||
and
|
||||
x.stream_info.characteristics.lower().replace('"', "") in session_key.characteristics.lower().split(",")
|
||||
)
|
||||
][0] if source == "DSNP" else (psshWV if psshWV != [] else None),
|
||||
psshPR=[
|
||||
session_key.uri.split(",")[-1]
|
||||
for session_key in master.session_keys
|
||||
if (
|
||||
session_key.keyformat.lower() == "com.microsoft.playready"
|
||||
and
|
||||
x.stream_info.characteristics.lower().replace('"', "") in session_key.characteristics.lower().split(",")
|
||||
)
|
||||
][0] if source == "DSNP" else (psshPR if psshPR != [] else None),
|
||||
# extra
|
||||
extra=x
|
||||
) for x in master.playlists],
|
||||
|
||||
@ -106,7 +106,7 @@ class AppleTVPlus(BaseService):
|
||||
id_=self.title,
|
||||
type_=Title.Types.MOVIE,
|
||||
name=title_information["title"],
|
||||
#year=datetime.utcfromtimestamp(title_information["releaseDate"] / 1000).year,
|
||||
year=datetime.utcfromtimestamp(title_information["releaseDate"] / 1000).year,
|
||||
original_lang=title_information["originalSpokenLanguages"][0]["locale"],
|
||||
source=self.ALIASES[0],
|
||||
service_data=title_information
|
||||
@ -117,8 +117,8 @@ class AppleTVPlus(BaseService):
|
||||
id_=self.title,
|
||||
type_=Title.Types.MOVIE,
|
||||
name=title_information["title"],
|
||||
#year=datetime.utcfromtimestamp(title_information["releaseDate"] / 1000).year,
|
||||
#original_lang=title_information["originalSpokenLanguages"][0]["locale"],
|
||||
year=datetime.utcfromtimestamp(title_information["releaseDate"] / 1000).year,
|
||||
original_lang=title_information["originalSpokenLanguages"][0]["locale"],
|
||||
source=self.ALIASES[0],
|
||||
service_data=title_information
|
||||
)
|
||||
@ -243,13 +243,7 @@ class AppleTVPlus(BaseService):
|
||||
)
|
||||
])
|
||||
except:
|
||||
return Tracks([
|
||||
# multiple CDNs, only want one
|
||||
x for x in tracks
|
||||
#if any(
|
||||
# cdn in as_list(x.url)[0].split("?")[1].split("&") for cdn in ["cdn=ak", "cdn=vod-ak-aoc.tv.apple.com"]
|
||||
#)
|
||||
])
|
||||
return Tracks([x for x in tracks])
|
||||
|
||||
def get_chapters(self, title):
|
||||
return []
|
||||
@ -284,7 +278,10 @@ class AppleTVPlus(BaseService):
|
||||
if not e.response.text:
|
||||
raise self.log.exit(" - No license returned!")
|
||||
raise self.log.exit(f" - Unable to obtain license (error code: {e.response.json()['errorCode']})")
|
||||
try:
|
||||
return base64.b64decode(res['streaming-response']['streaming-keys'][0]["license"])
|
||||
except:
|
||||
raise self.log.exit(res['streaming-response'])
|
||||
|
||||
# Service specific functions
|
||||
|
||||
|
||||
@ -8,6 +8,7 @@ aria2c:
|
||||
cdm:
|
||||
default: 'hisense_smarttv_he55a7000euwts_sl3000'
|
||||
Amazon: 'hisense_smarttv_he55a7000euwts_sl3000'
|
||||
AppleTVPlus: 'mtc_mtc_atv_atv_sl3000'
|
||||
Hotstar: 'xiaomi_mi_a1_15.0.0_60ceee88_8159_l3'
|
||||
Jio: 'xiaomi_mi_a1_15.0.0_60ceee88_8159_l3'
|
||||
DisneyPlus: 'mtc_mtc_atv_atv_sl3000'
|
||||
|
||||
Loading…
Reference in New Issue
Block a user