From d8356ae0c08c3084a1433a8ee14e842ee11c3222 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Mon, 30 Sep 2024 13:08:35 +0530 Subject: [PATCH 1/4] Parse description --- web/apps/photos/src/services/upload/takeout.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/web/apps/photos/src/services/upload/takeout.ts b/web/apps/photos/src/services/upload/takeout.ts index 02bff3cd25..22c24d7110 100644 --- a/web/apps/photos/src/services/upload/takeout.ts +++ b/web/apps/photos/src/services/upload/takeout.ts @@ -19,6 +19,7 @@ export interface ParsedMetadataJSON { creationTime?: number; modificationTime?: number; location?: Location; + description?: string; } export const MAX_FILE_NAME_LENGTH_GOOGLE_EXPORT = 46; @@ -126,6 +127,10 @@ const parseMetadataJSONText = (text: string) => { parseGTLocation(metadataJSON["geoData"]) ?? parseGTLocation(metadataJSON["geoDataExif"]); + parsedMetadataJSON.description = parseGTNonEmptyString( + metadataJSON["description"], + ); + return parsedMetadataJSON; }; @@ -172,6 +177,13 @@ const parseGTLocation = (o: unknown): Location | undefined => { return undefined; }; +/** + * Parse a string from a field in a Google Takeout JSON, treating empty strings + * as undefined. + */ +const parseGTNonEmptyString = (o: unknown): string | undefined => + o && typeof o == "string" ? o : undefined; + /** * Return the matching entry (if any) from {@link parsedMetadataJSONMap} for the * {@link fileName} and {@link collectionID} combination. From 49b5c2ca149372a6f03dc8c15044ca954b15ccf4 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Mon, 30 Sep 2024 16:51:30 +0530 Subject: [PATCH 2/4] Doc --- web/packages/new/photos/types/file.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/web/packages/new/photos/types/file.ts b/web/packages/new/photos/types/file.ts index 64861ed017..38b6236c13 100644 --- a/web/packages/new/photos/types/file.ts +++ b/web/packages/new/photos/types/file.ts @@ -144,10 +144,22 @@ export interface FilePublicMagicMetadataProps { * Epoch microseconds. */ editedTime?: number; + /** + * Edited name of the {@link EnteFile}. + * + * If the user edits the name of the file within Ente, then the edits are + * saved in this field. + */ editedName?: string; + /** + * A arbitrary textual caption / description that the user has attached to + * the {@link EnteFile}. + */ caption?: string; uploaderName?: string; + /** Width of the image / video, in pixels. */ w?: number; + /** Height of the image / video, in pixels. */ h?: number; } From 1dfd295f40402311eabf19b4858a8108aefd35e8 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Mon, 30 Sep 2024 16:55:56 +0530 Subject: [PATCH 3/4] Use --- web/apps/photos/src/services/upload/upload-service.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/web/apps/photos/src/services/upload/upload-service.ts b/web/apps/photos/src/services/upload/upload-service.ts index 55838ac1c1..0e565258fc 100644 --- a/web/apps/photos/src/services/upload/upload-service.ts +++ b/web/apps/photos/src/services/upload/upload-service.ts @@ -1014,6 +1014,11 @@ const extractImageOrVideoMetadata = async ( if (h) publicMagicMetadata.h = ensureInteger(h); } + const caption = parsedMetadataJSON?.description; + if (caption) { + publicMagicMetadata.caption = caption; + } + return { metadata, publicMagicMetadata }; }; From b6baffa97eff2ecd2e4005bd4c816160832e7d08 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Mon, 30 Sep 2024 17:07:06 +0530 Subject: [PATCH 4/4] Add CHANGELOG entry too --- desktop/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/desktop/CHANGELOG.md b/desktop/CHANGELOG.md index 227c909512..ce337c2dbb 100644 --- a/desktop/CHANGELOG.md +++ b/desktop/CHANGELOG.md @@ -2,6 +2,7 @@ ## v1.7.6 (Unreleased) +- Parse description from Google Takeout metadata JSON. - . ## v1.7.5