X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=resources%2Flib%2FNetflixHttpSubRessourceHandler.py;h=47230f459d0aea8405ea47c106bc656f6e9670e9;hb=b6a1c1cd2250104b139115ef16475c539626a9a7;hp=c7626ea053d70fb1abbb755360ba4ad1b31d1860;hpb=69bafa3b4cb738c563f3cc8f7affe7b4fa8e91ea;p=plugin.video.netflix.git diff --git a/resources/lib/NetflixHttpSubRessourceHandler.py b/resources/lib/NetflixHttpSubRessourceHandler.py index c7626ea..47230f4 100644 --- a/resources/lib/NetflixHttpSubRessourceHandler.py +++ b/resources/lib/NetflixHttpSubRessourceHandler.py @@ -1,23 +1,52 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Module: NetflixHttpSubRessourceHandler +# Created on: 07.03.2017 + class NetflixHttpSubRessourceHandler: def __init__ (self, kodi_helper, netflix_session): self.kodi_helper = kodi_helper self.netflix_session = netflix_session - credentials = self.kodi_helper.get_credentials() - - if self.netflix_session.is_logged_in(account=credentials): - self.netflix_session.refresh_session_data(account=credentials) + 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): + self.netflix_session.refresh_session_data(account=self.credentials) + else: + self.netflix_session.login(account=self.credentials) + self.profiles = self.netflix_session.profiles + self._prefetch_user_video_lists() else: - self.netflix_session.login(account=credentials) - self.profiles = self.netflix_session.profiles + 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): - credentials = self.kodi_helper.get_credentials() - return self.netflix_session.is_logged_in(account=credentials) + if self.credentials['email'] == '' or self.credentials['password'] == '': + return False + return self.netflix_session.is_logged_in(account=self.credentials) def logout (self, params): + self.profiles = [] + self.credentials = {'email': '', 'password': ''} return self.netflix_session.logout() + def login (self, params): + email = params.get('email', [''])[0] + password = params.get('password', [''])[0] + if email != '' and password != '': + self.credentials = {'email': email, 'password': password} + _ret = self.netflix_session.login(account=self.credentials) + self.profiles = self.netflix_session.profiles + return _ret + return None + def list_profiles (self, params): return self.profiles @@ -25,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 @@ -74,9 +107,8 @@ class NetflixHttpSubRessourceHandler: return self.netflix_session.fetch_metadata(id=video_id) def switch_profile (self, params): - credentials = self.kodi_helper.get_credentials() profile_id = params.get('profile_id', [''])[0] - return self.netflix_session.switch_profile(profile_id=profile_id, account=credentials) + return self.netflix_session.switch_profile(profile_id=profile_id, account=self.credentials) def get_user_data (self, params): return self.netflix_session.user_data