1 class NetflixHttpSubRessourceHandler:
3 def __init__ (self, kodi_helper, netflix_session):
4 self.kodi_helper = kodi_helper
5 self.netflix_session = netflix_session
6 credentials = self.kodi_helper.get_credentials()
8 if self.netflix_session.is_logged_in(account=credentials):
9 self.netflix_session.refresh_session_data(account=credentials)
11 self.netflix_session.login(account=credentials)
12 self.profiles = self.netflix_session.profiles
14 def is_logged_in (self, params):
15 credentials = self.kodi_helper.get_credentials()
16 return self.netflix_session.is_logged_in(account=credentials)
18 def logout (self, params):
19 return self.netflix_session.logout()
21 def list_profiles (self, params):
24 def get_esn (self, params):
25 return self.netflix_session.esn
27 def fetch_video_list_ids (self, params):
28 video_list_ids_raw = self.netflix_session.fetch_video_list_ids()
29 if 'error' in video_list_ids_raw:
30 return video_list_ids_raw
31 return self.netflix_session.parse_video_list_ids(response_data=video_list_ids_raw)
33 def fetch_video_list (self, params):
34 list_id = params.get('list_id', [''])[0]
35 raw_video_list = self.netflix_session.fetch_video_list(list_id=list_id)
36 if 'error' in raw_video_list:
38 # parse the video list ids
39 if 'videos' in raw_video_list.get('value', {}).keys():
40 return self.netflix_session.parse_video_list(response_data=raw_video_list)
43 def fetch_episodes_by_season (self, params):
44 raw_episode_list = self.netflix_session.fetch_episodes_by_season(season_id=params.get('season_id')[0])
45 if 'error' in raw_episode_list:
46 return raw_episode_list
47 return self.netflix_session.parse_episodes_by_season(response_data=raw_episode_list)
49 def fetch_seasons_for_show (self, params):
50 show_id = params.get('show_id', [''])[0]
51 raw_season_list = self.netflix_session.fetch_seasons_for_show(id=show_id)
52 if 'error' in raw_season_list:
53 return raw_season_list
54 # check if we have sesons, announced shows that are not available yet have none
55 if 'seasons' not in raw_season_list.get('value', {}):
57 return self.netflix_session.parse_seasons(id=show_id, response_data=raw_season_list)
59 def rate_video (self, params):
60 video_id = params.get('video_id', [''])[0]
61 rating = params.get('rating', [''])[0]
62 return self.netflix_session.rate_video(video_id=video_id, rating=rating)
64 def remove_from_list (self, params):
65 video_id = params.get('video_id', [''])[0]
66 return self.netflix_session.remove_from_list(video_id=video_id)
68 def add_to_list (self, params):
69 video_id = params.get('video_id', [''])[0]
70 return self.netflix_session.add_to_list(video_id=video_id)
72 def fetch_metadata (self, params):
73 video_id = params.get('video_id', [''])[0]
74 return self.netflix_session.fetch_metadata(id=video_id)
76 def switch_profile (self, params):
77 credentials = self.kodi_helper.get_credentials()
78 profile_id = params.get('profile_id', [''])[0]
79 return self.netflix_session.switch_profile(profile_id=profile_id, account=credentials)
81 def get_user_data (self, params):
82 return self.netflix_session.user_data
84 def search (self, params):
85 term = params.get('term', [''])[0]
86 has_search_results = False
87 raw_search_results = self.netflix_session.fetch_search_results(search_str=term)
88 # check for any errors
89 if 'error' in raw_search_results:
90 return raw_search_results
92 # determine if we found something
93 if 'search' in raw_search_results['value']:
94 for key in raw_search_results['value']['search'].keys():
95 if self.netflix_session._is_size_key(key=key) == False:
96 has_search_results = raw_search_results['value']['search'][key]['titles']['length'] > 0
97 if has_search_results == False:
98 if raw_search_results['value']['search'][key].get('suggestions', False) != False:
99 for entry in raw_search_results['value']['search'][key]['suggestions']:
100 if self.netflix_session._is_size_key(key=entry) == False:
101 if raw_search_results['value']['search'][key]['suggestions'][entry]['relatedvideos']['length'] > 0:
102 has_search_results = True
104 # display that we haven't found a thing
105 if has_search_results == False:
108 # list the search results
109 search_results = self.netflix_session.parse_search_results(response_data=raw_search_results)
110 # add more menaingful data to the search results
111 raw_search_contents = self.netflix_session.fetch_video_list_information(video_ids=search_results.keys())
112 # check for any errors
113 if 'error' in raw_search_contents:
114 return raw_search_contents
115 return self.netflix_session.parse_video_list(response_data=raw_search_contents)