X-Git-Url: http://git.code-monkey.de/?p=plugin.video.netflix.git;a=blobdiff_plain;f=resources%2Flib%2FNavigation.py;h=d4d3f7f3593f8b10f0b208cedf53df94bc3d7e08;hp=c89b7cec271b7aeb657e2f1c7aaa3f8c1664dffc;hb=86455dfff7e4878e5192dd97991f2e96a3021739;hpb=484be04fe96d9f11e840253cf9994adcf5fa61a3 diff --git a/resources/lib/Navigation.py b/resources/lib/Navigation.py index c89b7ce..d4d3f7f 100644 --- a/resources/lib/Navigation.py +++ b/resources/lib/Navigation.py @@ -3,11 +3,9 @@ # Module: Navigation # Created on: 13.01.2017 -import urllib -import time +from urllib import urlencode, unquote from urlparse import parse_qsl -from utils import noop -from utils import log +from utils import noop, log class Navigation: """Routes to the correct subfolder, dispatches actions & acts as a controller for the Kodi view & the Netflix model""" @@ -69,7 +67,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() @@ -95,7 +93,7 @@ class Navigation: return self.add_to_list(video_id=params['id']) elif params['action'] == 'export': # adds a title to the users list on Netflix - alt_title = self.kodi_helper.show_add_to_library_title_dialog(original_title=urllib.unquote(params['title']).decode('utf8')) + alt_title = self.kodi_helper.show_add_to_library_title_dialog(original_title=unquote(params['title']).decode('utf8')) return self.export_to_library(video_id=params['id'], alt_title=alt_title) elif params['action'] == 'remove': # adds a title to the users list on Netflix @@ -104,12 +102,6 @@ class Navigation: # display the lists (recommendations, genres, etc.) return self.show_user_list(type=params['type']) elif params['action'] == 'play_video': - # play a video, check for adult pin if needed - adult_pin = None - if self.check_for_adult_pin(params=params): - adult_pin = self.kodi_helper.show_adult_pin_dialog() - if self.netflix_session.send_adult_pin(adult_pin=adult_pin) != True: - return self.kodi_helper.show_wrong_adult_pin_notification() self.play_video(video_id=params['video_id'], start_offset=params.get('start_offset', -1)) elif params['action'] == 'user-items' and params['type'] == 'search': # if the user requested a search, ask for the term @@ -163,10 +155,11 @@ class Navigation: if self.netflix_session._is_size_key(key=key) == False: has_search_results = search_results_raw['value']['search'][key]['titles']['length'] > 0 if has_search_results == False: - for entry in search_results_raw['value']['search'][key]['suggestions']: - if self.netflix_session._is_size_key(key=entry) == False: - if search_results_raw['value']['search'][key]['suggestions'][entry]['relatedvideos']['length'] > 0: - has_search_results = True + if search_results_raw['value']['search'][key].get('suggestions', False) != False: + for entry in search_results_raw['value']['search'][key]['suggestions']: + if self.netflix_session._is_size_key(key=entry) == False: + if search_results_raw['value']['search'][key]['suggestions'][entry]['relatedvideos']['length'] > 0: + has_search_results = True # display that we haven't found a thing @@ -258,7 +251,7 @@ class Navigation: # sort seasons by index by default (they´re coming back unsorted from the api) seasons_sorted = [] for season_id in season_list: - seasons_sorted.append(int(season_list[season_id]['shortName'].split(' ')[1])) + seasons_sorted.append(int(season_list[season_id]['idx'])) seasons_sorted.sort() return self.kodi_helper.build_season_listing(seasons_sorted=seasons_sorted, season_list=season_list, build_url=self.build_url) @@ -273,8 +266,8 @@ class Navigation: type : :obj:`str` None or 'queue' f.e. when it´s a special video lists """ - if self.kodi_helper.has_cached_item(cache_id=type): - video_list = self.kodi_helper.get_cached_item(cache_id=type) + if self.kodi_helper.has_cached_item(cache_id=video_list_id): + video_list = self.kodi_helper.get_cached_item(cache_id=video_list_id) else: raw_video_list = self.netflix_session.fetch_video_list(list_id=video_list_id) # check for any errors @@ -283,7 +276,7 @@ class Navigation: # parse the video list ids if 'videos' in raw_video_list['value'].keys(): video_list = self.netflix_session.parse_video_list(response_data=raw_video_list) - self.kodi_helper.add_cached_item(cache_id=type, contents=video_list) + self.kodi_helper.add_cached_item(cache_id=video_list_id, contents=video_list) else: video_list = [] actions = {'movie': 'play_video', 'show': 'season_list'} @@ -372,12 +365,12 @@ class Navigation: video = metadata['video'] if video['type'] == 'movie': - self.library.add_movie(title=video['title'], alt_title=alt_title, year=video['year'], video_id=video_id, pin=video['requiresPin'], build_url=self.build_url) + self.library.add_movie(title=video['title'], alt_title=alt_title, year=video['year'], video_id=video_id, build_url=self.build_url) if video['type'] == 'show': episodes = [] for season in video['seasons']: for episode in season['episodes']: - episodes.append({'season': season['seq'], 'episode': episode['seq'], 'id': episode['id'], 'pin': episode['requiresAdultVerification']}) + episodes.append({'season': season['seq'], 'episode': episode['seq'], 'id': episode['id']}) self.library.add_show(title=video['title'], alt_title=alt_title, episodes=episodes, build_url=self.build_url) return self.kodi_helper.refresh() @@ -480,21 +473,6 @@ class Navigation: current_profile_id = self.netflix_session.user_data['guid'] return 'profile_id' in params and current_profile_id != params['profile_id'] - def check_for_adult_pin (self, params): - """Checks if an adult pin is given in the query params - - Parameters - ---------- - params : :obj:`dict` of :obj:`str` - Url query params - - Returns - ------- - bool - Adult pin parameter exists or not - """ - return (True, False)[params['pin'] == 'True'] - def parse_paramters (self, paramstring): """Tiny helper to convert a url paramstring into a dictionary @@ -563,4 +541,4 @@ class Navigation: str Url + querystring based on the param """ - return self.base_url + '?' + urllib.urlencode(query) + return self.base_url + '?' + urlencode(query)