From fc4f510ab144e0307aac2ce6dd545a1fbbde99a9 Mon Sep 17 00:00:00 2001 From: Ruben De Smet Date: Mon, 26 Feb 2024 18:31:07 +0100 Subject: [PATCH] Add user to session non-interactively Allows to add/remove a user to/from a session through an API call. --- jellyfin_kodi/entrypoint/default.py | 33 +++++++++++++++++++---------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/jellyfin_kodi/entrypoint/default.py b/jellyfin_kodi/entrypoint/default.py index d8f6c049..053dfcae 100644 --- a/jellyfin_kodi/entrypoint/default.py +++ b/jellyfin_kodi/entrypoint/default.py @@ -132,7 +132,7 @@ class Events(object): elif mode == 'settings': xbmc.executebuiltin('Addon.OpenSettings(plugin.video.jellyfin)') elif mode == 'adduser': - add_user(api_client) + add_user(api_client, params) elif mode == 'updatepassword': event('UpdatePassword') elif mode == 'thememedia': @@ -751,7 +751,7 @@ def create_listitem(item): return li -def add_user(api_client): +def add_user(api_client, params: dict): ''' Add or remove users from the default server session. ''' @@ -762,27 +762,38 @@ def add_user(api_client): users = api_client.get_users() current = session[0]['AdditionalUsers'] - result = dialog("select", translate(33061), [translate(33062), translate(33063)] if current else [translate(33062)]) + if params.get('remove'): + result = True + elif params.get('add'): + result = False + else: + result = dialog("select", translate(33061), [translate(33062), translate(33063)] if current else [translate(33062)]) if result < 0: return if not result: # Add user eligible = [x for x in users if x['Id'] not in [current_user['UserId'] for current_user in current]] - resp = dialog("select", translate(33064), [x['Name'] for x in eligible]) + if params.get('add'): + user = [x for x in current if x['UserName'] == params.get('add')][0] + else: + resp = dialog("select", translate(33064), [x['Name'] for x in eligible]) - if resp < 0: - return + if resp < 0: + return - user = eligible[resp] + user = eligible[resp] event('AddUser', {'Id': user['Id'], 'Add': True}) else: # Remove user - resp = dialog("select", translate(33064), [x['UserName'] for x in current]) + if params.get('remove'): + user = [x for x in current if x['UserName'] == params.get('remove')][0] + else: + resp = dialog("select", translate(33064), [x['UserName'] for x in current]) - if resp < 0: - return + if resp < 0: + return - user = current[resp] + user = current[resp] event('AddUser', {'Id': user['UserId'], 'Add': False})