mirror of https://github.com/stashapp/stash.git
54 lines
1.7 KiB
Go
54 lines
1.7 KiB
Go
package autotag
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/stashapp/stash/pkg/image"
|
|
"github.com/stashapp/stash/pkg/match"
|
|
"github.com/stashapp/stash/pkg/models"
|
|
)
|
|
|
|
func getImageFileTagger(s *models.Image, cache *match.Cache) tagger {
|
|
return tagger{
|
|
ID: s.ID,
|
|
Type: "image",
|
|
Name: s.GetTitle(),
|
|
Path: s.Path(),
|
|
cache: cache,
|
|
}
|
|
}
|
|
|
|
// ImagePerformers tags the provided image with performers whose name matches the image's path.
|
|
func ImagePerformers(ctx context.Context, s *models.Image, rw image.PartialUpdater, performerReader match.PerformerAutoTagQueryer, cache *match.Cache) error {
|
|
t := getImageFileTagger(s, cache)
|
|
|
|
return t.tagPerformers(ctx, performerReader, func(subjectID, otherID int) (bool, error) {
|
|
return image.AddPerformer(ctx, rw, s, otherID)
|
|
})
|
|
}
|
|
|
|
// ImageStudios tags the provided image with the first studio whose name matches the image's path.
|
|
//
|
|
// Images will not be tagged if studio is already set.
|
|
func ImageStudios(ctx context.Context, s *models.Image, rw ImageFinderUpdater, studioReader match.StudioAutoTagQueryer, cache *match.Cache) error {
|
|
if s.StudioID != nil {
|
|
// don't modify
|
|
return nil
|
|
}
|
|
|
|
t := getImageFileTagger(s, cache)
|
|
|
|
return t.tagStudios(ctx, studioReader, func(subjectID, otherID int) (bool, error) {
|
|
return addImageStudio(ctx, rw, s, otherID)
|
|
})
|
|
}
|
|
|
|
// ImageTags tags the provided image with tags whose name matches the image's path.
|
|
func ImageTags(ctx context.Context, s *models.Image, rw image.PartialUpdater, tagReader match.TagAutoTagQueryer, cache *match.Cache) error {
|
|
t := getImageFileTagger(s, cache)
|
|
|
|
return t.tagTags(ctx, tagReader, func(subjectID, otherID int) (bool, error) {
|
|
return image.AddTag(ctx, rw, s, otherID)
|
|
})
|
|
}
|