From a27d3010f123b7d83bbc82cf803cf7d940cd6a22 Mon Sep 17 00:00:00 2001 From: Nirvana Date: Mon, 17 Nov 2025 12:59:51 +0100 Subject: [PATCH] Fix taa_client --- .../providers/magenta2/config_models.py | 16 ++- .../providers/magenta2/provider.py | 105 ++++++++++++++++-- 2 files changed, 106 insertions(+), 15 deletions(-) diff --git a/lib/streaming_providers/providers/magenta2/config_models.py b/lib/streaming_providers/providers/magenta2/config_models.py index afa9dc5..099b3a4 100644 --- a/lib/streaming_providers/providers/magenta2/config_models.py +++ b/lib/streaming_providers/providers/magenta2/config_models.py @@ -84,6 +84,8 @@ class MpxConfig: feeds: Dict[str, str] = field(default_factory=dict) # ADD THIS: Channel stations feed channel_stations_feed: Optional[str] = None + mpx_account_uri: Optional[str] = None # Actual account URI for persona token + mpx_basic_url_selector_service: Optional[str] = None # MPD manifest endpoint @classmethod def from_manifest_data(cls, manifest_data: Dict[str, Any]) -> 'MpxConfig': @@ -130,16 +132,20 @@ class MpxConfig: bookmark_base_url=get_param('mpxBookmarkBaseUrl') or mpx_data.get('bookmarkBaseUrl'), pvr_base_url=get_param('mpxPvrBaseUrl') or mpx_data.get('pvrBaseUrl'), feeds=feeds, - # ADD THIS: - channel_stations_feed=channel_stations_feed + channel_stations_feed=channel_stations_feed, + mpx_account_uri = get_param('mpxAccountUri'), # Extract actual account URI + mpx_basic_url_selector_service = get_param('mpxBasicUrlSelectorService') # Extract MPD endpoint ) def get_account_uri(self) -> str: """ - NEW: Construct MPX account URI for persona token composition - Format: urn:theplatform:auth:root:{accountPid} + Get MPX account URI for persona token composition + Prefer actual mpxAccountUri, fallback to constructed format """ - return f"urn:theplatform:auth:root:{self.account_pid}" + if self.mpx_account_uri: + return self.mpx_account_uri + # Fallback to constructed format + return "http://access.auth.theplatform.com/data/Account/2709353023" @dataclass diff --git a/lib/streaming_providers/providers/magenta2/provider.py b/lib/streaming_providers/providers/magenta2/provider.py index 283b6c0..7c8c3d6 100644 --- a/lib/streaming_providers/providers/magenta2/provider.py +++ b/lib/streaming_providers/providers/magenta2/provider.py @@ -4,6 +4,7 @@ from typing import Dict, Optional, List, Any import json import time import uuid +import re from datetime import datetime, timedelta from ...base.provider import StreamingProvider @@ -1014,22 +1015,106 @@ class Magenta2Provider(StreamingProvider): logger.error(f"Error getting manifest for {channel.name}: {e}") return None + @staticmethod + def _parse_smil_for_mpd(smil_content: str, channel_id: str) -> Optional[str]: + """ + Parse SMIL response to extract MPD URL from