mirror of
https://github.com/immich-app/immich.git
synced 2025-06-01 04:36:19 -04:00
feat(server): read Android and Sony video camera make/model (#16678)
* feat(server): read Android and Sony video camera exif data * Remove a logger line
This commit is contained in:
parent
9870ad9687
commit
2f8e89c7ec
@ -63,6 +63,14 @@ export interface ImmichTags extends Omit<Tags, TagsWithWrongTypes> {
|
|||||||
Name?: string;
|
Name?: string;
|
||||||
}[];
|
}[];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Device?: {
|
||||||
|
Manufacturer?: string;
|
||||||
|
ModelName?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
AndroidMake?: string;
|
||||||
|
AndroidModel?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
|
@ -1081,6 +1081,7 @@ describe(MetadataService.name, () => {
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should handle valid negative rating value', async () => {
|
it('should handle valid negative rating value', async () => {
|
||||||
mocks.asset.getByIds.mockResolvedValue([assetStub.image]);
|
mocks.asset.getByIds.mockResolvedValue([assetStub.image]);
|
||||||
mockReadTags({ Rating: -1 });
|
mockReadTags({ Rating: -1 });
|
||||||
@ -1193,6 +1194,23 @@ describe(MetadataService.name, () => {
|
|||||||
type: 'VIDEO',
|
type: 'VIDEO',
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
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) => {
|
||||||
|
mocks.asset.getByIds.mockResolvedValue([assetStub.image]);
|
||||||
|
mockReadTags(metaData);
|
||||||
|
|
||||||
|
await sut.handleMetadataExtraction({ id: assetStub.image.id });
|
||||||
|
expect(mocks.asset.upsertExif).toHaveBeenCalledWith(
|
||||||
|
expect.objectContaining({
|
||||||
|
make: '1',
|
||||||
|
model: '2',
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('handleQueueSidecar', () => {
|
describe('handleQueueSidecar', () => {
|
||||||
|
@ -221,8 +221,8 @@ export class MetadataService extends BaseService {
|
|||||||
colorspace: exifTags.ColorSpace ?? null,
|
colorspace: exifTags.ColorSpace ?? null,
|
||||||
|
|
||||||
// camera
|
// camera
|
||||||
make: exifTags.Make ?? null,
|
make: exifTags.Make ?? exifTags?.Device?.Manufacturer ?? exifTags.AndroidMake ?? null,
|
||||||
model: exifTags.Model ?? null,
|
model: exifTags.Model ?? exifTags?.Device?.ModelName ?? exifTags.AndroidModel ?? null,
|
||||||
fps: validate(Number.parseFloat(exifTags.VideoFrameRate!)),
|
fps: validate(Number.parseFloat(exifTags.VideoFrameRate!)),
|
||||||
iso: validate(exifTags.ISO) as number,
|
iso: validate(exifTags.ISO) as number,
|
||||||
exposureTime: exifTags.ExposureTime ?? null,
|
exposureTime: exifTags.ExposureTime ?? null,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user