From 9616c8fc595d3b3bf2fe379febeb2f498e8001d6 Mon Sep 17 00:00:00 2001 From: Sebastian Golasch Date: Mon, 6 Mar 2017 13:51:34 +0100 Subject: [PATCH] chore(performance): Adds string parser for inline JS data & performacne profiler for requests --- addon.py | 1 + addon.xml | 2 +- resources/language/English/strings.po | 2 +- resources/language/German/strings.po | 2 +- resources/lib/Navigation.py | 2 +- resources/lib/NetflixSession.py | 721 +++++++++++++++++--------- resources/settings.xml | 1 - 7 files changed, 487 insertions(+), 244 deletions(-) diff --git a/addon.py b/addon.py index 9303b97..7126916 100644 --- a/addon.py +++ b/addon.py @@ -50,4 +50,5 @@ kodi_helper.set_library(library=library) if __name__ == '__main__': # Call the router function and pass the plugin call parameters to it. # We use string slicing to trim the leading '?' from the plugin call paramstring + kodi_helper.log('started') navigation.router(paramstring=sys.argv[2][1:]) diff --git a/addon.xml b/addon.xml index 522d5a7..d4da0c0 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 8323065..78df567 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.9.7 +# Addon version: 0.9.8 # Addon Provider: libdev + jojo + asciidisco msgid "" msgstr "" diff --git a/resources/language/German/strings.po b/resources/language/German/strings.po index 736bed1..ced3e57 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.9.7 +# Addon version: 0.9.8 # Addon Provider: libdev + jojo + asciidisco msgid "" msgstr "" diff --git a/resources/lib/Navigation.py b/resources/lib/Navigation.py index d3ef70c..79efa59 100644 --- a/resources/lib/Navigation.py +++ b/resources/lib/Navigation.py @@ -69,7 +69,7 @@ class Navigation: return False if 'action' not in params.keys(): # show the profiles - self.show_profiles() + return self.show_profiles() elif params['action'] == 'video_lists': # list lists that contain other lists (starting point with recommendations, search, etc.) return self.show_video_lists() diff --git a/resources/lib/NetflixSession.py b/resources/lib/NetflixSession.py index 60625a3..8c31724 100644 --- a/resources/lib/NetflixSession.py +++ b/resources/lib/NetflixSession.py @@ -10,6 +10,7 @@ import time import urllib import json import requests +import platform try: import cPickle as pickle except: @@ -29,7 +30,7 @@ class NetflixSession: 'browse': '/browse', 'video_list_ids': '/warmer', 'shakti': '/pathEvaluator', - 'profiles': '/profiles', + 'profiles': '/browse', 'switch_profiles': '/profiles/switch', 'adult_pin': '/pin/service', 'metadata': '/metadata', @@ -62,15 +63,7 @@ class NetflixSession: { "guid": "72ERT45...", "authURL": "145637....", - "countryOfSignup": "DE", - "emailAddress": "foo@..", - "gpsModel": "harris", - "isAdultVerified": True, - "isInFreeTrial": False, - "isKids": False, - "isTestAccount": False, - "numProfiles": 5, - "pinEnabled": True + "gpsModel": "harris" } """ @@ -87,7 +80,7 @@ class NetflixSession: """ esn = '' - """str: Widevine esn, something like: NFCDCH-MC-D7D6F54LOPY8J416T72MQXX3RD20ME""" + """str: ESN - something like: NFCDCH-MC-D7D6F54LOPY8J416T72MQXX3RD20ME""" def __init__(self, cookie_path, data_path, verify_ssl=True, log_fn=noop): """Stores the cookie path for later use & instanciates a requests @@ -109,11 +102,11 @@ class NetflixSession: self.verify_ssl = verify_ssl self.log = log_fn - # start session, fake chrome (so that we get a proper widevine esn) & enable gzip + # start session, fake chrome on the current platform (so that we get a proper widevine esn) & enable gzip self.session = requests.session() self.session.headers.update({ - 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36', - 'Accept-Encoding': 'gzip, deflate' + 'User-Agent': self._get_user_agent_for_current_platform(), + 'Accept-Encoding': 'gzip' }) def parse_login_form_fields (self, form_soup): @@ -158,209 +151,14 @@ class NetflixSession: :obj:`list` of :obj:`dict` List of all the serialized data pulled out of the pagws