From b6a1c1cd2250104b139115ef16475c539626a9a7 Mon Sep 17 00:00:00 2001 From: Sebastian Golasch Date: Tue, 7 Mar 2017 22:30:32 +0100 Subject: [PATCH] chore(performace): Prefetching of user video lists --- addon.xml | 2 +- resources/language/English/strings.po | 2 +- resources/language/German/strings.po | 2 +- resources/lib/Navigation.py | 2 -- resources/lib/NetflixHttpSubRessourceHandler.py | 12 ++++++++++++ resources/lib/NetflixSession.py | 2 +- 6 files changed, 16 insertions(+), 6 deletions(-) diff --git a/addon.xml b/addon.xml index f60679c..b341ab6 100644 --- a/addon.xml +++ b/addon.xml @@ -1,5 +1,5 @@ - + diff --git a/resources/language/English/strings.po b/resources/language/English/strings.po index 7c48394..918b0d8 100644 --- a/resources/language/English/strings.po +++ b/resources/language/English/strings.po @@ -1,7 +1,7 @@ # Kodi Media Center language file # Addon Name: Netflix # Addon id: plugin.video.netflix -# Addon version: 0.10.2 +# Addon version: 0.10.3 # Addon Provider: libdev + jojo + asciidisco msgid "" msgstr "" diff --git a/resources/language/German/strings.po b/resources/language/German/strings.po index 0ff4357..cd7fa98 100644 --- a/resources/language/German/strings.po +++ b/resources/language/German/strings.po @@ -1,7 +1,7 @@ # Kodi Media Center language file # Addon Name: Netflix # Addon id: plugin.video.netflix -# Addon version: 0.10.2 +# Addon version: 0.10.3 # Addon Provider: libdev + jojo + asciidisco msgid "" msgstr "" diff --git a/resources/lib/Navigation.py b/resources/lib/Navigation.py index 813b644..33711a7 100644 --- a/resources/lib/Navigation.py +++ b/resources/lib/Navigation.py @@ -415,7 +415,6 @@ class Navigation: self.call_netflix_service({'method': 'switch_profile', 'profile_id': params['profile_id']}) # check login, in case of main menu if 'action' not in params: - self.kodi_helper.log('ES Called - Zeile 428') self.establish_session(account=credentials) return options @@ -486,7 +485,6 @@ class Navigation: if 'error' in response: # check if we do not have a valid session, in case that happens: (re)login if self._is_expired_session(response=response): - self.kodi_helper.log('ES Called - Zeile 499') if self.establish_session(account=self.kodi_helper.get_credentials()): return True message = response['message'] if 'message' in response else '' diff --git a/resources/lib/NetflixHttpSubRessourceHandler.py b/resources/lib/NetflixHttpSubRessourceHandler.py index dd0fa08..47230f4 100644 --- a/resources/lib/NetflixHttpSubRessourceHandler.py +++ b/resources/lib/NetflixHttpSubRessourceHandler.py @@ -9,6 +9,7 @@ class NetflixHttpSubRessourceHandler: self.kodi_helper = kodi_helper self.netflix_session = netflix_session self.credentials = self.kodi_helper.get_credentials() + self.video_list_cache = {} if self.credentials['email'] != '' and self.credentials['password'] != '': if self.netflix_session.is_logged_in(account=self.credentials): @@ -16,9 +17,16 @@ class NetflixHttpSubRessourceHandler: else: self.netflix_session.login(account=self.credentials) self.profiles = self.netflix_session.profiles + self._prefetch_user_video_lists() else: self.profiles = [] + def _prefetch_user_video_lists (self): + for profile_id in self.profiles: + self.switch_profile({'profile_id': [profile_id]}) + self.video_list_cache[profile_id] = self.fetch_video_list_ids({}) + print self.video_list_cache + def is_logged_in (self, params): if self.credentials['email'] == '' or self.credentials['password'] == '': return False @@ -46,6 +54,10 @@ class NetflixHttpSubRessourceHandler: return self.netflix_session.esn def fetch_video_list_ids (self, params): + cached_list = self.video_list_cache.get(self.netflix_session.user_data['guid'], None) + if cached_list != None: + self.kodi_helper.log('Serving cached list for user: ' + self.netflix_session.user_data['guid']) + return cached_list video_list_ids_raw = self.netflix_session.fetch_video_list_ids() if 'error' in video_list_ids_raw: return video_list_ids_raw diff --git a/resources/lib/NetflixSession.py b/resources/lib/NetflixSession.py index 0ad98b1..3f9173b 100644 --- a/resources/lib/NetflixSession.py +++ b/resources/lib/NetflixSession.py @@ -2296,5 +2296,5 @@ class NetflixSession: self.esn = self._parse_esn_data(netflix_page_data=netflix_page_data) self.api_data = self._parse_api_base_data(netflix_page_data=netflix_page_data) self.profiles = self._parse_profile_data(netflix_page_data=netflix_page_data) - self.log('Found ESN "' + self.esn) + self.log('Found ESN "' + self.esn + '"') return netflix_page_data -- 2.30.2