58 lines
2.2 KiB
Python
58 lines
2.2 KiB
Python
|
from devine.core.manifests import dash, hls
|
||
|
from devine.core.tracks import Tracks
|
||
|
import requests
|
||
|
from . import Decrypt
|
||
|
|
||
|
# Define a function to get PSSH from MPD
|
||
|
def get_pssh(mpd_or_m3u8_url):
|
||
|
try:
|
||
|
tracks = Tracks()
|
||
|
client = requests.Session()
|
||
|
License_cURL = Decrypt.load_license_curl()
|
||
|
if License_cURL.headers:
|
||
|
client.headers.update(License_cURL.headers)
|
||
|
if License_cURL.cookies:
|
||
|
client.cookies.update(License_cURL.cookies)
|
||
|
mpd = dash.DASH.from_url(url=mpd_or_m3u8_url).to_tracks(language="en")
|
||
|
tracks.add(mpd)
|
||
|
PSSH = []
|
||
|
for track in tracks:
|
||
|
representation = track.data['dash']['representation']
|
||
|
adaptation_set = track.data['dash']['adaptation_set']
|
||
|
track_drm = dash.DASH.get_drm(
|
||
|
representation.findall("ContentProtection") +
|
||
|
adaptation_set.findall("ContentProtection")
|
||
|
)
|
||
|
for drm in track_drm:
|
||
|
PSSH.append(drm.pssh)
|
||
|
pssh_list = []
|
||
|
for pssh in PSSH:
|
||
|
if str(pssh) not in pssh_list:
|
||
|
pssh_list.append(str(pssh))
|
||
|
return pssh_list
|
||
|
except:
|
||
|
try:
|
||
|
tracks = Tracks()
|
||
|
client = requests.Session()
|
||
|
License_cURL = Decrypt.load_license_curl()
|
||
|
client.headers.update(License_cURL.headers)
|
||
|
client.cookies.update(License_cURL.cookies)
|
||
|
hls = hls.from_url(url=mpd_or_m3u8_url, session=client).to_tracks()
|
||
|
tracks.add(hls)
|
||
|
PSSH = []
|
||
|
for track in tracks:
|
||
|
representation = track.data['dash']['representation']
|
||
|
adaptation_set = track.data['dash']['adaptation_set']
|
||
|
track_drm = dash.DASH.get_drm(
|
||
|
representation.findall("ContentProtection") +
|
||
|
adaptation_set.findall("ContentProtection")
|
||
|
)
|
||
|
for drm in track_drm:
|
||
|
PSSH.append(drm.pssh)
|
||
|
pssh_list = []
|
||
|
for pssh in PSSH:
|
||
|
if str(pssh) not in pssh_list:
|
||
|
pssh_list.append(str(pssh))
|
||
|
return pssh_list
|
||
|
except:
|
||
|
return
|