Backend: Index camera make & model for video files #506

This commit is contained in:
Michael Mayer 2020-10-04 12:47:53 +02:00
parent f431caeb4c
commit 2e51e84605
2 changed files with 84 additions and 0 deletions

View file

@ -461,4 +461,60 @@ func TestJSON(t *testing.T) {
assert.Equal(t, 1, data.Orientation)
assert.Equal(t, "equirectangular", data.Projection)
})
t.Run("P7250006.json", func(t *testing.T) {
data, err := JSON("testdata/P7250006.json", "P7250006.MOV")
if err != nil {
t.Fatal(err)
}
// t.Logf("all: %+v", data.All)
assert.Equal(t, "", data.Artist)
assert.Equal(t, "2018-07-25T11:18:42Z", data.TakenAt.Format("2006-01-02T15:04:05Z"))
assert.Equal(t, "2018-07-25T11:18:42Z", data.TakenAtLocal.Format("2006-01-02T15:04:05Z"))
assert.Equal(t, "", data.Title)
assert.Equal(t, "", data.Keywords)
assert.Equal(t, "", data.Description)
assert.Equal(t, "", data.Copyright)
assert.Equal(t, 1080, data.Height)
assert.Equal(t, 1920, data.Width)
assert.Equal(t, float32(0), data.Lat)
assert.Equal(t, float32(0), data.Lng)
assert.Equal(t, 0, data.Altitude)
assert.Equal(t, "", data.Exposure)
assert.Equal(t, "OLYMPUS DIGITAL CAMERA", data.CameraMake)
assert.Equal(t, "E-PL7", data.CameraModel)
assert.Equal(t, "", data.CameraOwner)
assert.Equal(t, "", data.CameraSerial)
assert.Equal(t, 0, data.FocalLength)
assert.Equal(t, 1, data.Orientation)
assert.Equal(t, "", data.Projection)
})
t.Run("P9150300.json", func(t *testing.T) {
data, err := JSON("testdata/P9150300.json", "P9150300.MOV")
if err != nil {
t.Fatal(err)
}
// t.Logf("all: %+v", data.All)
assert.Equal(t, "OLYMPUS DIGITAL CAMERA", data.CameraMake)
assert.Equal(t, "E-M10MarkII", data.CameraModel)
})
t.Run("GOPR0533.json", func(t *testing.T) {
data, err := JSON("testdata/GOPR0533.json", "GOPR0533.MP4")
if err != nil {
t.Fatal(err)
}
// No make or model in this file...
assert.Equal(t, "", data.CameraMake)
assert.Equal(t, "", data.CameraModel)
})
}

View file

@ -422,6 +422,34 @@ func (ind *Index) MediaFile(m *MediaFile, o IndexOptions, originalName string) (
if res := m.Megapixels(); res > photo.PhotoResolution {
photo.PhotoResolution = res
}
if photo.CameraSrc == entity.SrcAuto {
// Set UpdateCamera, Lens, Focal Length and F Number.
photo.Camera = entity.FirstOrCreateCamera(entity.NewCamera(m.CameraModel(), m.CameraMake()))
if photo.Camera != nil {
photo.CameraID = photo.Camera.ID
} else {
photo.CameraID = entity.UnknownCamera.ID
}
if photo.CameraID != entity.UnknownCamera.ID {
photo.CameraSrc = entity.SrcMeta
}
photo.Lens = entity.FirstOrCreateLens(entity.NewLens(m.LensModel(), m.LensMake()))
if photo.Lens != nil {
photo.LensID = photo.Lens.ID
} else {
photo.LensID = entity.UnknownLens.ID
}
photo.PhotoFocalLength = m.FocalLength()
photo.PhotoFNumber = m.FNumber()
photo.PhotoIso = m.Iso()
photo.PhotoExposure = m.Exposure()
}
}
if photo.TypeSrc == entity.SrcAuto {