+#!/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
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
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