X-Git-Url: http://git.code-monkey.de/?p=plugin.video.netflix.git;a=blobdiff_plain;f=resources%2Flib%2FNetflixSession.py;h=a4c48744ef7a933cd6e0cc18ef2dc8b9a0dc4929;hp=0e75d0dbd1a74dcfe42f9f646b50529d2a1e37de;hb=385854355a756f1689ef897443876e4f75ace542;hpb=a36d534fb70a74aa805e147c4f26d518b1edfdf8 diff --git a/resources/lib/NetflixSession.py b/resources/lib/NetflixSession.py index 0e75d0d..a4c4874 100644 --- a/resources/lib/NetflixSession.py +++ b/resources/lib/NetflixSession.py @@ -3,20 +3,18 @@ # Module: NetflixSession # Created on: 13.01.2017 -import sys import os -import base64 -import time -import urllib import json -import requests +from requests import session, cookies +from urllib import quote, unquote +from time import time +from base64 import urlsafe_b64encode +from bs4 import BeautifulSoup, SoupStrainer +from utils import noop, get_user_agent_for_current_platform try: import cPickle as pickle except: import pickle -from bs4 import BeautifulSoup, SoupStrainer -from pyjsparser import PyJsParser -from utils import noop class NetflixSession: """Helps with login/session management of Netflix users & API data fetching""" @@ -26,15 +24,16 @@ class NetflixSession: urls = { 'login': '/login', - 'browse': '/browse', - 'video_list_ids': '/warmer', + 'browse': '/profiles/manage', + 'video_list_ids': '/preflight', 'shakti': '/pathEvaluator', - 'profiles': '/profiles', + 'profiles': '/profiles/manage', 'switch_profiles': '/profiles/switch', 'adult_pin': '/pin/service', 'metadata': '/metadata', 'set_video_rating': '/setVideoRating', - 'update_my_list': '/playlistop' + 'update_my_list': '/playlistop', + 'kids': '/Kids' } """:obj:`dict` of :obj:`str` List of all static endpoints for HTML/JSON POST/GET requests""" @@ -62,15 +61,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 +78,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 +100,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 - self.session = requests.session() + # start session, fake chrome on the current platform (so that we get a proper widevine esn) & enable gzip + self.session = 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': get_user_agent_for_current_platform(), + 'Accept-Encoding': 'gzip' }) def parse_login_form_fields (self, form_soup): @@ -158,209 +149,14 @@ class NetflixSession: :obj:`list` of :obj:`dict` List of all the serialized data pulled out of the pagws