stashapp / stash

An organizer for your porn, written in Go. Documentation: https://docs.stashapp.cc
https://stashapp.cc/
GNU Affero General Public License v3.0
8.91k stars 780 forks source link

[Feature] Enhanced performer aliases with studio association #422

Open echo6ix opened 4 years ago

echo6ix commented 4 years ago

Many performer's only use a first name, including their aliases. This causes duplicates and false positives for auto-tagging.

Describe the solution you'd like Give the end-user the option to associate each alias with a studio.

When auto-tagging, the app can parse filenames looking for matches that contain both the alias and studio in the filename for more precise auto-tagging; as expressed in a regex it could be (\bStudioName\b.*\bPerformerAlias\b|\bPerformerAlias\b.*\bStudioName\b)

The concept in general as expressed in JSON:

{
  "name": "Jane Doe",
  "aliases": {
    "Jane": "Brazzers",
    "Jane Doe": "Naughty America",
    "Jayne": "21 Naturals",
    "Jayne Doe": "DDF Network",
    "Janey" : "",    // not associated with any studio or website
  }
}

And to tie it all together, a UI that lets a user associate a studio from the database to each and any alias.

Edit / Update

echo6ix commented 4 years ago

Would implementing something like this require require a new table, such as performers_aliases, in the database?

performers_aliases    table
     id               integer
     alias_name       varchar(255)
     performer_id     integer
     studio_id        integer

To reference the alias name(s) attached to the performer and the associated studio if any.

hyde231 commented 4 years ago

Edge cases to consider:

echo6ix commented 4 years ago

@hyde231

Two (or more) performers can have the same alias with a given studio

Definitely. Not sure there's any way around that though.

One performer can have two (or more) aliases for the same studio

Yup. I have several like this within my own personal collection. Each would get it's own entry as an alias, eg

{
  "name": "Jane Doe",
  "aliases": {
    "Jane": "Brazzers",
    "Jayne": "Brazzers",
  }
}
VonTittyslappen commented 4 years ago

Perhaps the system can be designed where when you try to add a performer of the same name it gives you the option of forcing to add it, and then it'll ask you what studio/site she is associated with, so in the performer list she'll be displayed just as Trillium but with the studio in brackets), rather than having to name the performer with the site in her name, if that makes sense...

echo6ix commented 4 years ago

Performers are typically associated with multiple sites though, displaying their primary name with one seems kind of arbitrary imo.

Most people are probably only going to add the alias-studio connection once they use the auto-tagger and find a performer false positive. Other's are going to build a scraper that looks up the performer on indexxx.com to grab all their alias-studio connections, since indexxx already uses the paradigm I'm suggesting. Here's an example, https://www.indexxx.com/m/danniela, of a performer with a somewhat common single name, and under the list of all the web sites they've done work for they associate the performer name (alias) used for said site.

Annotation 2020-08-18 201334

echo6ix commented 3 years ago

image

Toggle

Autotag toggle button to denote if the entry should be ignored by autotagging.

Primary performer name and autotagging toggles

Each performer has a primary name. Adding aliases that are associated with studios mitigates false positives, but there's still the primary name that will be autotagged and capable of accumulating false positives. Include a toggle option on a per performer basis to disable the primary name from being autotagged.

laurus-lx commented 3 years ago

For schema implementation - I'd suggest having performer alias be unique and then linked to scenes and studios via join tables So for Daniella example Daniella (via join table links to - MetArt, Rislskyart) Lerahon (via join table links to Suicide Gitls)

Tscherno commented 2 years ago

Anything working on that one? This would be really useful!

BrikoX commented 2 years ago

This is probably the one feature I miss the most at the moment, having few profiles for the same performer and having to deal with them manually.

ZMarkC commented 1 year ago

Possibly resolved/improved with #3113

echo6ix commented 1 year ago

Possibly resolved/improved with #3113

I don't think that addresses this issue.

Linking names/aliases to studios is much more involved work, and I'm not keen on jumping straight into that as a first iteration. Probably something to look at down the track.

echo6ix commented 1 year ago

I thought of a better way to implement this on the frontend.

  1. On the frontend UI consolidate the primary name and aliases fields into one field titled Names
  2. Each value in the Names field is presented as a list
  3. Each list value has a drop-down menu with options a. Set name as primary b. Delete name c. Studio filter -- to selection which studio the name (if any) is associated with d. Disambiguation

Primary name.

Image 1 image

Image 2 - Studio association selection image

Image 3 - Displaying the studio association image

Image 4 - Disambiguation selection image

Image 5 - Displaying disambiguation image

daddie888 commented 9 months ago

It would be allready a big improvement if you had the search/select for performer as used in the edit scene screen, there you get the possible suggestions for that alias, now there is no field for performer in the auto tagging when no primary name is found and you have to switch tot that edit scene screen what is time consuming. In fact, having the performer, studio and tags fields there always would fine. But the scenes should be able to hide when none of the fields has suggestions.