# display the lists (recommendations, genres, etc.)
return self.show_user_list(type=params['type'])
elif params['action'] == 'play_video':
- self.play_video(video_id=params['video_id'], start_offset=params.get('start_offset', -1), infoLabels=params['infoLabels'])
+ self.play_video(video_id=params['video_id'], start_offset=params.get('start_offset', -1), infoLabels=params.get('infoLabels', {}))
elif params['action'] == 'user-items' and params['type'] == 'search':
# if the user requested a search, ask for the term
term = self.kodi_helper.show_search_term_dialog()
user_list_id : :obj:`str`
Type of list to display
"""
- # determine if we´re in kids mode
+ # determine if we´re in kids mode
user_data = self.call_netflix_service({'method': 'get_user_data'})
video_list_ids = self.call_netflix_service({'method': 'fetch_video_list_ids', 'guid': user_data['guid'], 'cache': True})
# check for any errors
# check for any errors
if self._is_dirty_response(response=episode_list):
return False
- # sort seasons by number (they´re coming back unsorted from the api)
- episodes_sorted = []
- for episode_id in episode_list:
- episode_list[episode_id]['tvshowtitle'] = tvshowtitle
- episodes_sorted.append(int(episode_list[episode_id]['episode']))
- episodes_sorted.sort()
+
+ # Extract episode numbers and associated keys.
+ d = [(v['episode'], k) for k, v in episode_list.items()]
+
+ # sort episodes by number (they´re coming back unsorted from the api)
+ episodes_sorted = [episode_list[k] for (_, k) in sorted(d)]
+
+ for episode in episodes_sorted:
+ episode['tvshowtitle'] = tvshowtitle
# list the episodes
- return self.kodi_helper.build_episode_listing(episodes_sorted=episodes_sorted, episode_list=episode_list, build_url=self.build_url)
+ return self.kodi_helper.build_episode_listing(episodes_sorted=episodes_sorted, build_url=self.build_url)
def show_seasons (self, show_id, tvshowtitle):
"""Lists all seasons for a given show
# check if we have sesons, announced shows that are not available yet have none
if len(season_list) == 0:
return self.kodi_helper.build_no_seasons_available()
- # sort seasons by index by default (they´re coming back unsorted from the api)
- seasons_sorted = []
- for season_id in season_list:
- season_list[season_id]['tvshowtitle'] = tvshowtitle
- 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)
+
+ # Extract episode numbers and associated keys.
+ d = [(v['idx'], k) for k, v in season_list.items()]
+
+ # sort seasons by index by default (they´re coming back unsorted from the api)
+ seasons_sorted = [season_list[k] for (_, k) in sorted(d)]
+
+ for season in seasons_sorted:
+ season['tvshowtitle'] = tvshowtitle
+
+ return self.kodi_helper.build_season_listing(seasons_sorted=seasons_sorted, build_url=self.build_url)
def show_video_list (self, video_list_id, type):
"""List shows/movies based on the given video list id
ID of the video list that should be displayed
type : :obj:`str`
- None or 'queue' f.e. when it´s a special video lists
+ None or 'queue' f.e. when it´s a special video lists
"""
user_data = self.call_netflix_service({'method': 'get_user_data'})
video_list = self.call_netflix_service({'method': 'fetch_video_list', 'list_id': video_list_id, 'guid': user_data['guid'] ,'cache': True})
profiles = self.call_netflix_service({'method': 'list_profiles'})
if len(profiles) == 0:
return self.kodi_helper.show_login_failed_notification()
- return self.kodi_helper.build_profiles_listing(profiles=profiles, action='video_lists', build_url=self.build_url)
+ return self.kodi_helper.build_profiles_listing(profiles=profiles.values(), action='video_lists', build_url=self.build_url)
@log
def rate_on_netflix (self, video_id):
"""Opens a foreign settings dialog"""
is_addon = self.kodi_helper.get_inputstream_addon()
url = is_addon if url == 'is' else url
- return Addon(url).openSettings()
+ return Addon(url).openSettings()
\ No newline at end of file