From 0ee2733cb9b42b6f7ff5f6e40d1f2ee079ba6991 Mon Sep 17 00:00:00 2001 From: Nirvana Date: Sun, 17 May 2026 13:20:17 +0200 Subject: [PATCH] RTL fix live events --- .../providers/rtlplus/event_manager.py | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/lib/streaming_providers/providers/rtlplus/event_manager.py b/lib/streaming_providers/providers/rtlplus/event_manager.py index 467c6ef..0a9ffcb 100644 --- a/lib/streaming_providers/providers/rtlplus/event_manager.py +++ b/lib/streaming_providers/providers/rtlplus/event_manager.py @@ -116,8 +116,28 @@ class RTLPlusEventManager: logger.info(f"Returning {len(filtered_events)} events after filtering") return filtered_events + def get_manifest_for_event(self, event_id: str) -> Optional[str]: + """Get manifest URL for an event, following live redirects.""" + + layout = self._provider.fetch_layout(layout_type="folder", content_id=event_id) + if not layout: + return None + + # Try folder first + manifest = self._extract_manifest_from_folder_layout(layout) + if manifest: + return manifest + + # Follow live redirect if needed - delegate to channel_manager + live_id, live_seo = self._extract_live_target_from_folder(layout) + if live_id and live_seo: + logger.debug(f"Event {event_id} redirects to live channel {live_id} (seo: {live_seo})") + return self._provider.channel_manager.get_best_manifest_url(live_id) + + return None + def get_drm_for_event(self, event_id: str) -> List[DRMConfig]: - """Get DRM configuration for an event (folder).""" + """Get DRM configuration for an event (folder), following live redirects.""" # Step 1: Fetch folder layout folder_layout = self._provider.fetch_layout( @@ -142,26 +162,6 @@ class RTLPlusEventManager: logger.warning(f"No DRM config found for event {event_id}") return [] - def get_manifest_for_event(self, event_id: str) -> Optional[str]: - """Get manifest URL for an event, following live redirects.""" - - layout = self._provider.fetch_layout(layout_type="folder", content_id=event_id) - if not layout: - return None - - # Try folder first - manifest = self._extract_manifest_from_folder_layout(layout) - if manifest: - return manifest - - # Follow live redirect if needed - delegate to channel_manager - live_id, live_seo = self._extract_live_target_from_folder(layout) - if live_id and live_seo: - logger.debug(f"Event {event_id} redirects to live channel {live_id} (seo: {live_seo})") - return self._provider.channel_manager.get_best_manifest_url(live_id) - - return None - @staticmethod def _extract_live_target_from_folder(layout: Dict) -> Tuple[Optional[str], Optional[str]]: """Extract live channel ID and SEO slug from folder layout's action target."""