Add darktable ghost publish plugin
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
48
hosts/common/configs/user/gui/darktable/publish/src/exif.ts
Normal file
48
hosts/common/configs/user/gui/darktable/publish/src/exif.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import { exiftool } from "exiftool-vendored";
|
||||
import type { FileInfo } from "./files";
|
||||
|
||||
export interface ShootingConditions {
|
||||
make: string;
|
||||
model: string;
|
||||
lensMake: string;
|
||||
lensModel: string;
|
||||
focalLength: string;
|
||||
focalLength35: string;
|
||||
shutterSpeed: string;
|
||||
fStop: string;
|
||||
iso: string;
|
||||
timestamp: string;
|
||||
}
|
||||
|
||||
export const extractShootingConditions = async (
|
||||
fileInfo: FileInfo,
|
||||
): Promise<ShootingConditions> => {
|
||||
const path = fileInfo.rawPath ?? fileInfo.jpegPath;
|
||||
|
||||
try {
|
||||
const exifData = await exiftool.read(path);
|
||||
|
||||
return {
|
||||
make: exifData.Make ?? "Unknown",
|
||||
model: exifData.Model ?? "Unknown",
|
||||
lensMake: exifData.LensMake ?? "Unknown",
|
||||
lensModel: exifData.LensModel ?? "Unknown",
|
||||
focalLength: exifData.FocalLength ?? "Unknown",
|
||||
focalLength35: exifData.FocalLengthIn35mmFormat ?? "Unknown",
|
||||
shutterSpeed: exifData.ExposureTime ?? "Unknown",
|
||||
fStop: exifData.FNumber?.toString() ?? "Unknown",
|
||||
iso: exifData.ISO?.toString() ?? "Unknown",
|
||||
timestamp: new Date(
|
||||
(exifData.CreateDate?.toString() as string).replace(/\./g, ":"),
|
||||
).toISOString(),
|
||||
};
|
||||
} catch (error: any) {
|
||||
throw new Error(
|
||||
`Failed to extract EXIF data from ${path}: ${error.message}`,
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
export const createImageCaption = (exif: ShootingConditions) => {
|
||||
return `${exif.make} ${exif.model}, ${exif.lensMake} ${exif.lensModel} @ ${exif.focalLength} (${exif.focalLength35}), ${exif.shutterSpeed} s, f/${exif.fStop}, ISO ${exif.iso}`;
|
||||
};
|
Reference in New Issue
Block a user