projects
/
plugin.video.netflix.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
e68ef11
)
chore(performace): Prefetching of user video lists
author
Sebastian Golasch
<public@asciidisco.com>
Tue, 7 Mar 2017 21:30:32 +0000
(22:30 +0100)
committer
Sebastian Golasch
<public@asciidisco.com>
Tue, 7 Mar 2017 21:30:32 +0000
(22:30 +0100)
addon.xml
patch
|
blob
|
history
resources/language/English/strings.po
patch
|
blob
|
history
resources/language/German/strings.po
patch
|
blob
|
history
resources/lib/Navigation.py
patch
|
blob
|
history
resources/lib/NetflixHttpSubRessourceHandler.py
patch
|
blob
|
history
resources/lib/NetflixSession.py
patch
|
blob
|
history
diff --git
a/addon.xml
b/addon.xml
index f60679cd3a5d30a6a2ab487fc250b61aad11cc8a..b341ab6c1b176f7a5bdd3f60baaa114c0606d95f 100644
(file)
--- a/
addon.xml
+++ b/
addon.xml
@@
-1,5
+1,5
@@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="plugin.video.netflix" name="Netflix" version="0.10.
2
" provider-name="libdev + jojo + asciidisco">
+<addon id="plugin.video.netflix" name="Netflix" version="0.10.
3
" provider-name="libdev + jojo + asciidisco">
<requires>
<import addon="xbmc.python" version="2.24.0"/>
<import addon="script.module.beautifulsoup4" version="4.3.2"/>
<requires>
<import addon="xbmc.python" version="2.24.0"/>
<import addon="script.module.beautifulsoup4" version="4.3.2"/>
diff --git
a/resources/language/English/strings.po
b/resources/language/English/strings.po
index 7c48394c5fbc239f3c72b72262a75d8aeedeef80..918b0d879b163fc3d1f07284f7bd974a51cd5f4d 100644
(file)
--- 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
# 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 ""
# Addon Provider: libdev + jojo + asciidisco
msgid ""
msgstr ""
diff --git
a/resources/language/German/strings.po
b/resources/language/German/strings.po
index 0ff4357c546ba74d7f6c6b67b0ac4263abe57bf9..cd7fa98e5fc0b172d1cdbdd594b451f03e350816 100644
(file)
--- 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
# 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 ""
# Addon Provider: libdev + jojo + asciidisco
msgid ""
msgstr ""
diff --git
a/resources/lib/Navigation.py
b/resources/lib/Navigation.py
index 813b6444e11f4a4a936c3bcfdd08a257c21b48f6..33711a7494714b174ad6b551a2e4a1fbc76c7bbb 100644
(file)
--- 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.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
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):
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 ''
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 dd0fa08a608e56e1870327c8ea4fcf137c9d7a57..47230f459d0aea8405ea47c106bc656f6e9670e9 100644
(file)
--- 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.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):
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
else:
self.netflix_session.login(account=self.credentials)
self.profiles = self.netflix_session.profiles
+ self._prefetch_user_video_lists()
else:
self.profiles = []
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
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):
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
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 0ad98b1757fe24170a0f34ff4707a971cb345bb6..3f9173be29adac83336bf0ab289bfad350f16f29 100644
(file)
--- 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.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
return netflix_page_data