def select_servers(self, state=None): state = state or self.connect_manager.connect( {'enableAutoLogin': False}) user = {} dialog = ServerConnect("script-jellyfin-connect-server.xml", *XML_PATH) dialog.set_args( **{ 'connect_manager': self.connect_manager, 'username': user.get('DisplayName', ""), 'user_image': user.get('ImageUrl'), 'servers': state.get('Servers', []) }) dialog.doModal() if dialog.is_server_selected(): LOG.debug("Server selected: %s", dialog.get_server()) return elif dialog.is_manual_server(): LOG.debug("Adding manual server") try: self.manual_server() except RuntimeError: pass else: raise RuntimeError("No server selected") return self.select_servers()
def login(self): users = self.connect_manager['public-users'] server = self.connect_manager['server-address'] if not users: try: return self.login_manual() except RuntimeError: raise RuntimeError("No user selected") dialog = UsersConnect("script-jellyfin-connect-users.xml", *XML_PATH) dialog.set_args(**{'server': server, 'users': users}) dialog.doModal() if dialog.is_user_selected(): user = dialog.get_user() username = user['Name'] if user['HasPassword']: LOG.debug("User has password, present manual login") try: return self.login_manual(username) except RuntimeError: pass else: return self.connect_manager['login'](server, username) elif dialog.is_manual_login(): try: return self.login_manual() except RuntimeError: pass else: raise RuntimeError("No user selected") return self.login()
def login_connect(self, manager=None): ''' Return connect user or raise error. ''' dialog = LoginConnect("script-emby-connect-login.xml", *XML_PATH) dialog.set_args(**{'connect_manager': manager or self.connect_manager}) dialog.doModal() if dialog.is_logged_in(): return dialog.get_user() else: raise RuntimeError("Connect user is not logged in")
def manual_server(self, manager=None): ''' Return server or raise error. ''' dialog = ServerManual("script-jellyfin-connect-server-manual.xml", *XML_PATH) dialog.set_args(**{'connect_manager': manager or self.connect_manager}) dialog.doModal() if dialog.is_connected(): return dialog.get_server() else: raise RuntimeError("Server is not connected")
def login_manual(self, user=None, manager=None): ''' Return manual login user authenticated or raise error. ''' dialog = LoginManual("script-jellyfin-connect-login-manual.xml", *XML_PATH) dialog.set_args(**{'connect_manager': manager or self.connect_manager, 'username': user or {}}) dialog.doModal() if dialog.is_logged_in(): return dialog.get_user() else: raise RuntimeError("User is not authenticated")
def resume_dialog(self, seektime): ''' Base resume dialog based on Kodi settings. ''' LOG.info("Resume dialog called.") XML_PATH = (xbmcaddon.Addon('plugin.video.emby').getAddonInfo('path'), "default", "1080i") dialog = resume.ResumeDialog("script-emby-resume.xml", *XML_PATH) dialog.set_resume_point("Resume from %s" % str(timedelta(seconds=seektime)).split(".")[0]) dialog.doModal() if dialog.is_selected(): if not dialog.get_selected(): # Start from beginning selected. return False else: # User backed out LOG.info("User exited without a selection.") return return True