X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=resources%2Flib%2FKodiHelper.py;h=43b5187e04cd07f835f62d22b5991f4ee2ef80dc;hb=a190d8141ee4d3a09c7fef3334fd6083ff9c354e;hp=1912efd291a69cce7f9334cf63f57e31ee9a5181;hpb=2fd60d09e71cbb24ac7ffb489fe5f56c9d0292d7;p=plugin.video.netflix.git diff --git a/resources/lib/KodiHelper.py b/resources/lib/KodiHelper.py index 1912efd..43b5187 100644 --- a/resources/lib/KodiHelper.py +++ b/resources/lib/KodiHelper.py @@ -10,6 +10,8 @@ import xbmcgui import xbmcaddon import xbmc import json +import uuid +from UniversalAnalytics import Tracker try: import cPickle as pickle except: @@ -61,17 +63,6 @@ class KodiHelper: dlg = xbmcgui.Dialog() return dlg.numeric(heading=self.get_local_string(string_id=30019) + ' ' + self.get_local_string(string_id=30022), type=0) - def show_adult_pin_dialog (self): - """Asks the user for the adult pin - - Returns - ------- - :obj:`int` - 4 digit adult pin needed for adult movies - """ - dlg = xbmcgui.Dialog() - return dlg.input(self.get_local_string(string_id=30002), type=xbmcgui.INPUT_NUMERIC) - def show_search_term_dialog (self): """Asks the user for a term to query the netflix search for @@ -111,7 +102,7 @@ class KodiHelper: Netflix password """ dlg = xbmcgui.Dialog() - return dlg.input(self.get_local_string(string_id=30004), type=xbmcgui.INPUT_ALPHANUM) + return dlg.input(self.get_local_string(string_id=30004), type=xbmcgui.INPUT_ALPHANUM, option=xbmcgui.ALPHANUM_HIDE_INPUT) def show_email_dialog (self): """Asks the user for its Netflix account email @@ -124,8 +115,8 @@ class KodiHelper: dlg = xbmcgui.Dialog() return dlg.input(self.get_local_string(string_id=30005), type=xbmcgui.INPUT_ALPHANUM) - def show_wrong_adult_pin_notification (self): - """Shows notification that a wrong adult pin was given + def show_login_failed_notification (self): + """Shows notification that the login failed Returns ------- @@ -133,11 +124,11 @@ class KodiHelper: Dialog shown """ dialog = xbmcgui.Dialog() - dialog.notification(self.get_local_string(string_id=30006), self.get_local_string(string_id=30007), xbmcgui.NOTIFICATION_ERROR, 5000) + dialog.notification(self.get_local_string(string_id=30008), self.get_local_string(string_id=30009), xbmcgui.NOTIFICATION_ERROR, 5000) return True - def show_login_failed_notification (self): - """Shows notification that the login failed + def show_missing_inputstream_addon_notification (self): + """Shows notification that the inputstream addon couldn't be found Returns ------- @@ -145,11 +136,11 @@ class KodiHelper: Dialog shown """ dialog = xbmcgui.Dialog() - dialog.notification(self.get_local_string(string_id=30008), self.get_local_string(string_id=30009), xbmcgui.NOTIFICATION_ERROR, 5000) + dialog.notification(self.get_local_string(string_id=30028), self.get_local_string(string_id=30029), xbmcgui.NOTIFICATION_ERROR, 5000) return True - def show_missing_inputstream_addon_notification (self): - """Shows notification that the inputstream addon couldn't be found + def show_no_search_results_notification (self): + """Shows notification that no search results could be found Returns ------- @@ -157,7 +148,19 @@ class KodiHelper: Dialog shown """ dialog = xbmcgui.Dialog() - dialog.notification(self.get_local_string(string_id=30028), self.get_local_string(string_id=30029), xbmcgui.NOTIFICATION_ERROR, 5000) + dialog.notification(self.get_local_string(string_id=30011), self.get_local_string(string_id=30013)) + return True + + def show_no_seasons_notification (self): + """Shows notification that no seasons be found + + Returns + ------- + bool + Dialog shown + """ + dialog = xbmcgui.Dialog() + dialog.notification(self.get_local_string(string_id=30010), self.get_local_string(string_id=30012)) return True def set_setting (self, key, value): @@ -183,6 +186,13 @@ class KodiHelper: 'password': self.addon.getSetting('password') } + def get_dolby_setting(self): + """ + Returns if the dolby sound is enabled + :return: True|False + """ + return self.addon.getSetting('enable_dolby_sound') == 'true' + def get_custom_library_settings (self): """Returns the settings in regards to the custom library folder(s) @@ -432,9 +442,7 @@ class KodiHelper: if video_list[video_list_id]['type'] == 'movie': # it´s a movie, so we need no subfolder & a route to play it isFolder = False - # check maturity index, to determine if we need the adult pin - needs_pin = (True, False)[int(video['maturity']['level']) >= 1000] - url = build_url({'action': 'play_video', 'video_id': video_list_id, 'pin': needs_pin}) + 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) @@ -477,8 +485,7 @@ class KodiHelper: bool List could be build """ - li = xbmcgui.ListItem(label=self.get_local_string(30012)) - xbmcplugin.addDirectoryItem(handle=self.plugin_handle, url='', listitem=li, isFolder=False) + self.show_no_seasons_notification() xbmcplugin.endOfDirectory(self.plugin_handle) return True @@ -498,10 +505,8 @@ class KodiHelper: bool List could be build """ - li = xbmcgui.ListItem(label=self.get_local_string(30013)) - xbmcplugin.addDirectoryItem(handle=self.plugin_handle, url=build_url({'action': action}), listitem=li, isFolder=False) - xbmcplugin.endOfDirectory(self.plugin_handle) - return True + self.show_no_search_results_notification() + return xbmcplugin.endOfDirectory(self.plugin_handle) def build_user_sub_listing (self, video_list_ids, type, action, build_url): """Builds the video lists screen for user subfolders (genres & recommendations) @@ -557,7 +562,7 @@ class KodiHelper: for index in seasons_sorted: for season_id in season_list: season = season_list[season_id] - if int(season['shortName'].split(' ')[1]) == index: + if int(season['idx']) == index: li = xbmcgui.ListItem(label=season['text']) # add some art to the item li = self._generate_art_info(entry=season, li=li) @@ -604,9 +609,7 @@ class KodiHelper: # add list item info li = self._generate_entry_info(entry=episode, li=li, base_info={'mediatype': 'episode'}) li = self._generate_context_menu_items(entry=episode, li=li) - # check maturity index, to determine if we need the adult pin - needs_pin = (True, False)[int(episode['maturity']['rating']['maturityLevel']) >= 1000] - url = build_url({'action': 'play_video', 'video_id': episode_id, 'pin': needs_pin, 'start_offset': episode['bookmark']}) + 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) xbmcplugin.addSortMethod(handle=self.plugin_handle, sortMethod=xbmcplugin.SORT_METHOD_EPISODE) @@ -644,6 +647,9 @@ class KodiHelper: self.log(msg='Inputstream addon not found') return False + # track play event + self.track_event('playVideo') + # inputstream addon properties msl_service_url = 'http://localhost:' + str(self.addon.getSetting('msl_service_port')) play_item = xbmcgui.ListItem(path=msl_service_url + '/manifest?id=' + video_id) @@ -657,7 +663,7 @@ class KodiHelper: # check if we have a bookmark e.g. start offset position if int(start_offset) > 0: - play_item.setProperty('StartOffset', str(start_offset)) + play_item.setProperty('StartOffset', str(start_offset) + '.0') return xbmcplugin.setResolvedUrl(self.plugin_handle, True, listitem=play_item) def _generate_art_info (self, entry, li): @@ -832,7 +838,7 @@ class KodiHelper: li.addContextMenuItems(items) return li - def log (self, msg, level=xbmc.LOGNOTICE): + def log (self, msg, level=xbmc.LOGDEBUG): """Adds a log entry to the Kodi log Parameters @@ -843,12 +849,9 @@ class KodiHelper: level : :obj:`int` Kodi log level """ - if self.verb_log: - if level == xbmc.LOGDEBUG and self.verb_log: - level = xbmc.LOGNOTICE - if isinstance(msg, unicode): - msg = msg.encode('utf-8') - xbmc.log('[%s] %s' % (self.plugin, msg.__str__()), level) + if isinstance(msg, unicode): + msg = msg.encode('utf-8') + xbmc.log('[%s] %s' % (self.plugin, msg.__str__()), level) def get_local_string (self, string_id): """Returns the localized version of a string @@ -904,3 +907,21 @@ class KodiHelper: instance of the Library class """ self.library = library + + def track_event(self, event): + """ + Send a tracking event if tracking is enabled + :param event: the string idetifier of the event + :return: None + """ + # Check if tracking is enabled + enable_tracking = (self.addon.getSetting('enable_tracking') == 'true') + if enable_tracking: + #Get or Create Tracking id + tracking_id = self.addon.getSetting('tracking_id') + if tracking_id is '': + tracking_id = str(uuid.uuid4()) + self.addon.setSetting('tracking_id', tracking_id) + # Send the tracking event + tracker = Tracker.create('UA-46081640-5', client_id=tracking_id) + tracker.send('event', event)