fix(import): inject only the imported title's keys into each track

This commit is contained in:
imSp4rky
2026-09-12 20:30:56 -06:00
parent a7d6791136
commit 70c3a05552
+5 -4
View File
@@ -305,10 +305,11 @@ class ImportService:
self.tracks_by_title[title_id] = tracks
return tracks
def key_pool(self) -> dict[UUID, str]:
"""All exported KID:KEY pairs across every title, as {UUID: key_hex}."""
def key_pool(self, title_id: Optional[str] = None) -> dict[UUID, str]:
"""Exported KID:KEY pairs as {UUID: key_hex}, for one title or across every title."""
pool: dict[UUID, str] = {}
for entry in self.titles_data.values():
entries = [self.titles_data.get(title_id, {})] if title_id else self.titles_data.values()
for entry in entries:
for track_dict in (entry.get("tracks") or {}).values():
for kid_hex, key in (track_dict.get("keys") or {}).items():
pool[UUID(hex=kid_hex)] = key
@@ -347,7 +348,7 @@ class ImportService:
which DASH.download_track preserves. decrypt() applies the content key whose KID
matches the media.
"""
pool = self.key_pool()
pool = self.key_pool(str(title.id)) or self.key_pool()
if not pool:
return