fixed metadata extraction
This commit is contained in:
parent
28b8773d6a
commit
e82ba8439e
|
@ -12,7 +12,8 @@ export interface ParsedMetaDataJSON {
|
||||||
title?: string;
|
title?: string;
|
||||||
creationTime: number;
|
creationTime: number;
|
||||||
modificationTime: number;
|
modificationTime: number;
|
||||||
location: Location;
|
latitude: number;
|
||||||
|
longitude: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const NULL_LOCATION: Location = { latitude: null, longitude: null };
|
export const NULL_LOCATION: Location = { latitude: null, longitude: null };
|
||||||
|
@ -21,7 +22,7 @@ const NULL_PARSED_METADATA_JSON: ParsedMetaDataJSON = {
|
||||||
title: null,
|
title: null,
|
||||||
creationTime: null,
|
creationTime: null,
|
||||||
modificationTime: null,
|
modificationTime: null,
|
||||||
location: NULL_LOCATION,
|
...NULL_LOCATION,
|
||||||
};
|
};
|
||||||
|
|
||||||
export async function extractMetatdata(
|
export async function extractMetatdata(
|
||||||
|
@ -78,6 +79,12 @@ export async function parseMetadataJSON(receivedFile: globalThis.File) {
|
||||||
) {
|
) {
|
||||||
parsedMetaDataJSON.creationTime =
|
parsedMetaDataJSON.creationTime =
|
||||||
metadataJSON['photoTakenTime']['timestamp'] * 1000000;
|
metadataJSON['photoTakenTime']['timestamp'] * 1000000;
|
||||||
|
} else if (
|
||||||
|
metadataJSON['creationTime'] &&
|
||||||
|
metadataJSON['creationTime']['timestamp']
|
||||||
|
) {
|
||||||
|
parsedMetaDataJSON.creationTime =
|
||||||
|
metadataJSON['creationTime']['timestamp'] * 1000000;
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
metadataJSON['modificationTime'] &&
|
metadataJSON['modificationTime'] &&
|
||||||
|
@ -101,7 +108,8 @@ export async function parseMetadataJSON(receivedFile: globalThis.File) {
|
||||||
locationData = metadataJSON['geoDataExif'];
|
locationData = metadataJSON['geoDataExif'];
|
||||||
}
|
}
|
||||||
if (locationData !== null) {
|
if (locationData !== null) {
|
||||||
parsedMetaDataJSON.location = locationData;
|
parsedMetaDataJSON.latitude = locationData.latitude;
|
||||||
|
parsedMetaDataJSON.longitude = locationData.longitude;
|
||||||
}
|
}
|
||||||
return parsedMetaDataJSON;
|
return parsedMetaDataJSON;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
|
@ -117,17 +117,19 @@ class UploadService {
|
||||||
if (hasStaticThumbnail) {
|
if (hasStaticThumbnail) {
|
||||||
extractedMetadata.hasStaticThumbnail = true;
|
extractedMetadata.hasStaticThumbnail = true;
|
||||||
}
|
}
|
||||||
const metadata: MetadataObject = {
|
for (const [key, value] of Object.entries(googleMetadata)) {
|
||||||
...extractedMetadata,
|
if (!value) {
|
||||||
...googleMetadata,
|
continue;
|
||||||
};
|
}
|
||||||
|
extractedMetadata[key] = value;
|
||||||
|
}
|
||||||
|
|
||||||
const filedata = await getFileData(reader, receivedFile);
|
const filedata = await getFileData(reader, receivedFile);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
filedata,
|
filedata,
|
||||||
thumbnail,
|
thumbnail,
|
||||||
metadata,
|
metadata: extractedMetadata,
|
||||||
} as FileInMemory;
|
} as FileInMemory;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logError(e, 'error reading files');
|
logError(e, 'error reading files');
|
||||||
|
|
Loading…
Reference in a new issue