Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add an actor to a movie/video with role and thumb #462

Open
dom6770 opened this issue Apr 22, 2020 · 14 comments
Open

Add an actor to a movie/video with role and thumb #462

dom6770 opened this issue Apr 22, 2020 · 14 comments

Comments

@dom6770
Copy link

dom6770 commented Apr 22, 2020

So far I have created a little script to add an specific actor to a search result:

from plexapi.server import PlexServer
PLEX_URL = 'http://192.168.178.100:32400'
PLEX_TOKEN = 'token'
homeserver = PlexServer(PLEX_URL, PLEX_TOKEN)

tag = input(f"Actor: ")

for video in homeserver.library.section('test').search(None, collection=[tag]): 
	video._edit_tags(tag="actor", items=[tag])

It work's fine. An actor appears on that particular video(s) in the collection.
Now, I just don't want to add the actor, I also want to add the role and a thumb (photo URL), but so far I could not find anything in the documentation and in the source code. (might be it's quite late and I am tired), but I would be thankful if someone could help me with it or make it possible.

@blacktwin
Copy link
Collaborator

You and me both. Creating an actor also creates the actor in the DB where I assume you could add the missing thumb and role but I haven't tried that yet. I'd prefer to do it all with API commands.

@blacktwin
Copy link
Collaborator

@JonnyWong16 found how to add a thumb.

edits = {
    'actor[0].tag.tag': 'Mom',
    'actor[0].locked': 1,
    'actor[0].tag.thumb': 'https://nickelodeonuniverse.com/wp-content/uploads/Spongebob.png'
}
movie = plex.library.section('Movies').get('Title')
movie.edit(**edits)

Still trying to find role.

@JonnyWong16
Copy link
Collaborator

JonnyWong16 commented Apr 23, 2020

Found it.

edits = {
    'actor[0].tag.tag': 'Mom',
    'actor[0].locked': 1,
    'actor[0].tagging.text': 'Test Role',
    'actor[0].tag.thumb': 'https://nickelodeonuniverse.com/wp-content/uploads/Spongebob.png'
}
movie = plex.library.section('Movies').get('Title')
movie.edit(**edits)

image

@blacktwin
Copy link
Collaborator

blacktwin commented Apr 23, 2020

Need a addActor or add additional kwargs if it already exists.

@Hellowlol
Copy link
Collaborator

Imo we should support objects. So Role.create() and allow that to be passed to edit that serialize this to a url.

@blacktwin
Copy link
Collaborator

Agreed.

@JonnyWong16
Copy link
Collaborator

While you're at it, there's a bug if you use _edit_tags(). Somewhere in the code when retrieving a movie, it only retrieves the first 3 actors. Therefore, when you use _edit_tags(), the tag_helper() inserts the new actor into position 4.

@Hellowlol
Copy link
Collaborator

It only retrieves 3 as this only what re xml includes. If we want more the user has to movie.reload() is the fourth item overwritten?

@JonnyWong16
Copy link
Collaborator

From my tests it looks like it's inserted and not overwritten. Needs more testing though.

@blacktwin
Copy link
Collaborator

@Hellowlol I don't think we can use the Role class to create or edit a role/actor. The actor is tied to a Video object and in order to create one we need to use a Video. I'm thinking of adding the method to add or edit an actor in the Video class.

Some findings in case they are relevant:

Actor's thumb follows the name of the actor across libraries and videos.
The role is attached to the video.
Actors are not linked across libraries, at least in the WebUI but plex.search('Bob Odenkirk') works :)

@blacktwin
Copy link
Collaborator

Refreshing an item removes all added actors from the item. This makes sense for known movies and shows where metadata is available as refreshing wipes the previous metadata values and updates. However, for Home Videos adding an actor named Mom would be pretty cool but if the library get refreshed all your custom actors are lost.

@Hellowlol
Copy link
Collaborator

It shouldn’t be deleted as long as the item is locked.

@blacktwin
Copy link
Collaborator

Locked attribute doesn't exist for the tag/field and adding the usual locked str doesn't make a difference. I've created a Plex Feature Request. But I'm not sure that we are really supposed to be allowed to edit actors like this.

@blacktwin
Copy link
Collaborator

With actor[0] and using index= for actor[index] has been very inconsistent. Typically any new actor created or any existing actor that is edited (add or change role, thumb, or just index) moves the actor to the beginning of cast list. However I've observed several times where changing the index value to -1, 1, or 2 when creating or just updating the index value for an existing actor will cause them to move forward or backward in the listings. This has been somewhat random.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants