photoprism/internal/nsfw/nsfw.go

48 lines
860 B
Go
Raw Normal View History

/*
This package detects images that may not be safe for work.
Additional information can be found in our Developer Guide:
https://github.com/photoprism/photoprism/wiki/Storage
*/
package nsfw
import (
"github.com/photoprism/photoprism/internal/event"
)
const (
ThresholdSafe = 0.75
ThresholdMedium = 0.85
ThresholdHigh = 0.98
)
var log = event.Log
type Labels struct {
Drawing float32
Hentai float32
Neutral float32
Porn float32
Sexy float32
}
// IsSafe returns true if the image is probably safe for work.
func (l *Labels) IsSafe() bool {
return !l.NSFW(ThresholdSafe)
}
// NSFW returns true if the image is may not be safe for work.
func (l *Labels) NSFW(threshold float32) bool {
if l.Neutral > 0.25 {
return false
}
if l.Porn > threshold || l.Sexy > threshold || l.Hentai > threshold {
return true
}
return false
}