From 30d790bb73cd3fd61a37a35319e8ee8e1138a9b8 Mon Sep 17 00:00:00 2001 From: Tom Boucher Date: Sat, 24 Jan 2026 01:31:38 -0500 Subject: [PATCH] feat: add performer disambiguation support Fixes #36 When performers have the same name, Stash allows adding a disambiguation field to differentiate them. This change: 1. Adds `disambiguation` to the GraphQL performers query 2. Appends disambiguation in parentheses to performer name if present e.g., "Jane Doe (Adult Film)" This prevents performers with the same name from being merged incorrectly in Plex. --- Contents/Code/__init__.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Contents/Code/__init__.py b/Contents/Code/__init__.py index 756eba8..a63b6a8 100644 --- a/Contents/Code/__init__.py +++ b/Contents/Code/__init__.py @@ -186,7 +186,7 @@ def update(self, metadata, media, lang = Locale.Language.English, force=False): DEBUG = Prefs['debug'] Log("update(%s)" % metadata.id) mid = metadata.id - id_query = "query{findScene(id:%s){id,title,details,urls,date,files{path},rating100,paths{screenshot,stream}movies{movie{id,name}}studio{id,name,image_path,parent_studio{id,name,details}}organized,stash_ids{stash_id,endpoint}tags{id,name}performers{name,image_path,tags{id,name}}movies{movie{name}}galleries{id,title,url}}}" + id_query = "query{findScene(id:%s){id,title,details,urls,date,files{path},rating100,paths{screenshot,stream}movies{movie{id,name}}studio{id,name,image_path,parent_studio{id,name,details}}organized,stash_ids{stash_id,endpoint}tags{id,name}performers{name,disambiguation,image_path,tags{id,name}}movies{movie{name}}galleries{id,title,url}}}" data = HttpReq(id_query % mid) data = data['data']['findScene'] metadata.collections.clear() @@ -465,7 +465,10 @@ def update(self, metadata, media, lang = Locale.Language.English, force=False): if DEBUG: Log("Pulling Model: " + model["name"] + " With Image: " + model["image_path"]) role = metadata.roles.new() - role.name = model["name"] + if model.get("disambiguation"): + role.name = model["name"] + " (" + model["disambiguation"] + ")" + else: + role.name = model["name"] role.photo = model["image_path"] + api_string # role.role = "" # We can set a role for the performers, but pretty useless in most cases except: