mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2026-11-12 20:15:10 +00:00
Merge pull request #160 from CodeName393/custom-api
feat(cdm): API Improvements
This commit is contained in:
@@ -641,7 +641,14 @@ class CustomRemoteCDM:
|
||||
key_type = key_obj.get(key_fields.get("type", "type"), "CONTENT")
|
||||
|
||||
if kid and key:
|
||||
keys.append({"kid": str(kid), "key": str(key), "type": str(key_type)})
|
||||
keys.append(
|
||||
{
|
||||
"kid": str(kid),
|
||||
"key": str(key),
|
||||
"type": str(key_type),
|
||||
"permissions": key_obj.get("permissions", []),
|
||||
}
|
||||
)
|
||||
|
||||
elif isinstance(keys_data, str):
|
||||
keys = self.apply_transform(keys_data, "parse_key_string")
|
||||
@@ -779,8 +786,6 @@ class CustomRemoteCDM:
|
||||
InvalidSession: If session ID is invalid
|
||||
requests.RequestException: If API request fails
|
||||
"""
|
||||
_ = license_type, privacy_mode
|
||||
|
||||
if session_id not in self._sessions:
|
||||
raise CustomRemoteCDMExceptions.InvalidSession(f"Invalid session ID: {session_id.hex()}")
|
||||
|
||||
@@ -818,6 +823,8 @@ class CustomRemoteCDM:
|
||||
base_params = {
|
||||
"scheme": self.device_name,
|
||||
"init_data": init_data,
|
||||
"license_type": license_type,
|
||||
"privacy_mode": privacy_mode,
|
||||
}
|
||||
|
||||
if self.service_name:
|
||||
@@ -1028,7 +1035,25 @@ class CustomRemoteCDM:
|
||||
raise CustomRemoteCDMExceptions.InvalidSession(f"Invalid session ID: {session_id.hex()}")
|
||||
|
||||
key_dicts = self._sessions[session_id]["keys"]
|
||||
keys = [Key(kid=k["kid"], key=k["key"], type_=k["type"]) for k in key_dicts]
|
||||
keys = []
|
||||
for k in key_dicts:
|
||||
kid_val = k["kid"]
|
||||
if isinstance(kid_val, str):
|
||||
clean_kid = kid_val.replace("-", "")
|
||||
kid_obj = UUID(hex=clean_kid) if len(clean_kid) == 32 else UUID(hex=clean_kid.ljust(32, "0"))
|
||||
else:
|
||||
kid_obj = kid_val
|
||||
|
||||
key_bytes = bytes.fromhex(k["key"].replace(":", "")) if isinstance(k["key"], str) else k["key"]
|
||||
|
||||
keys.append(
|
||||
Key(
|
||||
type_=k.get("type", "CONTENT"),
|
||||
kid=kid_obj,
|
||||
key=key_bytes,
|
||||
permissions=k.get("permissions", []),
|
||||
)
|
||||
)
|
||||
|
||||
if type_:
|
||||
keys = [key for key in keys if key.type == type_]
|
||||
|
||||
Reference in New Issue
Block a user