From 7f9f825589f4a288841fe9fae09060cc9931f7cc Mon Sep 17 00:00:00 2001 From: Thanh Pham Date: Sun, 21 Aug 2022 12:58:47 +0700 Subject: [PATCH] fix(server): correct media info (#508) * fix(server): correct media info * fix(server): video metadata --- .../src/processors/asset-uploaded.processor.ts | 6 +++++- .../src/processors/metadata-extraction.processor.ts | 8 +++++--- .../src/interfaces/metadata-extraction.interface.ts | 10 ++++++++++ 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/server/apps/microservices/src/processors/asset-uploaded.processor.ts b/server/apps/microservices/src/processors/asset-uploaded.processor.ts index b7a75af428..d26507b5ee 100644 --- a/server/apps/microservices/src/processors/asset-uploaded.processor.ts +++ b/server/apps/microservices/src/processors/asset-uploaded.processor.ts @@ -64,7 +64,11 @@ export class AssetUploadedProcessor { // Extract video duration if uploaded from the web & CLI if (asset.type == AssetType.VIDEO) { - await this.metadataExtractionQueue.add(videoMetadataExtractionProcessorName, { asset }, { jobId: randomUUID() }); + await this.metadataExtractionQueue.add( + videoMetadataExtractionProcessorName, + { asset, fileName, fileSize }, + { jobId: randomUUID() } + ); } } } diff --git a/server/apps/microservices/src/processors/metadata-extraction.processor.ts b/server/apps/microservices/src/processors/metadata-extraction.processor.ts index f956e17aa4..be667b9c6c 100644 --- a/server/apps/microservices/src/processors/metadata-extraction.processor.ts +++ b/server/apps/microservices/src/processors/metadata-extraction.processor.ts @@ -190,7 +190,7 @@ export class MetadataExtractionProcessor { @Process({ name: videoMetadataExtractionProcessorName, concurrency: 2 }) async extractVideoMetadata(job: Job) { - const { asset } = job.data; + const { asset, fileName } = job.data; try { const data = await new Promise((resolve, reject) => @@ -222,6 +222,7 @@ export class MetadataExtractionProcessor { const newExif = new ExifEntity(); newExif.assetId = asset.id; newExif.description = ''; + newExif.imageName = path.parse(fileName).name || null; newExif.fileSizeInByte = data.format.size || null; newExif.dateTimeOriginal = createdAt ? new Date(createdAt) : null; newExif.modifyDate = null; @@ -238,13 +239,14 @@ export class MetadataExtractionProcessor { const match = location.match(locationRegex); if (match?.length === 3) { - newExif.latitude = parseFloat(match[0]); - newExif.longitude = parseFloat(match[1]); + newExif.latitude = parseFloat(match[1]); + newExif.longitude = parseFloat(match[2]); } } else if (videoTags && videoTags['com.apple.quicktime.location.ISO6709']) { const location = videoTags['com.apple.quicktime.location.ISO6709'] as string; const locationRegex = /([+-][0-9]+\.[0-9]+)([+-][0-9]+\.[0-9]+)([+-][0-9]+\.[0-9]+)\/$/; const match = location.match(locationRegex); + if (match?.length === 4) { newExif.latitude = parseFloat(match[1]); newExif.longitude = parseFloat(match[2]); diff --git a/server/libs/job/src/interfaces/metadata-extraction.interface.ts b/server/libs/job/src/interfaces/metadata-extraction.interface.ts index de3f2be6d9..1880b3715f 100644 --- a/server/libs/job/src/interfaces/metadata-extraction.interface.ts +++ b/server/libs/job/src/interfaces/metadata-extraction.interface.ts @@ -23,6 +23,16 @@ export interface IVideoLengthExtractionProcessor { * The Asset entity that was saved in the database */ asset: AssetEntity; + + /** + * Original file name + */ + fileName: string; + + /** + * File size in byte + */ + fileSize: number; } export interface IReverseGeocodingProcessor {