From 1e056705014f44232a3da3b17cf2efd91f89fe65 Mon Sep 17 00:00:00 2001 From: Michael Mayer Date: Wed, 29 Apr 2020 16:12:09 +0200 Subject: [PATCH] Increase NSFW detector threshold Signed-off-by: Michael Mayer --- frontend/src/common/config.js | 3 +++ internal/meta/exif.go | 30 ++++++++++++++------------ internal/nsfw/nsfw.go | 2 +- internal/photoprism/index_mediafile.go | 8 ++++++- 4 files changed, 27 insertions(+), 16 deletions(-) diff --git a/frontend/src/common/config.js b/frontend/src/common/config.js index fda66095f..4177762ba 100644 --- a/frontend/src/common/config.js +++ b/frontend/src/common/config.js @@ -57,6 +57,9 @@ class Config { case "favorites": this.values.count.favorites += data.count; break; + case "private": + this.values.count.private += data.count; + break; case "albums": this.values.count.albums += data.count; break; diff --git a/internal/meta/exif.go b/internal/meta/exif.go index 694c021c2..9bbd844d8 100644 --- a/internal/meta/exif.go +++ b/internal/meta/exif.go @@ -264,25 +264,27 @@ func Exif(filename string) (data Data, err error) { Lon: float64(data.Lng), }) - if err != nil { - data.TimeZone = "UTC" + if err == nil && len(zones) > 0 { + data.TimeZone = zones[0] } - - data.TimeZone = zones[0] } - if value, ok := tags["DateTimeOriginal"]; ok { - data.TakenAtLocal, _ = time.Parse("2006:01:02 15:04:05", value) + if value, ok := tags["DateTimeOriginal"]; ok && value != "0000:00:00 00:00:00" { + if taken, err := time.Parse("2006:01:02 15:04:05", value); err == nil { + data.TakenAtLocal = taken.Round(time.Second) - loc, err := time.LoadLocation(data.TimeZone) - - if err != nil { - data.TakenAt = data.TakenAtLocal - log.Warnf("no location for timezone: %s", err.Error()) - } else if tl, err := time.ParseInLocation("2006:01:02 15:04:05", value, loc); err == nil { - data.TakenAt = tl.UTC() + if data.TimeZone == "" { + data.TakenAt = data.TakenAtLocal + } else if loc, err := time.LoadLocation(data.TimeZone); err != nil { + data.TakenAt = data.TakenAtLocal + log.Warnf("exif: no location for time zone %s", data.TimeZone) + } else if tl, err := time.ParseInLocation("2006:01:02 15:04:05", value, loc); err == nil { + data.TakenAt = tl.UTC() + } else { + log.Warnf("exif: %s", err.Error()) + } } else { - log.Warnf("could not parse time: %s", err.Error()) + log.Warnf("exif: invalid time %s", value) } } diff --git a/internal/nsfw/nsfw.go b/internal/nsfw/nsfw.go index 8146d706e..3dff89327 100644 --- a/internal/nsfw/nsfw.go +++ b/internal/nsfw/nsfw.go @@ -15,7 +15,7 @@ import ( const ( ThresholdSafe = 0.75 ThresholdMedium = 0.85 - ThresholdHigh = 0.9 + ThresholdHigh = 0.98 ) var log = event.Log diff --git a/internal/photoprism/index_mediafile.go b/internal/photoprism/index_mediafile.go index fb5776748..fc9ab1f1a 100644 --- a/internal/photoprism/index_mediafile.go +++ b/internal/photoprism/index_mediafile.go @@ -317,6 +317,12 @@ func (ind *Index) MediaFile(m *MediaFile, o IndexOptions, originalName string) ( "count": 1, }) + if photo.PhotoPrivate { + event.Publish("count.private", event.Data{ + "count": 1, + }) + } + event.EntitiesCreated("photos", []entity.Photo{photo}) } @@ -432,7 +438,7 @@ func (ind *Index) NSFW(jpeg *MediaFile) bool { return false } else { if nsfwLabels.NSFW(nsfw.ThresholdHigh) { - log.Warnf("index: \"%s\" might contain offensive content", jpeg.FileName()) + log.Warnf("index: %s might contain offensive content", jpeg.RelativeName(ind.originalsPath())) return true } }