X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=resources%2Flib%2FKodiHelper.py;h=c468330f81cb66298813989a2224ad4503db4d09;hb=2923983f7fa35da85af850617cf6399353c86dc8;hp=a40c5d85c45d4421cd7d0480fbce14cfbe1c97a3;hpb=e9b625adff4b36a0ed4ee47eb32d27d06ec85c06;p=plugin.video.netflix.git diff --git a/resources/lib/KodiHelper.py b/resources/lib/KodiHelper.py index a40c5d8..c468330 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 @@ -204,7 +205,7 @@ class KodiHelper: """ Returns the esn from settings """ - stored_esn = self.get_esn() + stored_esn = self.get_esn() if not stored_esn and esn: self.set_setting('esn', esn) self.delete_manifest_data() @@ -468,17 +469,21 @@ class KodiHelper: li = xbmcgui.ListItem(label=video['title']) # add some art to the item li = self._generate_art_info(entry=video, li=li) - # it´s a show, so we need a subfolder & route (for seasons) - isFolder = True - url = build_url({'action': actions[video['type']], 'show_id': video_list_id}) + # add list item info + li, infos = self._generate_entry_info(entry=video, li=li) + li = self._generate_context_menu_items(entry=video, li=li) # lists can be mixed with shows & movies, therefor we need to check if its a movie, so play it right away if video_list[video_list_id]['type'] == 'movie': # it´s a movie, so we need no subfolder & a route to play it isFolder = False url = build_url({'action': 'play_video', 'video_id': video_list_id}) - # add list item info - li = self._generate_entry_info(entry=video, li=li) - li = self._generate_context_menu_items(entry=video, li=li) + else: + # it´s a show, so we need a subfolder & route (for seasons) + isFolder = True + params = {'action': actions[video['type']], 'show_id': video_list_id} + if 'tvshowtitle' in infos: + params['tvshowtitle'] = infos['tvshowtitle'] + url = build_url(params) xbmcplugin.addDirectoryItem(handle=self.plugin_handle, url=url, listitem=li, isFolder=isFolder) xbmcplugin.addSortMethod(handle=self.plugin_handle, sortMethod=xbmcplugin.SORT_METHOD_LABEL) @@ -600,9 +605,12 @@ class KodiHelper: # add some art to the item li = self._generate_art_info(entry=season, li=li) # add list item info - li = self._generate_entry_info(entry=season, li=li, base_info={'mediatype': 'season'}) + li, infos = self._generate_entry_info(entry=season, li=li, base_info={'mediatype': 'season'}) li = self._generate_context_menu_items(entry=season, li=li) - url = build_url({'action': 'episode_list', 'season_id': season_id}) + params = {'action': 'episode_list', 'season_id': season_id} + if 'tvshowtitle' in infos: + params['tvshowtitle'] = infos['tvshowtitle'] + url = build_url(params) xbmcplugin.addDirectoryItem(handle=self.plugin_handle, url=url, listitem=li, isFolder=True) xbmcplugin.addSortMethod(handle=self.plugin_handle, sortMethod=xbmcplugin.SORT_METHOD_NONE) @@ -640,7 +648,7 @@ class KodiHelper: # add some art to the item li = self._generate_art_info(entry=episode, li=li) # add list item info - li = self._generate_entry_info(entry=episode, li=li, base_info={'mediatype': 'episode'}) + li, infos = self._generate_entry_info(entry=episode, li=li, base_info={'mediatype': 'episode'}) li = self._generate_context_menu_items(entry=episode, li=li) url = build_url({'action': 'play_video', 'video_id': episode_id, 'start_offset': episode['bookmark']}) xbmcplugin.addDirectoryItem(handle=self.plugin_handle, url=url, listitem=li, isFolder=False) @@ -693,6 +701,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}|') @@ -775,7 +786,9 @@ class KodiHelper: if 'mpaa' in entry_keys: infos.update({'mpaa': entry['mpaa']}) else: - infos.update({'mpaa': str(entry['maturity']['board']) + '-' + str(entry['maturity']['value'])}) + if entry.get('maturity', None) is not None: + if entry['maturity']['board'] is not None and entry['maturity']['value'] is not None: + infos.update({'mpaa': str(entry['maturity']['board'].encode('utf-8')) + '-' + str(entry['maturity']['value'].encode('utf-8'))}) if 'rating' in entry_keys: infos.update({'rating': int(entry['rating']) * 2}) if 'synopsis' in entry_keys: @@ -795,6 +808,8 @@ class KodiHelper: if 'type' in entry_keys: if entry['type'] == 'movie' or entry['type'] == 'episode': li.setProperty('IsPlayable', 'true') + elif entry['type'] == 'show': + infos.update({'tvshowtitle': entry['title']}) if 'mediatype' in entry_keys: if entry['mediatype'] == 'movie' or entry['mediatype'] == 'episode': li.setProperty('IsPlayable', 'true') @@ -814,8 +829,10 @@ class KodiHelper: if entry['quality'] == '1080': quality = {'width': '1920', 'height': '1080'} li.addStreamInfo('video', quality) + if 'tvshowtitle' in entry_keys: + infos.update({'tvshowtitle': entry['tvshowtitle']}) li.setInfo('video', infos) - return li + return li, infos def _generate_context_menu_items (self, entry, li): """Adds context menue items to a Kodi list item