Skip to content

Conversation

@spaceyuck
Copy link
Contributor

It always bugged me when scrapers produced tags from multiple levels of the same hierarchy (A -> A1 -> A1a), when basically the most specialized tag (A1a in the example) would suffice and imply the parents, so here is a plugin that addresses this admittedly very niche use case for people with very organized tag hierarchies.

It can be enabled for:

  • scenes
  • images
  • galleries
  • performers

When enabled, it checks all tags present on an item, and checks the relationship of those to each other. if a tag is deemed to be redundant (because a direct or indirect sub-tag is also present).

There are 3 ways to qualify redundant tags for untagging:

  • use auto-tag setting of tags, so tags that are ignored for auto-tagging are allowed to be removed - this gives the most fine-grained control on a per tag basis, but requires a lot of tag tuning
  • allow all root tags (tags without parents) for removal - this would probably suffice if the tag hierarchies rarely go passed 2 levels, and just use parent tags for simple grouping
  • allow all tags that are neither a root tag nor a leaf tag (have both parent and sub-tags) to be removed - this is quite aggressive, and combined with allowing root tag removal, basically only keeps the most specialized tags, but might be an option when you want to avoid having to comb through all tags fiddling with the auto tag setting for all parent tags

@DogmaDragon DogmaDragon added type:plugin Plugins object:scene Affects or is triggered by scene object object:image Affects or is triggered by image object object:gallery Affects or is triggered by gallery object object:performer Affects or is triggered by performer object labels Oct 12, 2025
@DogmaDragon DogmaDragon merged commit 55e6483 into stashapp:main Oct 12, 2025
1 check passed
@spaceyuck spaceyuck deleted the untagRedundantTags branch October 12, 2025 06:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

object:gallery Affects or is triggered by gallery object object:image Affects or is triggered by image object object:performer Affects or is triggered by performer object object:scene Affects or is triggered by scene object type:plugin Plugins

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants