fix(server): extract make/model from sony video files (#26833)

Co-authored-by: Your Name <brendan.ngo@okendo.io>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
This commit is contained in:
Brendan Ngo
2026-03-12 04:29:37 +11:00
committed by GitHub
parent e45308b949
commit 0a79dd1228
3 changed files with 11 additions and 2 deletions

View File

@@ -72,6 +72,8 @@ export interface ImmichTags extends Omit<Tags, TagsWithWrongTypes> {
AndroidMake?: string;
AndroidModel?: string;
DeviceManufacturer?: string;
DeviceModelName?: string;
}
@Injectable()

View File

@@ -1569,6 +1569,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(getForMetadataExtraction(asset));

View File

@@ -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,