mirror of
https://github.com/immich-app/immich.git
synced 2026-03-01 01:59:06 +03:00
feat(server): read additional lens exif tags (#17125)
* fix(server): read additional lens exif tags * Update order of read tags * Fix e2e test * Fix e2e test * Fix e2e test * Fix e2e test * Update test * Filter unknown lens exif data * Formatting fixes
This commit is contained in:
@@ -1229,18 +1229,51 @@ describe(MetadataService.name, () => {
|
||||
});
|
||||
|
||||
it.each([
|
||||
{ Make: '1', Model: '2', Device: { Manufacturer: '3', ModelName: '4' }, AndroidMake: '4', AndroidModel: '5' },
|
||||
{ Device: { Manufacturer: '1', ModelName: '2' }, AndroidMake: '3', AndroidModel: '4' },
|
||||
{ AndroidMake: '1', AndroidModel: '2' },
|
||||
])('should read camera make and model correct place %s', async (metaData) => {
|
||||
{
|
||||
exif: {
|
||||
Make: '1',
|
||||
Model: '2',
|
||||
Device: { Manufacturer: '3', ModelName: '4' },
|
||||
AndroidMake: '4',
|
||||
AndroidModel: '5',
|
||||
},
|
||||
expected: { make: '1', model: '2' },
|
||||
},
|
||||
{
|
||||
exif: { Device: { Manufacturer: '1', ModelName: '2' }, AndroidMake: '3', AndroidModel: '4' },
|
||||
expected: { make: '1', model: '2' },
|
||||
},
|
||||
{ exif: { AndroidMake: '1', AndroidModel: '2' }, expected: { make: '1', model: '2' } },
|
||||
])('should read camera make and model $exif -> $expected', async ({ exif, expected }) => {
|
||||
mocks.asset.getByIds.mockResolvedValue([assetStub.image]);
|
||||
mockReadTags(metaData);
|
||||
mockReadTags(exif);
|
||||
|
||||
await sut.handleMetadataExtraction({ id: assetStub.image.id });
|
||||
expect(mocks.asset.upsertExif).toHaveBeenCalledWith(expect.objectContaining(expected));
|
||||
});
|
||||
|
||||
it.each([
|
||||
{ exif: {}, expected: null },
|
||||
{ exif: { LensID: '1', LensSpec: '2', LensType: '3', LensModel: '4' }, expected: '1' },
|
||||
{ exif: { LensSpec: '2', LensType: '3', LensModel: '4' }, expected: '3' },
|
||||
{ exif: { LensSpec: '2', LensModel: '4' }, expected: '2' },
|
||||
{ exif: { LensModel: '4' }, expected: '4' },
|
||||
{ exif: { LensID: '----' }, expected: null },
|
||||
{ exif: { LensID: 'Unknown (0 ff ff)' }, expected: null },
|
||||
{
|
||||
exif: { LensID: 'Unknown (E1 40 19 36 2C 35 DF 0E) Tamron 10-24mm f/3.5-4.5 Di II VC HLD (B023) ?' },
|
||||
expected: null,
|
||||
},
|
||||
{ exif: { LensID: ' Unknown 6-30mm' }, expected: null },
|
||||
{ exif: { LensID: '' }, expected: null },
|
||||
])('should read camera lens information $exif -> $expected', async ({ exif, expected }) => {
|
||||
mocks.asset.getByIds.mockResolvedValue([assetStub.image]);
|
||||
mockReadTags(exif);
|
||||
|
||||
await sut.handleMetadataExtraction({ id: assetStub.image.id });
|
||||
expect(mocks.asset.upsertExif).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
make: '1',
|
||||
model: '2',
|
||||
lensModel: expected,
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user