diff --git a/server/src/repositories/metadata.repository.ts b/server/src/repositories/metadata.repository.ts index 3c36bf62db3f8..fc00d44b3fe38 100644 --- a/server/src/repositories/metadata.repository.ts +++ b/server/src/repositories/metadata.repository.ts @@ -72,6 +72,8 @@ export interface ImmichTags extends Omit { AndroidMake?: string; AndroidModel?: string; + DeviceManufacturer?: string; + DeviceModelName?: string; } @Injectable() diff --git a/server/src/services/metadata.service.spec.ts b/server/src/services/metadata.service.spec.ts index 92ec13bea5194..2f07c65aafc12 100644 --- a/server/src/services/metadata.service.spec.ts +++ b/server/src/services/metadata.service.spec.ts @@ -1568,6 +1568,11 @@ describe(MetadataService.name, () => { expected: { make: '1', model: '2' }, }, { exif: { AndroidMake: '1', AndroidModel: '2' }, expected: { make: '1', model: '2' } }, + { exif: { DeviceManufacturer: '1', DeviceModelName: '2' }, expected: { make: '1', model: '2' } }, + { + exif: { Make: '1', Model: '2', DeviceManufacturer: '3', DeviceModelName: '4' }, + expected: { make: '1', model: '2' }, + }, ])('should read camera make and model $exif -> $expected', async ({ exif, expected }) => { const asset = AssetFactory.create(); mocks.assetJob.getForMetadataExtraction.mockResolvedValue(asset); diff --git a/server/src/services/metadata.service.ts b/server/src/services/metadata.service.ts index f22d4682fa12b..4f2d7d4bd6c66 100644 --- a/server/src/services/metadata.service.ts +++ b/server/src/services/metadata.service.ts @@ -289,8 +289,10 @@ export class MetadataService extends BaseService { colorspace: exifTags.ColorSpace === undefined ? null : String(exifTags.ColorSpace), // camera - make: exifTags.Make ?? exifTags.Device?.Manufacturer ?? exifTags.AndroidMake ?? null, - model: exifTags.Model ?? exifTags.Device?.ModelName ?? exifTags.AndroidModel ?? null, + make: + exifTags.Make ?? exifTags.Device?.Manufacturer ?? exifTags.AndroidMake ?? (exifTags.DeviceManufacturer || null), + model: + exifTags.Model ?? exifTags.Device?.ModelName ?? exifTags.AndroidModel ?? (exifTags.DeviceModelName || null), fps: validate(Number.parseFloat(exifTags.VideoFrameRate!)), iso: validate(exifTags.ISO) as number, exposureTime: exifTags.ExposureTime ?? null,