Merge pull request #160 from CodeName393/custom-api

feat(cdm): API Improvements
This commit is contained in:
sp4rk.y
2026-09-26 10:50:32 -06:00
committed by GitHub
+29 -4
View File
@@ -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_]