mirror of
https://github.com/pkkid/python-plexapi
synced 2024-11-22 19:53:17 +00:00
adding createExistingUser
Add ability to create an Existing Plex User. If User already exists in Sharing/Friends, sections and settings carry over. If User does not already exist in Sharing/Friends, sections and settings can be assigned.
This commit is contained in:
parent
c719c90a7a
commit
a7df2a9ed8
1 changed files with 51 additions and 0 deletions
|
@ -63,6 +63,7 @@ class MyPlexAccount(PlexObject):
|
|||
"""
|
||||
FRIENDINVITE = 'https://plex.tv/api/servers/{machineId}/shared_servers' # post with data
|
||||
HOMEUSERCREATE = 'https://plex.tv/api/home/users?title={title}' # post with data
|
||||
EXISTINGUSER = 'https://plex.tv/api/home/users?invitedEmail={username}' # post with data
|
||||
FRIENDSERVERS = 'https://plex.tv/api/servers/{machineId}/shared_servers/{serverId}' # put with data
|
||||
PLEXSERVERS = 'https://plex.tv/api/servers/{machineId}' # get
|
||||
FRIENDUPDATE = 'https://plex.tv/api/friends/{userId}' # put with args, delete
|
||||
|
@ -277,6 +278,56 @@ class MyPlexAccount(PlexObject):
|
|||
library_assignment = self.query(url, self._session.post, json=params, headers=headers)
|
||||
return user_creation, library_assignment
|
||||
|
||||
def createExistingUser(self, user, server, sections=None, allowSync=False, allowCameraUpload=False,
|
||||
allowChannels=False, filterMovies=None, filterTelevision=None, filterMusic=None):
|
||||
""" Share library content with the specified user.
|
||||
|
||||
Parameters:
|
||||
user (str): MyPlexUser, username, email of the user to be added.
|
||||
server (PlexServer): PlexServer object or machineIdentifier containing the library sections to share.
|
||||
sections ([Section]): Library sections, names or ids to be shared (default None shares all sections).
|
||||
allowSync (Bool): Set True to allow user to sync content.
|
||||
allowCameraUpload (Bool): Set True to allow user to upload photos.
|
||||
allowChannels (Bool): Set True to allow user to utilize installed channels.
|
||||
filterMovies (Dict): Dict containing key 'contentRating' and/or 'label' each set to a list of
|
||||
values to be filtered. ex: {'contentRating':['G'], 'label':['foo']}
|
||||
filterTelevision (Dict): Dict containing key 'contentRating' and/or 'label' each set to a list of
|
||||
values to be filtered. ex: {'contentRating':['G'], 'label':['foo']}
|
||||
filterMusic (Dict): Dict containing key 'label' set to a list of values to be filtered.
|
||||
ex: {'label':['foo']}
|
||||
"""
|
||||
headers = {'Content-Type': 'application/json'}
|
||||
# If user already exists, carry over sections and settings.
|
||||
if isinstance(user, MyPlexUser):
|
||||
username = user.username
|
||||
elif user in [_user.username for _user in self.users()]:
|
||||
username = self.user(user).username
|
||||
else:
|
||||
# If user does not already exists, treat request as new request and include sections and settings.
|
||||
newUser = user
|
||||
url = self.EXISTINGUSER.format(username=newUser)
|
||||
user_creation = self.query(url, self._session.post, headers=headers)
|
||||
machineId = server.machineIdentifier if isinstance(server, PlexServer) else server
|
||||
sectionIds = self._getSectionIds(server, sections)
|
||||
params = {
|
||||
'server_id': machineId,
|
||||
'shared_server': {'library_section_ids': sectionIds, 'invited_email': newUser},
|
||||
'sharing_settings': {
|
||||
'allowSync': ('1' if allowSync else '0'),
|
||||
'allowCameraUpload': ('1' if allowCameraUpload else '0'),
|
||||
'allowChannels': ('1' if allowChannels else '0'),
|
||||
'filterMovies': self._filterDictToStr(filterMovies or {}),
|
||||
'filterTelevision': self._filterDictToStr(filterTelevision or {}),
|
||||
'filterMusic': self._filterDictToStr(filterMusic or {}),
|
||||
},
|
||||
}
|
||||
url = self.FRIENDINVITE.format(machineId=machineId)
|
||||
library_assignment = self.query(url, self._session.post, json=params, headers=headers)
|
||||
return user_creation, library_assignment
|
||||
|
||||
url = self.EXISTINGUSER.format(username=username)
|
||||
return self.query(url, self._session.post, headers=headers)
|
||||
|
||||
def removeFriend(self, user):
|
||||
""" Remove the specified user from all sharing.
|
||||
|
||||
|
|
Loading…
Reference in a new issue