From d67d423ef34b3b4cd4696d02b655632f5fc967a7 Mon Sep 17 00:00:00 2001 From: Mike Phares Date: Sat, 19 Jul 2025 09:46:19 -0700 Subject: [PATCH] Parameter constructors --- Metadata/Models/Stateless/Exif.cs | 378 ++++++++++++++++-------------- 1 file changed, 204 insertions(+), 174 deletions(-) diff --git a/Metadata/Models/Stateless/Exif.cs b/Metadata/Models/Stateless/Exif.cs index b223851..cb9fba4 100644 --- a/Metadata/Models/Stateless/Exif.cs +++ b/Metadata/Models/Stateless/Exif.cs @@ -27,22 +27,24 @@ internal abstract class Exif private static Shared.Models.AviDirectory[] GetAviDirectories(IReadOnlyList directories) { List results = []; + Shared.Models.AviDirectory aviDirectory; IEnumerable aviDirectories = directories.OfType(); - foreach (MetadataExtractor.Formats.Avi.AviDirectory aviDirectory in aviDirectories) + foreach (MetadataExtractor.Formats.Avi.AviDirectory a in aviDirectories) { - if (aviDirectory.Tags.Count == 0) + if (a.Tags.Count == 0) continue; DateTime? dateTimeOriginal; - string? duration = aviDirectory.GetDescription(MetadataExtractor.Formats.Avi.AviDirectory.TagDuration); - string? height = aviDirectory.GetDescription(MetadataExtractor.Formats.Avi.AviDirectory.TagHeight); - string? width = aviDirectory.GetDescription(MetadataExtractor.Formats.Avi.AviDirectory.TagWidth); - if (aviDirectory.TryGetDateTime(MetadataExtractor.Formats.Avi.AviDirectory.TagDateTimeOriginal, out DateTime checkDateTime)) + string? duration = a.GetDescription(MetadataExtractor.Formats.Avi.AviDirectory.TagDuration); + string? height = a.GetDescription(MetadataExtractor.Formats.Avi.AviDirectory.TagHeight); + string? width = a.GetDescription(MetadataExtractor.Formats.Avi.AviDirectory.TagWidth); + if (a.TryGetDateTime(MetadataExtractor.Formats.Avi.AviDirectory.TagDateTimeOriginal, out DateTime checkDateTime)) dateTimeOriginal = checkDateTime; else - dateTimeOriginal = GetDateTime(aviDirectory.GetString(MetadataExtractor.Formats.Avi.AviDirectory.TagDateTimeOriginal)); + dateTimeOriginal = GetDateTime(a.GetString(MetadataExtractor.Formats.Avi.AviDirectory.TagDateTimeOriginal)); if (dateTimeOriginal is null && duration is null && height is null && width is null) continue; - results.Add(new(dateTimeOriginal, duration, height, width)); + aviDirectory = new(DateTimeOriginal: dateTimeOriginal, Duration: duration, Height: height, Width: width); + results.Add(aviDirectory); } return results.ToArray(); } @@ -50,72 +52,73 @@ internal abstract class Exif private static Shared.Models.ExifDirectoryBase[] GetExifBaseDirectories(IReadOnlyList directories) { List results = []; + Shared.Models.ExifDirectoryBase exifDirectoryBase; IEnumerable exifBaseDirectories = directories.OfType(); - foreach (ExifDirectoryBase exifDirectoryBase in exifBaseDirectories) + foreach (ExifDirectoryBase e in exifBaseDirectories) { - if (exifDirectoryBase.Tags.Count == 0) + if (e.Tags.Count == 0) continue; DateTime? dateTime; DateTime checkDateTime; DateTime? dateTimeOriginal; DateTime? dateTimeDigitized; - string? aperture = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagAperture); - string? applicationNotes = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagApplicationNotes); - string? artist = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagArtist); - string? bitsPerSample = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagBitsPerSample); - string? bodySerialNumber = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagBodySerialNumber); - string? cameraOwnerName = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagCameraOwnerName); - string? compressedAverageBitsPerPixel = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagCompressedAverageBitsPerPixel); - string? compression = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagCompression); - string? copyright = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagCopyright); - string? documentName = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagDocumentName); - string? exifVersion = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagExifVersion); - string? exposureTime = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagExposureTime); - string? fileSource = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagFileSource); - string? imageDescription = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagImageDescription); - string? imageHeight = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagImageHeight); - int? imageHeightValue = imageHeight is null ? null : exifDirectoryBase.GetInt32(ExifDirectoryBase.TagImageHeight); - string? imageNumber = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagImageNumber); - string? imageUniqueId = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagImageUniqueId); - string? imageWidth = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagImageWidth); - int? imageWidthValue = imageWidth is null ? null : exifDirectoryBase.GetInt32(ExifDirectoryBase.TagImageWidth); - string? isoSpeed = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagIsoSpeed); - string? lensMake = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagLensMake); - string? lensModel = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagLensModel); - string? lensSerialNumber = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagLensSerialNumber); - string? make = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagMake); - string? makerNote = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagMakernote); - string? model = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagModel); - string? orientation = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagOrientation); - int? orientationValue = orientation is null ? null : exifDirectoryBase.GetInt32(ExifDirectoryBase.TagOrientation); - string? rating = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagRating); - string? ratingPercent = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagRatingPercent); - string? securityClassification = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagSecurityClassification); - string? shutterSpeed = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagShutterSpeed); - string? software = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagSoftware); - string? timeZone = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagTimeZone); - string? timeZoneDigitized = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagTimeZoneDigitized); - string? timeZoneOriginal = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagTimeZoneOriginal); - string? userComment = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagUserComment); - string? winAuthor = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagWinAuthor); - string? winComment = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagWinComment); - string? winKeywords = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagWinKeywords); - string? winSubject = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagWinSubject); - string? winTitle = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagWinTitle); - string? xResolution = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagXResolution); - string? yResolution = exifDirectoryBase.GetDescription(ExifDirectoryBase.TagYResolution); - if (exifDirectoryBase.TryGetDateTime(ExifDirectoryBase.TagDateTime, out checkDateTime)) + string? aperture = e.GetDescription(ExifDirectoryBase.TagAperture); + string? applicationNotes = e.GetDescription(ExifDirectoryBase.TagApplicationNotes); + string? artist = e.GetDescription(ExifDirectoryBase.TagArtist); + string? bitsPerSample = e.GetDescription(ExifDirectoryBase.TagBitsPerSample); + string? bodySerialNumber = e.GetDescription(ExifDirectoryBase.TagBodySerialNumber); + string? cameraOwnerName = e.GetDescription(ExifDirectoryBase.TagCameraOwnerName); + string? compressedAverageBitsPerPixel = e.GetDescription(ExifDirectoryBase.TagCompressedAverageBitsPerPixel); + string? compression = e.GetDescription(ExifDirectoryBase.TagCompression); + string? copyright = e.GetDescription(ExifDirectoryBase.TagCopyright); + string? documentName = e.GetDescription(ExifDirectoryBase.TagDocumentName); + string? exifVersion = e.GetDescription(ExifDirectoryBase.TagExifVersion); + string? exposureTime = e.GetDescription(ExifDirectoryBase.TagExposureTime); + string? fileSource = e.GetDescription(ExifDirectoryBase.TagFileSource); + string? imageDescription = e.GetDescription(ExifDirectoryBase.TagImageDescription); + string? imageHeight = e.GetDescription(ExifDirectoryBase.TagImageHeight); + int? imageHeightValue = imageHeight is null ? null : e.GetInt32(ExifDirectoryBase.TagImageHeight); + string? imageNumber = e.GetDescription(ExifDirectoryBase.TagImageNumber); + string? imageUniqueId = e.GetDescription(ExifDirectoryBase.TagImageUniqueId); + string? imageWidth = e.GetDescription(ExifDirectoryBase.TagImageWidth); + int? imageWidthValue = imageWidth is null ? null : e.GetInt32(ExifDirectoryBase.TagImageWidth); + string? isoSpeed = e.GetDescription(ExifDirectoryBase.TagIsoSpeed); + string? lensMake = e.GetDescription(ExifDirectoryBase.TagLensMake); + string? lensModel = e.GetDescription(ExifDirectoryBase.TagLensModel); + string? lensSerialNumber = e.GetDescription(ExifDirectoryBase.TagLensSerialNumber); + string? make = e.GetDescription(ExifDirectoryBase.TagMake); + string? makerNote = e.GetDescription(ExifDirectoryBase.TagMakernote); + string? model = e.GetDescription(ExifDirectoryBase.TagModel); + string? orientation = e.GetDescription(ExifDirectoryBase.TagOrientation); + int? orientationValue = orientation is null ? null : e.GetInt32(ExifDirectoryBase.TagOrientation); + string? rating = e.GetDescription(ExifDirectoryBase.TagRating); + string? ratingPercent = e.GetDescription(ExifDirectoryBase.TagRatingPercent); + string? securityClassification = e.GetDescription(ExifDirectoryBase.TagSecurityClassification); + string? shutterSpeed = e.GetDescription(ExifDirectoryBase.TagShutterSpeed); + string? software = e.GetDescription(ExifDirectoryBase.TagSoftware); + string? timeZone = e.GetDescription(ExifDirectoryBase.TagTimeZone); + string? timeZoneDigitized = e.GetDescription(ExifDirectoryBase.TagTimeZoneDigitized); + string? timeZoneOriginal = e.GetDescription(ExifDirectoryBase.TagTimeZoneOriginal); + string? userComment = e.GetDescription(ExifDirectoryBase.TagUserComment); + string? winAuthor = e.GetDescription(ExifDirectoryBase.TagWinAuthor); + string? winComment = e.GetDescription(ExifDirectoryBase.TagWinComment); + string? winKeywords = e.GetDescription(ExifDirectoryBase.TagWinKeywords); + string? winSubject = e.GetDescription(ExifDirectoryBase.TagWinSubject); + string? winTitle = e.GetDescription(ExifDirectoryBase.TagWinTitle); + string? xResolution = e.GetDescription(ExifDirectoryBase.TagXResolution); + string? yResolution = e.GetDescription(ExifDirectoryBase.TagYResolution); + if (e.TryGetDateTime(ExifDirectoryBase.TagDateTime, out checkDateTime)) dateTime = checkDateTime; else - dateTime = GetDateTime(exifDirectoryBase.GetString(ExifDirectoryBase.TagDateTime)); - if (exifDirectoryBase.TryGetDateTime(ExifDirectoryBase.TagDateTimeOriginal, out checkDateTime)) + dateTime = GetDateTime(e.GetString(ExifDirectoryBase.TagDateTime)); + if (e.TryGetDateTime(ExifDirectoryBase.TagDateTimeOriginal, out checkDateTime)) dateTimeOriginal = checkDateTime; else - dateTimeOriginal = GetDateTime(exifDirectoryBase.GetString(ExifDirectoryBase.TagDateTimeOriginal)); - if (exifDirectoryBase.TryGetDateTime(ExifDirectoryBase.TagDateTimeDigitized, out checkDateTime)) + dateTimeOriginal = GetDateTime(e.GetString(ExifDirectoryBase.TagDateTimeOriginal)); + if (e.TryGetDateTime(ExifDirectoryBase.TagDateTimeDigitized, out checkDateTime)) dateTimeDigitized = checkDateTime; else - dateTimeDigitized = GetDateTime(exifDirectoryBase.GetString(ExifDirectoryBase.TagDateTimeDigitized)); + dateTimeDigitized = GetDateTime(e.GetString(ExifDirectoryBase.TagDateTimeDigitized)); if (userComment is not null && userComment.Length > 255) userComment = "..."; if (aperture is null @@ -165,54 +168,55 @@ internal abstract class Exif && xResolution is not null && yResolution is null) continue; - results.Add(new(Aperture: aperture, - ApplicationNotes: applicationNotes, - Artist: artist, - BitsPerSample: bitsPerSample, - BodySerialNumber: bodySerialNumber, - CameraOwnerName: cameraOwnerName, - CompressedAverageBitsPerPixel: compressedAverageBitsPerPixel, - Compression: compression, - Copyright: copyright, - DateTime: dateTime, - DateTimeDigitized: dateTimeDigitized, - DateTimeOriginal: dateTimeOriginal, - DocumentName: documentName, - ExifVersion: exifVersion, - ExposureTime: exposureTime, - FileSource: fileSource, - ImageDescription: imageDescription, - ImageHeight: imageHeight, - ImageHeightValue: imageHeightValue, - ImageNumber: imageNumber, - ImageUniqueId: imageUniqueId, - ImageWidth: imageWidth, - ImageWidthValue: imageWidthValue, - IsoSpeed: isoSpeed, - LensMake: lensMake, - LensModel: lensModel, - LensSerialNumber: lensSerialNumber, - Make: make, - MakerNote: makerNote, - Model: model, - Orientation: orientation, - OrientationValue: orientationValue, - Rating: rating, - RatingPercent: ratingPercent, - SecurityClassification: securityClassification, - ShutterSpeed: shutterSpeed, - Software: software, - TimeZone: timeZone, - TimeZoneDigitized: timeZoneDigitized, - TimeZoneOriginal: timeZoneOriginal, - UserComment: userComment, - WinAuthor: winAuthor, - WinComment: winComment, - WinKeywords: winKeywords, - WinSubject: winSubject, - WinTitle: winTitle, - XResolution: xResolution, - YResolution: yResolution)); + exifDirectoryBase = new(Aperture: aperture, + ApplicationNotes: applicationNotes, + Artist: artist, + BitsPerSample: bitsPerSample, + BodySerialNumber: bodySerialNumber, + CameraOwnerName: cameraOwnerName, + CompressedAverageBitsPerPixel: compressedAverageBitsPerPixel, + Compression: compression, + Copyright: copyright, + DateTime: dateTime, + DateTimeDigitized: dateTimeDigitized, + DateTimeOriginal: dateTimeOriginal, + DocumentName: documentName, + ExifVersion: exifVersion, + ExposureTime: exposureTime, + FileSource: fileSource, + ImageDescription: imageDescription, + ImageHeight: imageHeight, + ImageHeightValue: imageHeightValue, + ImageNumber: imageNumber, + ImageUniqueId: imageUniqueId, + ImageWidth: imageWidth, + ImageWidthValue: imageWidthValue, + IsoSpeed: isoSpeed, + LensMake: lensMake, + LensModel: lensModel, + LensSerialNumber: lensSerialNumber, + Make: make, + MakerNote: makerNote, + Model: model, + Orientation: orientation, + OrientationValue: orientationValue, + Rating: rating, + RatingPercent: ratingPercent, + SecurityClassification: securityClassification, + ShutterSpeed: shutterSpeed, + Software: software, + TimeZone: timeZone, + TimeZoneDigitized: timeZoneDigitized, + TimeZoneOriginal: timeZoneOriginal, + UserComment: userComment, + WinAuthor: winAuthor, + WinComment: winComment, + WinKeywords: winKeywords, + WinSubject: winSubject, + WinTitle: winTitle, + XResolution: xResolution, + YResolution: yResolution); + results.Add(exifDirectoryBase); } return results.ToArray(); } @@ -220,23 +224,25 @@ internal abstract class Exif private static Shared.Models.FileMetadataDirectory[] GetFileMetadataDirectories(string file, IReadOnlyList directories) { List results = []; + Shared.Models.FileMetadataDirectory fileMetadataDirectory; IEnumerable fileMetadataDirectories = directories.OfType(); - foreach (MetadataExtractor.Formats.FileSystem.FileMetadataDirectory fileMetadataDirectory in fileMetadataDirectories) + foreach (MetadataExtractor.Formats.FileSystem.FileMetadataDirectory f in fileMetadataDirectories) { - if (fileMetadataDirectory.Tags.Count == 0) + if (f.Tags.Count == 0) continue; DateTime? fileModifiedDate; - string? fileName = fileMetadataDirectory.GetDescription(MetadataExtractor.Formats.FileSystem.FileMetadataDirectory.TagFileName); - string? fileSize = fileMetadataDirectory.GetDescription(MetadataExtractor.Formats.FileSystem.FileMetadataDirectory.TagFileSize); - if (fileMetadataDirectory.TryGetDateTime(MetadataExtractor.Formats.FileSystem.FileMetadataDirectory.TagFileModifiedDate, out DateTime checkDateTime)) + string? fileName = f.GetDescription(MetadataExtractor.Formats.FileSystem.FileMetadataDirectory.TagFileName); + string? fileSize = f.GetDescription(MetadataExtractor.Formats.FileSystem.FileMetadataDirectory.TagFileSize); + if (f.TryGetDateTime(MetadataExtractor.Formats.FileSystem.FileMetadataDirectory.TagFileModifiedDate, out DateTime checkDateTime)) fileModifiedDate = checkDateTime; else - fileModifiedDate = GetDateTime(fileMetadataDirectory.GetString(MetadataExtractor.Formats.FileSystem.FileMetadataDirectory.TagFileModifiedDate)); + fileModifiedDate = GetDateTime(f.GetString(MetadataExtractor.Formats.FileSystem.FileMetadataDirectory.TagFileModifiedDate)); if (fileName is null || !file.EndsWith(fileName)) throw new NotSupportedException($"!{file}.EndsWith({fileName})"); if (fileModifiedDate is null && fileName is null && fileSize is null) continue; - results.Add(new(fileModifiedDate, fileName, fileSize)); + fileMetadataDirectory = new(FileModifiedDate: fileModifiedDate, FileName: fileName, FileSize: fileSize); + results.Add(fileMetadataDirectory); } return results.ToArray(); } @@ -244,16 +250,18 @@ internal abstract class Exif private static Shared.Models.GifHeaderDirectory[] GetGifHeaderDirectories(IReadOnlyList directories) { List results = []; + Shared.Models.GifHeaderDirectory gifHeaderDirectory; IEnumerable gifHeaderDirectories = directories.OfType(); - foreach (MetadataExtractor.Formats.Gif.GifHeaderDirectory gifHeaderDirectory in gifHeaderDirectories) + foreach (MetadataExtractor.Formats.Gif.GifHeaderDirectory g in gifHeaderDirectories) { - if (gifHeaderDirectory.Tags.Count == 0) + if (g.Tags.Count == 0) continue; - string? imageHeight = gifHeaderDirectory.GetDescription(MetadataExtractor.Formats.Gif.GifHeaderDirectory.TagImageHeight); - string? imageWidth = gifHeaderDirectory.GetDescription(MetadataExtractor.Formats.Gif.GifHeaderDirectory.TagImageWidth); + string? imageHeight = g.GetDescription(MetadataExtractor.Formats.Gif.GifHeaderDirectory.TagImageHeight); + string? imageWidth = g.GetDescription(MetadataExtractor.Formats.Gif.GifHeaderDirectory.TagImageWidth); if (imageHeight is null && imageWidth is null) continue; - results.Add(new(imageHeight, imageWidth)); + gifHeaderDirectory = new(ImageHeight: imageHeight, ImageWidth: imageWidth); + results.Add(gifHeaderDirectory); } return results.ToArray(); } @@ -261,29 +269,31 @@ internal abstract class Exif private static Shared.Models.GpsDirectory[] GetGpsDirectories(IReadOnlyList directories) { List results = []; + Shared.Models.GpsDirectory gpsDirectory; IEnumerable gpsDirectories = directories.OfType(); - foreach (GpsDirectory gpsDirectory in gpsDirectories) + foreach (GpsDirectory g in gpsDirectories) { - if (gpsDirectory.Tags.Count == 0) + if (g.Tags.Count == 0) continue; DateTime? timeStamp; - string? altitude = gpsDirectory.GetDescription(GpsDirectory.TagAltitude); - string? latitude = gpsDirectory.GetDescription(GpsDirectory.TagLatitude); - string? latitudeRef = gpsDirectory.GetDescription(GpsDirectory.TagLatitudeRef); - string? longitude = gpsDirectory.GetDescription(GpsDirectory.TagLongitude); - string? longitudeRef = gpsDirectory.GetDescription(GpsDirectory.TagLongitudeRef); - if (gpsDirectory.TryGetDateTime(GpsDirectory.TagTimeStamp, out DateTime checkDateTime)) + string? altitude = g.GetDescription(GpsDirectory.TagAltitude); + string? latitude = g.GetDescription(GpsDirectory.TagLatitude); + string? latitudeRef = g.GetDescription(GpsDirectory.TagLatitudeRef); + string? longitude = g.GetDescription(GpsDirectory.TagLongitude); + string? longitudeRef = g.GetDescription(GpsDirectory.TagLongitudeRef); + if (g.TryGetDateTime(GpsDirectory.TagTimeStamp, out DateTime checkDateTime)) timeStamp = checkDateTime; else - timeStamp = GetDateTime(gpsDirectory.GetString(GpsDirectory.TagTimeStamp)); + timeStamp = GetDateTime(g.GetString(GpsDirectory.TagTimeStamp)); if (altitude is null && latitude is null && latitudeRef is null && longitude is null && longitudeRef is null && timeStamp is null) continue; - results.Add(new(altitude, - latitude, - latitudeRef, - longitude, - longitudeRef, - timeStamp)); + gpsDirectory = new(Altitude: altitude, + Latitude: latitude, + LatitudeRef: latitudeRef, + Longitude: longitude, + LongitudeRef: longitudeRef, + TimeStamp: timeStamp); + results.Add(gpsDirectory); } return results.ToArray(); } @@ -291,16 +301,18 @@ internal abstract class Exif private static Shared.Models.JpegDirectory[] GetJpegDirectories(IReadOnlyList directories) { List results = []; + Shared.Models.JpegDirectory jpegDirectory; IEnumerable jpegDirectories = directories.OfType(); - foreach (MetadataExtractor.Formats.Jpeg.JpegDirectory jpegDirectory in jpegDirectories) + foreach (MetadataExtractor.Formats.Jpeg.JpegDirectory j in jpegDirectories) { - if (jpegDirectory.Tags.Count == 0) + if (j.Tags.Count == 0) continue; - string? imageHeight = jpegDirectory.GetDescription(MetadataExtractor.Formats.Jpeg.JpegDirectory.TagImageHeight); - string? imageWidth = jpegDirectory.GetDescription(MetadataExtractor.Formats.Jpeg.JpegDirectory.TagImageWidth); + string? imageHeight = j.GetDescription(MetadataExtractor.Formats.Jpeg.JpegDirectory.TagImageHeight); + string? imageWidth = j.GetDescription(MetadataExtractor.Formats.Jpeg.JpegDirectory.TagImageWidth); if (imageHeight is null && imageWidth is null) continue; - results.Add(new(imageHeight, imageWidth)); + jpegDirectory = new(ImageHeight: imageHeight, ImageWidth: imageWidth); + results.Add(jpegDirectory); } return results.ToArray(); } @@ -308,6 +320,7 @@ internal abstract class Exif private static Shared.Models.MakernoteDirectory[] GetMakernoteDirectories(IReadOnlyList directories) { List results = []; + Shared.Models.MakernoteDirectory makernoteDirectory; IEnumerable appleMakernoteDirectories = directories.OfType(); foreach (AppleMakernoteDirectory appleMakernoteDirectory in appleMakernoteDirectories) { @@ -318,7 +331,8 @@ internal abstract class Exif string? qualityAndFileFormat = null; if (cameraSerialNumber is null && firmwareVersion is null && qualityAndFileFormat is null) continue; - results.Add(new(cameraSerialNumber, firmwareVersion, qualityAndFileFormat)); + makernoteDirectory = new(cameraSerialNumber, firmwareVersion, qualityAndFileFormat); + results.Add(makernoteDirectory); } IEnumerable canonMakernoteDirectories = directories.OfType(); foreach (CanonMakernoteDirectory canonMakernoteDirectory in canonMakernoteDirectories) @@ -330,7 +344,8 @@ internal abstract class Exif string? qualityAndFileFormat = canonMakernoteDirectory.GetDescription(CanonMakernoteDirectory.CameraSettings.TagQuality); if (cameraSerialNumber is null && firmwareVersion is null && qualityAndFileFormat is null) continue; - results.Add(new(cameraSerialNumber, firmwareVersion, qualityAndFileFormat)); + makernoteDirectory = new(cameraSerialNumber, firmwareVersion, qualityAndFileFormat); + results.Add(makernoteDirectory); } IEnumerable nikonType2MakernoteDirectories = directories.OfType(); foreach (NikonType2MakernoteDirectory nikonType2MakernoteDirectory in nikonType2MakernoteDirectories) @@ -342,7 +357,8 @@ internal abstract class Exif string? qualityAndFileFormat = nikonType2MakernoteDirectory.GetDescription(NikonType2MakernoteDirectory.TagQualityAndFileFormat); if (cameraSerialNumber is null && firmwareVersion is null && qualityAndFileFormat is null) continue; - results.Add(new(cameraSerialNumber, firmwareVersion, qualityAndFileFormat)); + makernoteDirectory = new(cameraSerialNumber, firmwareVersion, qualityAndFileFormat); + results.Add(makernoteDirectory); } IEnumerable olympusMakernoteDirectories = directories.OfType(); foreach (OlympusMakernoteDirectory olympusMakernoteDirectory in olympusMakernoteDirectories) @@ -354,7 +370,8 @@ internal abstract class Exif string? qualityAndFileFormat = olympusMakernoteDirectory.GetDescription(OlympusMakernoteDirectory.TagJpegQuality); if (cameraSerialNumber is null && firmwareVersion is null && qualityAndFileFormat is null) continue; - results.Add(new(cameraSerialNumber, firmwareVersion, qualityAndFileFormat)); + makernoteDirectory = new(cameraSerialNumber, firmwareVersion, qualityAndFileFormat); + results.Add(makernoteDirectory); } IEnumerable panasonicMakernoteDirectories = directories.OfType(); foreach (PanasonicMakernoteDirectory panasonicMakernoteDirectory in panasonicMakernoteDirectories) @@ -366,7 +383,8 @@ internal abstract class Exif string? qualityAndFileFormat = panasonicMakernoteDirectory.GetDescription(PanasonicMakernoteDirectory.TagQualityMode); if (cameraSerialNumber is null && firmwareVersion is null && qualityAndFileFormat is null) continue; - results.Add(new(cameraSerialNumber, firmwareVersion, qualityAndFileFormat)); + makernoteDirectory = new(cameraSerialNumber, firmwareVersion, qualityAndFileFormat); + results.Add(makernoteDirectory); } IEnumerable samsungType2MakernoteDirectories = directories.OfType(); foreach (SamsungType2MakernoteDirectory samsungType2MakernoteDirectory in samsungType2MakernoteDirectories) @@ -378,7 +396,8 @@ internal abstract class Exif string? qualityAndFileFormat = null; if (cameraSerialNumber is null && firmwareVersion is null && qualityAndFileFormat is null) continue; - results.Add(new(cameraSerialNumber, firmwareVersion, qualityAndFileFormat)); + makernoteDirectory = new(cameraSerialNumber, firmwareVersion, qualityAndFileFormat); + results.Add(makernoteDirectory); } IEnumerable sonyType6MakernoteDirectories = directories.OfType(); foreach (SonyType6MakernoteDirectory sonyType6MakernoteDirectory in sonyType6MakernoteDirectories) @@ -390,7 +409,8 @@ internal abstract class Exif string? qualityAndFileFormat = null; if (cameraSerialNumber is null && firmwareVersion is null && qualityAndFileFormat is null) continue; - results.Add(new(cameraSerialNumber, firmwareVersion, qualityAndFileFormat)); + makernoteDirectory = new(CameraSerialNumber: cameraSerialNumber, FirmwareVersion: firmwareVersion, QualityAndFileFormat: qualityAndFileFormat); + results.Add(makernoteDirectory); } return results.ToArray(); } @@ -398,16 +418,18 @@ internal abstract class Exif private static Shared.Models.PhotoshopDirectory[] GetPhotoshopDirectories(IReadOnlyList directories) { List results = []; + Shared.Models.PhotoshopDirectory photoshopDirectory; IEnumerable photoshopDirectories = directories.OfType(); - foreach (MetadataExtractor.Formats.Photoshop.PhotoshopDirectory photoshopDirectory in photoshopDirectories) + foreach (MetadataExtractor.Formats.Photoshop.PhotoshopDirectory p in photoshopDirectories) { - if (photoshopDirectory.Tags.Count == 0) + if (p.Tags.Count == 0) continue; - string? jpegQuality = photoshopDirectory.GetDescription(MetadataExtractor.Formats.Photoshop.PhotoshopDirectory.TagJpegQuality); - string? url = photoshopDirectory.GetDescription(MetadataExtractor.Formats.Photoshop.PhotoshopDirectory.TagUrl); + string? jpegQuality = p.GetDescription(MetadataExtractor.Formats.Photoshop.PhotoshopDirectory.TagJpegQuality); + string? url = p.GetDescription(MetadataExtractor.Formats.Photoshop.PhotoshopDirectory.TagUrl); if (jpegQuality is null && url is null) continue; - results.Add(new(jpegQuality, url)); + photoshopDirectory = new(JpegQuality: jpegQuality, Url: url); + results.Add(photoshopDirectory); } return results.ToArray(); } @@ -415,17 +437,19 @@ internal abstract class Exif private static Shared.Models.PngDirectory[] GetPngDirectories(IReadOnlyList directories) { List results = []; + Shared.Models.PngDirectory pngDirectory; IEnumerable pngDirectories = directories.OfType(); - foreach (MetadataExtractor.Formats.Png.PngDirectory pngDirectory in pngDirectories) + foreach (MetadataExtractor.Formats.Png.PngDirectory p in pngDirectories) { - if (pngDirectory.Tags.Count == 0) + if (p.Tags.Count == 0) continue; - string? imageHeight = pngDirectory.GetDescription(MetadataExtractor.Formats.Png.PngDirectory.TagImageHeight); - string? imageWidth = pngDirectory.GetDescription(MetadataExtractor.Formats.Png.PngDirectory.TagImageWidth); - string? textualData = pngDirectory.GetDescription(MetadataExtractor.Formats.Png.PngDirectory.TagTextualData); + string? imageHeight = p.GetDescription(MetadataExtractor.Formats.Png.PngDirectory.TagImageHeight); + string? imageWidth = p.GetDescription(MetadataExtractor.Formats.Png.PngDirectory.TagImageWidth); + string? textualData = p.GetDescription(MetadataExtractor.Formats.Png.PngDirectory.TagTextualData); if (imageHeight is null && imageWidth is null && textualData is null) continue; - results.Add(new(imageHeight, imageWidth, textualData)); + pngDirectory = new(ImageHeight: imageHeight, ImageWidth: imageWidth, TextualData: textualData); + results.Add(pngDirectory); } return results.ToArray(); } @@ -433,19 +457,21 @@ internal abstract class Exif private static Shared.Models.QuickTimeMovieHeaderDirectory[] GetQuickTimeMovieHeaderDirectoryDirectories(IReadOnlyList directories) { List results = []; + Shared.Models.QuickTimeMovieHeaderDirectory quickTimeMovieHeaderDirectory; IEnumerable quickTimeMovieHeaderDirectories = directories.OfType(); - foreach (MetadataExtractor.Formats.QuickTime.QuickTimeMovieHeaderDirectory quickTimeMovieHeaderDirectory in quickTimeMovieHeaderDirectories) + foreach (MetadataExtractor.Formats.QuickTime.QuickTimeMovieHeaderDirectory q in quickTimeMovieHeaderDirectories) { - if (quickTimeMovieHeaderDirectory.Tags.Count == 0) + if (q.Tags.Count == 0) continue; DateTime? created; - if (quickTimeMovieHeaderDirectory.TryGetDateTime(MetadataExtractor.Formats.QuickTime.QuickTimeMovieHeaderDirectory.TagCreated, out DateTime checkDateTime)) + if (q.TryGetDateTime(MetadataExtractor.Formats.QuickTime.QuickTimeMovieHeaderDirectory.TagCreated, out DateTime checkDateTime)) created = checkDateTime; else - created = GetDateTime(quickTimeMovieHeaderDirectory.GetString(MetadataExtractor.Formats.QuickTime.QuickTimeMovieHeaderDirectory.TagCreated)); + created = GetDateTime(q.GetString(MetadataExtractor.Formats.QuickTime.QuickTimeMovieHeaderDirectory.TagCreated)); if (created is null) continue; - results.Add(new(created)); + quickTimeMovieHeaderDirectory = new(Created: created); + results.Add(quickTimeMovieHeaderDirectory); } return results.ToArray(); } @@ -453,19 +479,21 @@ internal abstract class Exif private static Shared.Models.QuickTimeTrackHeaderDirectory[] GetQuickTimeTrackHeaderDirectoryDirectories(IReadOnlyList directories) { List results = []; + Shared.Models.QuickTimeTrackHeaderDirectory quickTimeTrackHeaderDirectory; IEnumerable quickTimeTrackHeaderDirectories = directories.OfType(); - foreach (MetadataExtractor.Formats.QuickTime.QuickTimeTrackHeaderDirectory quickTimeTrackHeaderDirectory in quickTimeTrackHeaderDirectories) + foreach (MetadataExtractor.Formats.QuickTime.QuickTimeTrackHeaderDirectory q in quickTimeTrackHeaderDirectories) { - if (quickTimeTrackHeaderDirectory.Tags.Count == 0) + if (q.Tags.Count == 0) continue; DateTime? created; - if (quickTimeTrackHeaderDirectory.TryGetDateTime(MetadataExtractor.Formats.QuickTime.QuickTimeTrackHeaderDirectory.TagCreated, out DateTime checkDateTime)) + if (q.TryGetDateTime(MetadataExtractor.Formats.QuickTime.QuickTimeTrackHeaderDirectory.TagCreated, out DateTime checkDateTime)) created = checkDateTime; else - created = GetDateTime(quickTimeTrackHeaderDirectory.GetString(MetadataExtractor.Formats.QuickTime.QuickTimeTrackHeaderDirectory.TagCreated)); + created = GetDateTime(q.GetString(MetadataExtractor.Formats.QuickTime.QuickTimeTrackHeaderDirectory.TagCreated)); if (created is null) continue; - results.Add(new(created)); + quickTimeTrackHeaderDirectory = new(Created: created); + results.Add(quickTimeTrackHeaderDirectory); } return results.ToArray(); } @@ -473,16 +501,18 @@ internal abstract class Exif private static Shared.Models.WebPDirectory[] GetWebPDirectories(IReadOnlyList directories) { List results = []; + Shared.Models.WebPDirectory webPDirectory; IEnumerable webPDirectories = directories.OfType(); - foreach (MetadataExtractor.Formats.WebP.WebPDirectory webPDirectory in webPDirectories) + foreach (MetadataExtractor.Formats.WebP.WebPDirectory w in webPDirectories) { - if (webPDirectory.Tags.Count == 0) + if (w.Tags.Count == 0) continue; - string? imageHeight = webPDirectory.GetDescription(MetadataExtractor.Formats.WebP.WebPDirectory.TagImageHeight); - string? imageWidth = webPDirectory.GetDescription(MetadataExtractor.Formats.WebP.WebPDirectory.TagImageWidth); + string? imageHeight = w.GetDescription(MetadataExtractor.Formats.WebP.WebPDirectory.TagImageHeight); + string? imageWidth = w.GetDescription(MetadataExtractor.Formats.WebP.WebPDirectory.TagImageWidth); if (imageHeight is null && imageWidth is null) continue; - results.Add(new(imageHeight, imageWidth)); + webPDirectory = new(ImageHeight: imageHeight, ImageWidth: imageWidth); + results.Add(webPDirectory); } return results.ToArray(); }