wvg/python/pre.py

51 lines
1.6 KiB
Python
Raw Normal View History

2024-04-18 20:48:32 +00:00
from pywidevine.cdm import Cdm
2024-04-22 12:05:09 +00:00
from pywidevine.device import Device, DeviceTypes
2024-04-18 20:48:32 +00:00
from pywidevine.pssh import PSSH
import json
from pyodide.http import pyfetch
# prepare pssh
pssh = PSSH(pssh)
# load device
2024-04-22 12:05:09 +00:00
try:
with open('device.wvd', 'wb') as f:
wvdExt=await (await pyfetch("device.wvd")).bytes()
f.write(wvdExt)
device = Device.load("device.wvd")
except OSError:
try:
print("device.wvd not found! looking for device_client_id_blob and device_private_key...")
cID=await (await pyfetch("device_client_id_blob")).bytes()
pKey=await (await pyfetch("device_private_key")).bytes()
device = Device(client_id=cID,
private_key=pKey,
type_=DeviceTypes['ANDROID'],
security_level=3,
flags=None)
except OSError:
try:
print("device_client_id_blob and device_private_key not found! looking for client_id.bin and private_key.pem...")
cID=await (await pyfetch("client_id.bin")).bytes()
pKey=await (await pyfetch("private_key.pem")).bytes()
device = Device(client_id=cID,
private_key=pKey,
type_=DeviceTypes['ANDROID'],
security_level=3,
flags=None)
except OSError:
raise FileNotFoundError("CDM Keys not found!, RTFM!")
2024-04-18 20:48:32 +00:00
# load cdm
cdm = Cdm.from_device(device)
# open cdm session
session_id = cdm.open()
# get license challenge
challenge = cdm.get_license_challenge(session_id, pssh)
licHeaders=json.loads(licHeaders)