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":
entrypoint.resetAuth()
elif mode == "adduser":
entrypoint.addUser()
##### BROWSE EMBY CHANNELS ROOT #####
elif mode == "channels":
entrypoint.BrowseChannels(id)

View File

@ -12,6 +12,7 @@ import urllib
WINDOW = xbmcgui.Window(10000)
import Utils as utils
from ClientInformation import ClientInformation
from PlaybackUtils import PlaybackUtils
from DownloadUtils import DownloadUtils
from ReadEmbyDB import ReadEmbyDB
@ -35,6 +36,87 @@ def resetAuth():
else:
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 #####
def BrowseChannels(id, folderid=None):

View File

@ -13,6 +13,7 @@
<setting type="sep" />
<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="Add/Remove additional user to the session" type="action" visible="true" action="RunPlugin(plugin://plugin.video.emby?mode=adduser)" option="close" />
</category>
<category label="Sync Options">
<!-- <setting id="syncMovieBoxSets" type="bool" label="30238" default="true" visible="true" enable="true" /> -->