mirror of
https://github.com/nirvana-7777/script.service.ultimate.git
synced 2026-09-29 20:42:40 +02:00
Fix get_manifest
This commit is contained in:
@@ -472,36 +472,45 @@ class Magenta2Provider(StreamingProvider):
|
||||
return False
|
||||
|
||||
def get_persona_token(self, force_refresh: bool = False) -> str:
|
||||
"""Get persona token with simple provider-level caching"""
|
||||
"""
|
||||
Get persona token - PRIMARY authentication entry point
|
||||
"""
|
||||
logger.debug(f"🟢 get_persona_token START (force_refresh: {force_refresh})")
|
||||
|
||||
if not self.authenticator.token_flow_manager:
|
||||
logger.error("🔴 TokenFlowManager not initialized")
|
||||
raise Exception("TokenFlowManager not initialized")
|
||||
|
||||
# Optional: Add simple time-based caching at provider level
|
||||
if not force_refresh and hasattr(self, '_persona_cache'):
|
||||
cache_time, cached_token = self._persona_cache
|
||||
# Cache for 5 minutes at provider level (TokenFlowManager has proper JWT expiry)
|
||||
if time.time() - cache_time < 300:
|
||||
return cached_token
|
||||
try:
|
||||
persona_result = self.authenticator.token_flow_manager.get_persona_token(
|
||||
force_refresh=force_refresh
|
||||
)
|
||||
|
||||
# Get from TokenFlowManager (which has proper JWT expiry caching)
|
||||
persona_result = self.authenticator.token_flow_manager.get_persona_token(
|
||||
force_refresh=force_refresh
|
||||
)
|
||||
if not persona_result.success:
|
||||
logger.error(f"🔴 get_persona_token FAILED: {persona_result.error}")
|
||||
raise Exception(f"Failed to get persona token: {persona_result.error}")
|
||||
|
||||
if not persona_result.success:
|
||||
raise Exception(f"Failed to get persona token: {persona_result.error}")
|
||||
logger.debug(f"🟢 get_persona_token SUCCESS, token length: {len(persona_result.persona_token)}")
|
||||
return persona_result.persona_token
|
||||
|
||||
# Optional: Cache in provider (simple time-based)
|
||||
if not hasattr(self, '_persona_cache'):
|
||||
self._persona_cache = (time.time(), persona_result.persona_token)
|
||||
else:
|
||||
self._persona_cache = (time.time(), persona_result.persona_token)
|
||||
|
||||
return persona_result.persona_token
|
||||
except Exception as e:
|
||||
logger.error(f"🔴 get_persona_token EXCEPTION: {type(e).__name__}: {e}")
|
||||
import traceback
|
||||
logger.error(f"🔴 FULL TRACEBACK: {traceback.format_exc()}")
|
||||
raise
|
||||
|
||||
def _ensure_authenticated(self) -> str:
|
||||
"""Ensure we have a valid persona token"""
|
||||
return self.get_persona_token(force_refresh=False)
|
||||
logger.debug("🟢 _ensure_authenticated START")
|
||||
try:
|
||||
token = self.get_persona_token(force_refresh=False)
|
||||
logger.debug(f"🟢 _ensure_authenticated SUCCESS, token length: {len(token)}")
|
||||
return token
|
||||
except Exception as e:
|
||||
logger.error(f"🔴 _ensure_authenticated FAILED: {type(e).__name__}: {e}")
|
||||
import traceback
|
||||
logger.error(f"🔴 FULL TRACEBACK: {traceback.format_exc()}")
|
||||
raise
|
||||
|
||||
def get_dynamic_manifest_params(self, channel: StreamingChannel, **kwargs) -> Optional[str]:
|
||||
return None
|
||||
|
||||
@@ -98,7 +98,7 @@ class TokenFlowManager:
|
||||
return cached_result
|
||||
|
||||
# Get the yo_digital token
|
||||
token_result = self.get_yo_digital_token(force_refresh)
|
||||
token_result = self.get_yo_digital_token(force_refresh) # 🚨 This might return None!
|
||||
|
||||
if not token_result.success or not token_result.access_token:
|
||||
logger.debug("=== GET_PERSONA_TOKEN FAILED (token_result failed) ===")
|
||||
@@ -109,7 +109,7 @@ class TokenFlowManager:
|
||||
|
||||
# Compose persona token with expiry information using existing method
|
||||
from .token_utils import PersonaTokenComposer
|
||||
composition_result = PersonaTokenComposer.compose_from_jwt(
|
||||
composition_result = PersonaTokenComposer.compose_from_jwt( # 🚨 This might return None!
|
||||
token_result.access_token,
|
||||
MAGENTA2_FALLBACK_ACCOUNT_URI
|
||||
)
|
||||
|
||||
@@ -199,34 +199,40 @@ class PersonaTokenComposer:
|
||||
@staticmethod
|
||||
def compose_from_jwt(jwt_token: str, fallback_account_uri: str = None) -> Optional[PersonaCompositionResult]:
|
||||
"""Compose persona token and return with expiry information"""
|
||||
logger.debug(f"🟢 PersonaTokenComposer.compose_from_jwt START")
|
||||
try:
|
||||
logger.debug(f"🟢 Input JWT token length: {len(jwt_token) if jwt_token else 0}")
|
||||
|
||||
claims = JWTParser.parse(jwt_token)
|
||||
if not claims:
|
||||
logger.error("🔴 JWTParser.parse returned None")
|
||||
return None
|
||||
|
||||
# Extract the dc_cts_personaToken (this is the actual persona JWT)
|
||||
persona_jwt = claims.dc_cts_persona_token
|
||||
if not persona_jwt:
|
||||
logger.warning("JWT missing dc_cts_personaToken")
|
||||
logger.warning("🔴 JWT missing dc_cts_personaToken")
|
||||
return None
|
||||
|
||||
# Get account_uri from claims or use fallback
|
||||
account_uri = claims.account_uri or fallback_account_uri
|
||||
if not account_uri:
|
||||
logger.warning("JWT missing account_uri and no fallback provided")
|
||||
logger.warning("🔴 JWT missing account_uri and no fallback provided")
|
||||
return None
|
||||
|
||||
# Compose the persona token
|
||||
composed_token = PersonaTokenComposer._compose_token(account_uri, persona_jwt)
|
||||
if not composed_token:
|
||||
logger.error("🔴 _compose_token returned None")
|
||||
return None
|
||||
|
||||
# Extract expiry from the PERSONA JWT (dc_cts_personaToken), not the original JWT
|
||||
persona_expiry = PersonaTokenComposer._get_jwt_expiry(persona_jwt)
|
||||
if not persona_expiry:
|
||||
logger.warning("Could not extract expiry from persona JWT")
|
||||
logger.warning("🔴 Could not extract expiry from persona JWT")
|
||||
return None
|
||||
|
||||
logger.debug(f"🟢 PersonaTokenComposer.compose_from_jwt SUCCESS")
|
||||
return PersonaCompositionResult(
|
||||
persona_token=composed_token,
|
||||
persona_jwt=persona_jwt,
|
||||
@@ -234,7 +240,9 @@ class PersonaTokenComposer:
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error composing persona token: {e}")
|
||||
logger.error(f"🔴 Error in PersonaTokenComposer.compose_from_jwt: {e}")
|
||||
import traceback
|
||||
logger.error(f"🔴 FULL TRACEBACK: {traceback.format_exc()}")
|
||||
return None
|
||||
|
||||
@staticmethod
|
||||
|
||||
Reference in New Issue
Block a user