Add/Remove additional user from session

Can be mapped to home menu or keymap using:
RunPlugin(plugin://plugin.video.emby?mode=adduser)
This commit is contained in:
angelblue05 2015-05-05 22:02:36 -05:00
parent d8fd3603a6
commit 0501622b59
3 changed files with 86 additions and 0 deletions

View File

@ -37,6 +37,9 @@ elif mode == "reset":
elif mode == "resetauth": elif mode == "resetauth":
entrypoint.resetAuth() entrypoint.resetAuth()
elif mode == "adduser":
entrypoint.addUser()
##### BROWSE EMBY CHANNELS ROOT ##### ##### BROWSE EMBY CHANNELS ROOT #####
elif mode == "channels": elif mode == "channels":
entrypoint.BrowseChannels(id) entrypoint.BrowseChannels(id)

View File

@ -12,6 +12,7 @@ import urllib
WINDOW = xbmcgui.Window(10000) WINDOW = xbmcgui.Window(10000)
import Utils as utils import Utils as utils
from ClientInformation import ClientInformation
from PlaybackUtils import PlaybackUtils from PlaybackUtils import PlaybackUtils
from DownloadUtils import DownloadUtils from DownloadUtils import DownloadUtils
from ReadEmbyDB import ReadEmbyDB from ReadEmbyDB import ReadEmbyDB
@ -35,6 +36,87 @@ def resetAuth():
else: else:
xbmc.executebuiltin('Addon.OpenSettings(plugin.video.emby)') xbmc.executebuiltin('Addon.OpenSettings(plugin.video.emby)')
### ADD ADDITIONAL USERS ###
def addUser():
doUtils = DownloadUtils()
clientInfo = ClientInformation()
currUser = WINDOW.getProperty("currUser")
deviceId = clientInfo.getMachineId()
deviceName = clientInfo.getDeviceName()
# Get session
url = "{server}/mediabrowser/Sessions?DeviceId=%s" % deviceId
result = doUtils.downloadUrl(url)
try:
sessionId = result[0][u'Id']
additionalUsers = result[0][u'AdditionalUsers']
# Add user to session
userlist = {}
users = []
url = "{server}/mediabrowser/Users?IsDisabled=false"
result = doUtils.downloadUrl(url)
# pull the list of users
for user in result:
name = user[u'Name']
userId = user[u'Id']
if currUser not in name:
userlist[name] = userId
users.append(name)
# Display dialog if there's additional users
if additionalUsers:
option = xbmcgui.Dialog().select("Add/Remove user from the session", ["Add user", "Remove user"])
# Users currently in the session
additionalUserlist = {}
additionalUsername = []
# Users currently in the session
for user in additionalUsers:
name = user[u'UserName']
userId = user[u'UserId']
additionalUserlist[name] = userId
additionalUsername.append(name)
if option == 1:
# User selected Remove user
resp = xbmcgui.Dialog().select("Remove user from the session", additionalUsername)
if resp > -1:
selected = additionalUsername[resp]
selected_userId = additionalUserlist[selected]
url = "{server}/mediabrowser/Sessions/%s/Users/%s" % (sessionId, selected_userId)
postdata = {}
doUtils.downloadUrl(url, postBody=postdata, type="DELETE")
return
else:
return
elif option == 0:
# User selected Add user
for adduser in additionalUsername:
xbmc.log(str(adduser))
users.remove(adduser)
elif option < 0:
# User cancelled
return
# Subtract any additional users
xbmc.log("Displaying list of users: %s" % users)
resp = xbmcgui.Dialog().select("Add user to the session", users)
# post additional user
if resp > -1:
selected = users[resp]
selected_userId = userlist[selected]
url = "{server}/mediabrowser/Sessions/%s/Users/%s" % (sessionId, selected_userId)
postdata = {}
doUtils.downloadUrl(url, postBody=postdata, type="POST")
except:
xbmc.log("Failed to add user to session.")
##### BROWSE EMBY CHANNELS ##### ##### BROWSE EMBY CHANNELS #####
def BrowseChannels(id, folderid=None): def BrowseChannels(id, folderid=None):

View File

@ -13,6 +13,7 @@
<setting type="sep" /> <setting type="sep" />
<setting id="accessToken" type="text" visible="false" default="" /> <setting id="accessToken" type="text" visible="false" default="" />
<setting label="[COLOR yellow]Reset login attempts[/COLOR]" type="action" visible="eq(-1,) + !eq(-9,)" enable="true" action="RunPlugin(plugin://plugin.video.emby?mode=resetauth)" option="close" /> <setting label="[COLOR yellow]Reset login attempts[/COLOR]" type="action" visible="eq(-1,) + !eq(-9,)" enable="true" action="RunPlugin(plugin://plugin.video.emby?mode=resetauth)" option="close" />
<setting label="Add/Remove additional user to the session" type="action" visible="true" action="RunPlugin(plugin://plugin.video.emby?mode=adduser)" option="close" />
</category> </category>
<category label="Sync Options"> <category label="Sync Options">
<!-- <setting id="syncMovieBoxSets" type="bool" label="30238" default="true" visible="true" enable="true" /> --> <!-- <setting id="syncMovieBoxSets" type="bool" label="30238" default="true" visible="true" enable="true" /> -->