fixed metadata extraction

This commit is contained in:
Abhinav-grd 2021-08-12 15:04:55 +05:30
parent 28b8773d6a
commit e82ba8439e
2 changed files with 18 additions and 8 deletions

View file

@ -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) {

View file

@ -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');