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

[Feature] Create All/New/Missing on Tagger page #3122

Open
scruffynerf opened this issue Nov 12, 2022 · 6 comments · May be fixed by #5158
Open

[Feature] Create All/New/Missing on Tagger page #3122

scruffynerf opened this issue Nov 12, 2022 · 6 comments · May be fixed by #5158

Comments

@scruffynerf
Copy link

A common request/concern from new users is:

"Wait, if I use Tagger, like you recommend, I have to click on EVERY new performer/studio/tag to add them? That will take forever, and I don't want to do that. Don't you guys have a setting to just auto add?"

Alternatives like using Identify (which can auto create, but fail to add images/etc), also fail to allow any sort of manual checking... it's basically "all or nothing".

If a "Create All" button/option is added to Tagger, most of this resistance will go away. While there is a userscript that add 'save all' as an option, the stock app would retain the relative safety of still requiring someone to manually review, but allow them to not have to hit 'create' (and then confirm/save, so 2 clicks, plus load time) for each new performer/studio and each new tag.

Either a button (Create Missing? Create All?) or a set of options ("Create Missing Performers, Create Missing Studios, Create Missing Tags") would be good, but I'd favor the latter, as allowing partial automation... Someone might not want new tags, for example.

@WithoutPants
Copy link
Collaborator

I spent quite a bit of time prototyping this functionality based on the original description, but was ultimately unsatisfied with the resulting user experience.

A Create All button feels like a sledgehammer approach, and I'd prefer a more nuanced solution.

The goal of the following design is to allow the user to configure the default approach for the tagger, then allow them to save all matching scenes with a single click. It should also be possible for the user to select scenes to ignore during the save all operation.

I would also like to eliminate the multiple server trips involved when handling a single scene. Currently, if a user wants to create everything attached to a given scene, they must click create on the studio, click to confirm the dialog, and repeat for each performer. Each of these results in a trip to the server to create the objects.

Instead, the create button to be a mode button, like Skip. Clicking the create button once will set for the studio/performer to be created when the scene is saved. Clicking the create button a second time would bring up the create dialog per existing behaviour.

Similarly, the new tags list will be changed so that clicking on a tag will toggle it to be created (or not) during save.

A Save All button would be added to save all of the matched/selected scenes, based on the current options on each result.

We want to be able to prevent an unwanted scene from being saved during the save all operation. Adding a deselect, or close/x button somewhere on the card would facilitate this.

Finally, the configuration would be changed to allow enabling/disabling each field: title, details, cover image, tags, performers and so on. Similar to identify, each field would have a strategy for how to handle the value (for details this might be overwrite, append, prepend; for tags is might be overwrite or merge). For fields that match some object, it will also allow configuration of what to do when a object is matched by name (set or add stash id and set), and what to do where no matching object was found (ignore or create). This would replace the Set Cover and Set Tags fields.

This is a rough approximation of how it might look:
Image

The UI does need to be iterated on, this is a very rough proof of concept.

Image

@MinasukiHikimuna
Copy link
Collaborator

I have tagged tens of thousands of scenes with the tagger using Save All plugins. My approach has been scroll down the page, create the missing studios and performers and have tags be automatically created from StashDB. If everything looks good, only then will I press Save All so I know the incoming metadata is good for all scenes. This has limited the batch size to something like 20-40 however which makes it slower for large amounts of the scenes.

This looks very promising and would solve the need for Save All.

Only critique from me would be that Stash ID should be one field in the configuration. My workflow has been to match the scenes to StashDB first and then on top of that match those to TPDB. I have used "Stash Batch Result Toggle" plugin to only have Stash ID update in these cases and then again scroll down the list to make sure the metadata looks good and only after that click on Save All.

@WithoutPants
Copy link
Collaborator

Only critique from me would be that Stash ID should be one field in the configuration. My workflow has been to match the scenes to StashDB first and then on top of that match those to TPDB. I have used "Stash Batch Result Toggle" plugin to only have Stash ID update in these cases and then again scroll down the list to make sure the metadata looks good and only after that click on Save All.

The fields in the table in the screenshot were only meant to be as an example, in the implementation, any field that can be included/excluded would be in that table, include stash id.

@stg-annon
Copy link
Collaborator

My approach to bulk tagging has been to use Identify to get the bulk of scenes matched then for the rest that need more attention use Tagger where tagger helps scrutinize things.

Part of the issue with this approach is that there currently is no way to define a custom threshold with Identify to say only match scenes with 10+ duration matches or 5+ exact PHASH matches if this were an option users could change that threshold to whatever they are comfortable with then use Tagger to match others and submit more fingerprints on the rest.

I think Save All would be equivalent to Identify in this case and you could essentially call that task from a Save All button on the scenes that are shown with the field settings that are set from the Tagger. This might make Identify more approachable as I don't really think people know it exists and truly think its the thing most people looking to bulk match want.

@cj12312021
Copy link
Collaborator

Other users have mentioned that there are plugins out there that provide similar functionality, but I agree with having this as core functionality in Stash. I use 7dJ's plugin, but it has two major issues. The first is that the settings need to be reset after each new Stash session, which is not ideal. The second is that since the various scene fields aren't properly labeled with classes, the plugin sometimes struggles to identify which field should be ignored and which shouldn't. It currently attempts to do this based on the index of the selected field. However, that index varies based on which fields were actually provided in the scraped result.

While I can understand why some users would want to create everything, that functionality has no appeal to me. So, I'm glad an option will remain to keep the current behavior of skipping uncreated tags by default.

I think it makes sense to keep the field option UI between Tagger and Identify consistent to reduce friction for users if both will offer the same choices.

@github-ph-52obr
Copy link

Has there been any progress on this? I see that it's still open, so I assume this is the active issue thread.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: No status
Development

Successfully merging a pull request may close this issue.

6 participants