CDRM-Keys/CDRM_Modules/Get_PSSH.py
CDM-Project 89bcd55f6f Update 3.0.1 - alpha
- Added MPD / HLS PSSH Parser
- Added Caching via KID
2024-09-16 20:16:14 -04:00

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