From bf0e472abcb15012484695bf67e981a10e1e0bfa Mon Sep 17 00:00:00 2001 From: Nirvana Date: Thu, 7 May 2026 13:41:43 +0200 Subject: [PATCH] Implement RTL VOD series/episodes --- .../providers/rtlplus/vod_manager.py | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/streaming_providers/providers/rtlplus/vod_manager.py b/lib/streaming_providers/providers/rtlplus/vod_manager.py index 25db40c..1a0574d 100644 --- a/lib/streaming_providers/providers/rtlplus/vod_manager.py +++ b/lib/streaming_providers/providers/rtlplus/vod_manager.py @@ -447,6 +447,10 @@ class RTLPlusVodManager: logger.error(f"Failed to fetch layout for program {program_id}") return {"entries": [], "next_cursor": None, "total": 0} + # DEBUG: Log layout structure + logger.debug(f"Layout keys for program {program_id}: {layout.keys()}") + logger.debug(f"Blocks count: {len(layout.get('blocks', []))}") + # FIRST: Check if this is a movie (direct playable video) movie_item = self._find_direct_video_in_layout(layout) if movie_item: @@ -470,7 +474,13 @@ class RTLPlusVodManager: } # SECOND: Extract monthly archive selector (for news/reality shows) - season_selector, current_episodes = self._extract_season_selector_with_episodes(layout) + try: + season_selector, current_episodes = self._extract_season_selector_with_episodes(layout) + logger.debug(f"Monthly selector: {len(season_selector)} months, {len(current_episodes)} current episodes") + except Exception as e: + logger.error(f"Error in _extract_season_selector_with_episodes: {e}", exc_info=True) + season_selector, current_episodes = [], [] + if season_selector: # We have monthly folders - return the selector for navigation entries = season_selector @@ -512,7 +522,12 @@ class RTLPlusVodManager: } # THIRD: Extract numbered seasons (for traditional series) - numbered_seasons = self._extract_seasons_from_layout(layout) + try: + numbered_seasons = self._extract_seasons_from_layout(layout) + logger.debug(f"Numbered seasons: {len(numbered_seasons)}") + except Exception as e: + logger.error(f"Error in _extract_seasons_from_layout: {e}", exc_info=True) + numbered_seasons = [] if numbered_seasons: start = 0 if cursor: @@ -872,6 +887,9 @@ class RTLPlusVodManager: def _extract_vod_item_from_block_item(self, item: Dict) -> Optional[VodItem]: """Build a VodItem from a list/block item (episode row).""" + if not item or not isinstance(item, dict): + return None + if not item or item.get("itemType") != "classic": return None