From: Sebastian Golasch Date: Wed, 26 Jul 2017 14:14:08 +0000 (+0200) Subject: feat(inputstream): Adds content lookup mime type & same user agent as for json reques... X-Git-Url: http://git.code-monkey.de/?p=plugin.video.netflix.git;a=commitdiff_plain;h=68cf7c159a9a24dbb5097598782085b7b652542d feat(inputstream): Adds content lookup mime type & same user agent as for json requests for inputstream --- diff --git a/addon.xml b/addon.xml index d09e656..f7f3863 100644 --- a/addon.xml +++ b/addon.xml @@ -1,5 +1,5 @@ - + diff --git a/resources/language/Dutch/strings.po b/resources/language/Dutch/strings.po index 8f5e764..4915a09 100644 --- a/resources/language/Dutch/strings.po +++ b/resources/language/Dutch/strings.po @@ -1,7 +1,7 @@ # Kodi Media Center language file # Addon Name: Netflix # Addon id: plugin.video.netflix -# Addon version: 0.11.16 +# Addon version: 0.11.17 # Addon Provider: libdev + jojo + asciidisco msgid "" msgstr "" diff --git a/resources/language/English/strings.po b/resources/language/English/strings.po index 6b0af3b..a58278b 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.11.16 +# Addon version: 0.11.17 # Addon Provider: libdev + jojo + asciidisco msgid "" msgstr "" diff --git a/resources/language/German/strings.po b/resources/language/German/strings.po index d374ea8..5599d31 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.11.16 +# Addon version: 0.11.17 # Addon Provider: libdev + jojo + asciidisco msgid "" msgstr "" diff --git a/resources/language/Polish/strings.po b/resources/language/Polish/strings.po index 36adb01..285d257 100644 --- a/resources/language/Polish/strings.po +++ b/resources/language/Polish/strings.po @@ -1,7 +1,7 @@ # Kodi Media Center language file # Addon Name: Netflix # Addon id: plugin.video.netflix -# Addon version: 0.11.16 +# Addon version: 0.11.17 # Addon Provider: libdev + jojo + asciidisco msgid "" msgstr "" diff --git a/resources/language/Portugese/strings.po b/resources/language/Portugese/strings.po index 0bdb5ff..cd7b898 100644 --- a/resources/language/Portugese/strings.po +++ b/resources/language/Portugese/strings.po @@ -1,7 +1,7 @@ # Kodi Media Center language file # Addon Name: Netflix # Addon id: plugin.video.netflix -# Addon version: 0.11.16 +# Addon version: 0.11.17 # Addon Provider: libdev + jojo + asciidisco msgid "" msgstr "" diff --git a/resources/language/Slovak/strings.po b/resources/language/Slovak/strings.po index dc74ae4..4b4547b 100644 --- a/resources/language/Slovak/strings.po +++ b/resources/language/Slovak/strings.po @@ -1,7 +1,7 @@ # Kodi Media Center language file # Addon Name: Netflix # Addon id: plugin.video.netflix -# Addon version: 0.11.16 +# Addon version: 0.11.17 # Addon Provider: libdev + jojo + asciidisco msgid "" msgstr "" diff --git a/resources/language/Spanish/strings.po b/resources/language/Spanish/strings.po index 130105e..b73cdf2 100644 --- a/resources/language/Spanish/strings.po +++ b/resources/language/Spanish/strings.po @@ -1,7 +1,7 @@ # Kodi Media Center language file # Addon Name: Netflix # Addon id: plugin.video.netflix -# Addon version: 0.11.16 +# Addon version: 0.11.17 # Addon Provider: libdev + jojo + asciidisco msgid "" msgstr "" diff --git a/resources/language/Swedish/strings.po b/resources/language/Swedish/strings.po index 2da2ff6..d932c31 100644 --- a/resources/language/Swedish/strings.po +++ b/resources/language/Swedish/strings.po @@ -1,7 +1,7 @@ # Kodi Media Center language file # Addon Name: Netflix # Addon id: plugin.video.netflix -# Addon version: 0.11.16 +# Addon version: 0.11.17 # Addon Provider: libdev + jojo + asciidisco msgid "" msgstr "" diff --git a/resources/lib/KodiHelper.py b/resources/lib/KodiHelper.py index f27d6d8..7e18113 100644 --- a/resources/lib/KodiHelper.py +++ b/resources/lib/KodiHelper.py @@ -13,6 +13,7 @@ from os.path import join, isfile from urllib import urlencode from xbmcaddon import Addon from uuid import uuid4 +from utils import get_user_agent_for_current_platform from UniversalAnalytics import Tracker try: import cPickle as pickle @@ -693,6 +694,9 @@ class KodiHelper: # inputstream addon properties msl_service_url = 'http://localhost:' + str(addon.getSetting('msl_service_port')) play_item = xbmcgui.ListItem(path=msl_service_url + '/manifest?id=' + video_id) + play_item.setContentLookup(False) + play_item.setMimeType('application/dash+xml') + play_item.setProperty(inputstream_addon + '.stream_headers', 'user-agent=' + get_user_agent_for_current_platform()) play_item.setProperty(inputstream_addon + '.license_type', 'com.widevine.alpha') play_item.setProperty(inputstream_addon + '.manifest_type', 'mpd') play_item.setProperty(inputstream_addon + '.license_key', msl_service_url + '/license?id=' + video_id + '||b{SSM}!b{SID}|') diff --git a/resources/lib/NetflixSession.py b/resources/lib/NetflixSession.py index 69c848f..dd81914 100644 --- a/resources/lib/NetflixSession.py +++ b/resources/lib/NetflixSession.py @@ -10,7 +10,7 @@ from urllib import quote, unquote from time import time from base64 import urlsafe_b64encode from bs4 import BeautifulSoup, SoupStrainer -from utils import noop +from utils import noop, get_user_agent_for_current_platform try: import cPickle as pickle except: @@ -103,7 +103,7 @@ class NetflixSession: # 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': self._get_user_agent_for_current_platform(), + 'User-Agent': get_user_agent_for_current_platform(), 'Accept-Encoding': 'gzip' }) @@ -1880,24 +1880,6 @@ class NetflixSession: """ return urlsafe_b64encode(account['email']) - def _get_user_agent_for_current_platform (self): - """Determines the user agent string for the current platform (to retrieve a valid ESN) - - Returns - ------- - :obj:`str` - User Agent for platform - """ - import platform - self.log(msg='Building User Agent for platform: ' + str(platform.system()) + ' - ' + str(platform.machine())) - if platform.system() == 'Darwin': - return 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36' - if platform.system() == 'Windows': - return 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36' - if platform.machine().startswith('arm'): - return 'Mozilla/5.0 (X11; CrOS armv7l 7647.78.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36' - return 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36' - def _session_post (self, component, type='document', data={}, headers={}, params={}): """Executes a get request using requests for the current session & measures the duration of that request diff --git a/resources/lib/utils.py b/resources/lib/utils.py index afb056f..90fe0b8 100644 --- a/resources/lib/utils.py +++ b/resources/lib/utils.py @@ -3,6 +3,8 @@ # Module: utils # Created on: 13.01.2017 +import platform + # Takes everything, does nothing, classic no operation function def noop (**kwargs): return True @@ -27,3 +29,20 @@ def log(f, name=None): return result wrapped.__doc__ = f.__doc__ return wrapped + +def _get_user_agent_for_current_platform(): + """Determines the user agent string for the current platform (to retrieve a valid ESN) + + Returns + ------- + :obj:`str` + User Agent for platform + """ + system = platform.system() + if system == 'Darwin': + return 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36' + if system == 'Windows': + return 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36' + if platform.machine().startswith('arm'): + return 'Mozilla/5.0 (X11; CrOS armv7l 7647.78.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36' + return 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'