diff --git a/server/apps/microservices/src/processors/metadata-extraction.processor.ts b/server/apps/microservices/src/processors/metadata-extraction.processor.ts index 213089d7ba..c20cfe56e7 100644 --- a/server/apps/microservices/src/processors/metadata-extraction.processor.ts +++ b/server/apps/microservices/src/processors/metadata-extraction.processor.ts @@ -47,7 +47,7 @@ function geocoderLookup(points: { latitude: number; longitude: number }[]) { }); } -const geocodingPrecisionLevels = [ "cities15000", "cities5000", "cities1000", "cities500" ] +const geocodingPrecisionLevels = ['cities15000', 'cities5000', 'cities1000', 'cities500']; export interface AdminCode { name: string; @@ -66,9 +66,9 @@ export interface GeoData { featureCode: string; countryCode: string; cc2?: any; - admin1Code: AdminCode; - admin2Code: AdminCode; - admin3Code: string; + admin1Code?: AdminCode; + admin2Code?: AdminCode; + admin3Code?: any; admin4Code?: any; population: string; elevation: string; @@ -117,20 +117,23 @@ export class MetadataExtractionProcessor { this.logLevel = this.configService.get('LOG_LEVEL') || ImmichLogLevel.SIMPLE; } - private async reverseGeocodeExif(latitude: number, longitude: number): Promise<{country: string, state: string, city: string}> { + private async reverseGeocodeExif( + latitude: number, + longitude: number, + ): Promise<{ country: string; state: string; city: string }> { const geoCodeInfo = await geocoderLookup([{ latitude, longitude }]); const country = getName(geoCodeInfo.countryCode, 'en'); const city = geoCodeInfo.name; let state = ''; - if (geoCodeInfo.admin2Code.name) state += geoCodeInfo.admin2Code.name; - if (geoCodeInfo.admin1Code.name) { - if (geoCodeInfo.admin2Code.name) state += ', '; + if (geoCodeInfo.admin2Code?.name) state += geoCodeInfo.admin2Code.name; + if (geoCodeInfo.admin1Code?.name) { + if (geoCodeInfo.admin2Code?.name) state += ', '; state += geoCodeInfo.admin1Code.name; } - return { country, state, city } + return { country, state, city }; } @Process(exifExtractionProcessorName)