From a65cc315b96918b091c6b962aefaf537e36e8ef5 Mon Sep 17 00:00:00 2001 From: Simon De Ridder Date: Tue, 19 May 2026 01:03:30 +0200 Subject: [PATCH] fix resumepoints --- resources/lib/api.py | 9 ++++++++- resources/lib/playerinfo.py | 4 ++-- tests/test_api.py | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/resources/lib/api.py b/resources/lib/api.py index 54b71895..83c35b92 100644 --- a/resources/lib/api.py +++ b/resources/lib/api.py @@ -196,10 +196,12 @@ def resumepoints_is_activated(): def get_resumepoint_data(episode_id): """Get resumepoint data from GraphQL API""" + if not episode_id: + return None data_json = get_stream_data(episode_id) return next( (mode.get('resumePointTemplate', {}) - for mode in data_json.get('data', {}).get('page', {}).get('player', {}).get('modes', []) + for mode in (data_json.get('data', {}).get('page') or {}).get('player', {}).get('modes', []) if mode.get('__typename') == 'VideoPlayerMode'), None ) @@ -305,6 +307,11 @@ def get_stream_data(page_id): image { templateUrl } + progress { + durationInSeconds + progressInSeconds + completed + } modes { ... on VideoPlayerMode { streamId diff --git a/resources/lib/playerinfo.py b/resources/lib/playerinfo.py index 027fbdf7..6802c46d 100644 --- a/resources/lib/playerinfo.py +++ b/resources/lib/playerinfo.py @@ -72,8 +72,8 @@ def onPlayBackStarted(self): # pylint: disable=invalid-name return # Get resumepoint data - episode_id = '/' + self.path.split('//')[1] - resumepoint_data = get_resumepoint_data(episode_id=episode_id) + episode_id = '/vrtmax' + self.path.split('//vrtmax', 1)[1] if '//vrtmax' in self.path else None + resumepoint_data = get_resumepoint_data(episode_id=episode_id) or {} self.video_id = resumepoint_data.get('mediaId') self.resumepoint_title = resumepoint_data.get('mediaName') diff --git a/tests/test_api.py b/tests/test_api.py index d724eca2..a2ee5b77 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -119,7 +119,7 @@ def test_episode_plot(self): def test_upnext(self): """Test getting next episode (de-ideale-wereld)""" - episode_id = '/vrtmax/a-z/de-ideale-wereld/2025-vj/de-ideale-wereld-d20250430-a31/' + episode_id = '/vrtmax/a-z/de-ideale-wereld/2026-vj/de-ideale-wereld-d20260430-a40/' next_episode = get_next_info(episode_id).get('next_episode') self.assertTrue(next_episode) print(next_episode)