Add files via upload

This commit is contained in:
n0stal6ic
2026-05-17 22:45:12 -05:00
committed by GitHub
parent af82f5464b
commit 788a503401
2 changed files with 26 additions and 14 deletions
+17 -10
View File
@@ -76,7 +76,6 @@ class PCOK(Service):
self.use_playready = False
self.tokens: Optional[dict] = None
self.license_url: Optional[str] = None
def authenticate(self, cookies: Optional[CookieJar] = None, credential: Optional[Credential] = None) -> None:
super().authenticate(cookies, credential)
@@ -301,6 +300,7 @@ class PCOK(Service):
name=res["attributes"]["title"],
year=res["attributes"].get("year"),
data=res,
description=res["attributes"].get("synopsis"),
)
])
@@ -320,6 +320,7 @@ class PCOK(Service):
name=ep["attributes"].get("title"),
year=ep["attributes"].get("year"),
data=ep,
description=ep["attributes"].get("synopsis"),
)
for ep in episodes
])
@@ -403,7 +404,7 @@ class PCOK(Service):
f"Playout error: {manifest.get('description', 'unknown')} [{manifest['errorCode']}]"
)
self.license_url = manifest["protection"]["licenceAcquisitionUrl"]
license_url = manifest["protection"]["licenceAcquisitionUrl"]
endpoints = manifest["asset"]["endpoints"]
dash_url = next(
@@ -425,17 +426,23 @@ class PCOK(Service):
for audio in tracks.audio:
if audio.language.territory == "AD":
audio.language.territory = None
audio.descriptive = True
audio.language = Language.make(language=audio.language.language)
audio.name = None
for track in tracks:
track.data["license_url"] = license_url
return tracks
def get_chapters(self, title: Title_T) -> Chapters:
return Chapters()
def _license_request(self, challenge: bytes) -> bytes:
path = urlparse(self.license_url).path
def _license_request(self, challenge: bytes, track: AnyTrack) -> bytes:
license_url = track.data["license_url"]
path = urlparse(license_url).path
r = self.session.post(
url=self.license_url,
url=license_url,
data=challenge,
headers={
"X-Sky-Signature": self._sign("POST", path, {}, challenge),
@@ -445,11 +452,11 @@ class PCOK(Service):
return r.content
def get_widevine_license(self, *, challenge: bytes, title: Title_T, track: AnyTrack) -> Optional[bytes]:
if not self.license_url:
if not track.data.get("license_url"):
return None
return self._license_request(challenge)
return self._license_request(challenge, track)
def get_playready_license(self, *, challenge: bytes, title: Title_T, track: AnyTrack) -> Optional[bytes]:
if not self.license_url:
if not track.data.get("license_url"):
return None
return self._license_request(challenge)
return self._license_request(challenge, track)
+6 -1
View File
@@ -27,7 +27,12 @@ client:
endpoints:
login: https://rango.id.peacocktv.com/signin/service/international
personas: https://persona.id.peacocktv.com/persona-store/personas
tokens: https://play.ovp.peacocktv.com/auth/tokens
me: https://play.ovp.peacocktv.com/auth/users/me
node: https://atom.peacocktv.com/adapter-calypso/v3/query/node
vod: https://play.ovp.peacocktv.com/video/playouts/vod
legacy_endpoints:
tokens: https://ovp.peacocktv.com/auth/tokens
me: https://ovp.peacocktv.com/auth/users/me
node: https://atom.peacocktv.com/adapter-calypso/v3/query/node
vod: https://ovp.peacocktv.com/video/playouts/vod