diff --git a/lib/streaming_providers/providers/rtlplus/channel_manager.py b/lib/streaming_providers/providers/rtlplus/channel_manager.py index 9c034d6..5d13371 100644 --- a/lib/streaming_providers/providers/rtlplus/channel_manager.py +++ b/lib/streaming_providers/providers/rtlplus/channel_manager.py @@ -336,7 +336,11 @@ class RTLPlusChannelManager: preferred_format preferred_drm_type """ - # Normalize the channel identifier to SEO name + token = self._provider.get_user_bearer_token() + if not token: + logger.error("User authentication required for linear TV stream, not authenticated") + return None # or [] for DRM + channel_seo = self._normalize_channel_identifier(channel_id) assets = self.extract_stream_assets(channel_seo) diff --git a/lib/streaming_providers/providers/rtlplus/provider.py b/lib/streaming_providers/providers/rtlplus/provider.py index e23cf7e..4a2f996 100644 --- a/lib/streaming_providers/providers/rtlplus/provider.py +++ b/lib/streaming_providers/providers/rtlplus/provider.py @@ -358,4 +358,16 @@ class RTLPlusProvider(StreamingProvider): data = response.json() self._manifest_cache[content_id] = (data, now) - return data \ No newline at end of file + return data + + def get_user_bearer_token(self) -> Optional[str]: + """Get a user-authenticated bearer token, upgrading if necessary. Returns None if impossible.""" + from ...base.auth.base_auth import TokenAuthLevel + current_level = self.authenticator.get_current_token_level() + if current_level == TokenAuthLevel.USER_AUTHENTICATED: + return self.authenticator.get_bearer_token() + if self.authenticator.has_user_credentials(): + token = self.authenticator.get_bearer_token(force_upgrade=True) + if self.authenticator.get_current_token_level() == TokenAuthLevel.USER_AUTHENTICATED: + return token + return None \ No newline at end of file