Metadata: Automatically detect scans based on metadata #322

Signed-off-by: Michael Mayer <michael@photoprism.app>
This commit is contained in:
Michael Mayer 2023-02-22 16:21:26 +01:00
parent c030cf862e
commit 4451447bdd
3 changed files with 32 additions and 0 deletions

View File

@ -140,6 +140,15 @@ func (m *Camera) String() string {
return clean.Log(m.CameraName)
}
// Scanner checks whether the model appears to be a scanner.
func (m *Camera) Scanner() bool {
if m.CameraSlug == "" {
return false
}
return strings.Contains(m.CameraSlug, "scan")
}
// Unknown returns true if the camera is not a known make or model.
func (m *Camera) Unknown() bool {
return m.CameraSlug == "" || m.CameraSlug == UnknownCamera.CameraSlug

View File

@ -137,3 +137,22 @@ func TestCamera_String(t *testing.T) {
assert.Equal(t, "Unknown", cameraString)
})
}
func TestCamera_Scanner(t *testing.T) {
t.Run("model XXX make Nikon", func(t *testing.T) {
camera := NewCamera("XXX", "Nikon")
assert.False(t, camera.Scanner())
})
t.Run("MS Scanner", func(t *testing.T) {
camera := NewCamera("MS Scanner", "")
assert.True(t, camera.Scanner())
})
t.Run("model Unknown make XXX", func(t *testing.T) {
camera := NewCamera("", "test")
assert.False(t, camera.Scanner())
})
t.Run("model Unknown make Unknown", func(t *testing.T) {
camera := NewCamera("", "")
assert.False(t, camera.Scanner())
})
}

View File

@ -654,6 +654,10 @@ func (m *Photo) SetCamera(camera *Camera, source string) {
m.CameraID = camera.ID
m.Camera = camera
m.CameraSrc = source
if !m.PhotoScan && m.Camera.Scanner() {
m.PhotoScan = true
}
}
// SetLens updates the lens.