- cache_id = 'season_' + show_id
- if self.kodi_helper.has_cached_item(cache_id=cache_id):
- season_list = self.kodi_helper.get_cached_item(cache_id=cache_id)
- else:
- season_list = self.call_netflix_service({'method': 'fetch_seasons_for_show', 'show_id': show_id})
- # check for any errors
- if self._is_dirty_response(response=season_list):
- return False
- # 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()
- # parse the seasons raw response from Netflix
- self.kodi_helper.add_cached_item(cache_id=cache_id, contents=season_list)
- # 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]['idx']))
- seasons_sorted.sort()
- return self.kodi_helper.build_season_listing(seasons_sorted=seasons_sorted, season_list=season_list, build_url=self.build_url)
+ user_data = self.call_netflix_service({'method': 'get_user_data'})
+ season_list = self.call_netflix_service({'method': 'fetch_seasons_for_show', 'show_id': show_id, 'guid': user_data['guid'], 'cache': True})
+ # check for any errors
+ if self._is_dirty_response(response=season_list):
+ return False
+ # 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()
+
+ # 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)