From b37fbab2dc40d4d831c2c0de784b03c4057f04b4 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Wed, 24 Jul 2024 11:51:02 +0530 Subject: [PATCH] Parse 1 --- web/packages/new/photos/services/exif.ts | 37 ++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/web/packages/new/photos/services/exif.ts b/web/packages/new/photos/services/exif.ts index 79a658cb7b..c94d46f9d8 100644 --- a/web/packages/new/photos/services/exif.ts +++ b/web/packages/new/photos/services/exif.ts @@ -1,3 +1,4 @@ +import log from "@/base/log"; import ExifReader from "exifreader"; import type { EnteFile } from "../types/file"; @@ -106,6 +107,42 @@ const parseExifDate = ( const [dateString] = dateTag?.value ?? []; if (!dateString) return undefined; + const components = dateString + .trim() + .replace(" ", ":") + .split(":") + .map((s) => parseInt(s, 10)); + const [YYYY, MM, DD, HH, mm, ss] = components; + if ( + !( + YYYY !== undefined && + YYYY >= 0 && + YYYY <= 9999 && + MM !== undefined && + MM >= 1 && + MM <= 12 && + DD !== undefined && + DD >= 1 && + DD <= 31 && + HH !== undefined && + HH >= 0 && + HH <= 23 && + mm !== undefined && + mm >= 0 && + mm <= 59 && + ss !== undefined && + ss >= 0 && + ss <= 59 + ) + ) { + log.warn(`Ignoring malformed Exif date ${dateString}`); + return undefined; + } + + const date = new Date(YYYY, MM - 1, DD, HH, mm, ss); + + + const [offsetString] = offsetTag?.value ?? []; return ""; };