diff --git a/Metadata/Models/A_Metadata.cs b/Metadata/Models/A_Metadata.cs deleted file mode 100644 index d0e36a0..0000000 --- a/Metadata/Models/A_Metadata.cs +++ /dev/null @@ -1,91 +0,0 @@ -using MetadataExtractor; -using System.Collections.ObjectModel; -using System.Text.Json; -using View_by_Distance.Shared.Models; -using View_by_Distance.Shared.Models.Methods; -using View_by_Distance.Shared.Models.Properties; - -namespace View_by_Distance.Metadata.Models; - -public class A_Metadata : IMetadata -{ - - private readonly bool _PropertiesChangedForMetadata; - private readonly IPropertyConfiguration _PropertyConfiguration; - private readonly bool _ForceMetadataLastWriteTimeToCreationTime; - private readonly IReadOnlyDictionary _FileGroups; - - public A_Metadata(IPropertyConfiguration propertyConfiguration, bool forceMetadataLastWriteTimeToCreationTime, bool propertiesChangedForMetadata) - { - _PropertyConfiguration = propertyConfiguration; - _PropertiesChangedForMetadata = propertiesChangedForMetadata; - _ForceMetadataLastWriteTimeToCreationTime = forceMetadataLastWriteTimeToCreationTime; - string bResultsFullGroupDirectory = Property.Models.Stateless.IResult.GetResultsFullGroupDirectory(_PropertyConfiguration, - nameof(A_Metadata), - string.Empty, - includeResizeGroup: false, - includeModel: false, - includePredictorModel: false); - _FileGroups = Shared.Models.Stateless.Methods.IPath.GetKeyValuePairs(propertyConfiguration, bResultsFullGroupDirectory, [propertyConfiguration.ResultSingleton]); - } - - public ReadOnlyDictionary GetMetadataCollection(string file) - { - Dictionary? results; - string fileName = Path.GetFileName(file); - string fileExtensionLowered = Path.GetExtension(file).ToLower(); - string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(file); - (_, int directoryIndex) = Shared.Models.Stateless.Methods.IPath.GetDirectoryNameAndIndex(_PropertyConfiguration.ResultAllInOneSubdirectoryLength, fileName); - FileInfo fileInfo = new(Path.Combine(_FileGroups[_PropertyConfiguration.ResultSingleton][directoryIndex], $"{fileNameWithoutExtension}{fileExtensionLowered}.json")); - if (_ForceMetadataLastWriteTimeToCreationTime && !fileInfo.Exists && File.Exists(Path.ChangeExtension(fileInfo.FullName, ".delete"))) - { - File.Move(Path.ChangeExtension(fileInfo.FullName, ".delete"), fileInfo.FullName); - fileInfo.Refresh(); - } - if (_ForceMetadataLastWriteTimeToCreationTime && fileInfo.Exists && fileInfo.LastWriteTime != fileInfo.CreationTime) - { - File.SetLastWriteTime(fileInfo.FullName, fileInfo.CreationTime); - fileInfo.Refresh(); - } - if (_PropertiesChangedForMetadata) - results = null; - else if (!fileInfo.Exists) - results = null; - else if (!fileInfo.FullName.EndsWith(".json") && !fileInfo.FullName.EndsWith(".old")) - throw new ArgumentException("must be a *.json file"); - else - { - string json = File.ReadAllText(fileInfo.FullName); - try - { - results = Stateless.Methods.Metadata.Deserialize(json); - if (results is null) - throw new Exception(); - } - catch (Exception) - { - results = null; - } - } - if (results is null || results.Count == 0) - { - IReadOnlyList directories = ImageMetadataReader.ReadMetadata(file); - results = Stateless.Methods.Metadata.Covert(directories); - string json = JsonSerializer.Serialize(results, DictionaryStringMetadataExtractorDirectorySourceGenerationContext.Default.DictionaryStringMetadataExtractorDirectory); - if (Shared.Models.Stateless.Methods.IPath.WriteAllText(fileInfo.FullName, json, updateDateWhenMatches: false, compareBeforeWrite: true, updateToWhenMatches: null) && _ForceMetadataLastWriteTimeToCreationTime) - { - File.SetLastWriteTime(fileInfo.FullName, fileInfo.CreationTime); - fileInfo.Refresh(); - } - } - return new(results); - } - - (DateTime?, DateTime?[]) IMetadata.GetDateTimes(FileHolder fileHolder, IReadOnlyList directories) - { - List results = []; - DateTime? result = null; - return new(result, results.ToArray()); - } - -} \ No newline at end of file diff --git a/Metadata/Models/Avi.cs b/Metadata/Models/Avi.cs deleted file mode 100644 index ca2fdab..0000000 --- a/Metadata/Models/Avi.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace View_by_Distance.Metadata.Models; - -public record Avi(string? FramesPerSecond1, - string? SamplesPerSecond2, - string? Duration3, - string? VideoCodec4, - string? AudioCodec5, - string? Width6, - string? Height7, - string? Streams8, - string? DateTimeOriginal320) -{ - - public override string ToString() - { - string result = JsonSerializer.Serialize(this, AviSourceGenerationContext.Default.Avi); - return result; - } - -} - -[JsonSourceGenerationOptions(WriteIndented = true)] -[JsonSerializable(typeof(Avi))] -public partial class AviSourceGenerationContext : JsonSerializerContext -{ -} \ No newline at end of file diff --git a/Metadata/Models/B_Metadata.cs b/Metadata/Models/B_Metadata.cs index 15dae25..668bf23 100644 --- a/Metadata/Models/B_Metadata.cs +++ b/Metadata/Models/B_Metadata.cs @@ -1,7 +1,4 @@ using MetadataExtractor; -using MetadataExtractor.Formats.Avi; -using MetadataExtractor.Formats.Exif; -using MetadataExtractor.Formats.QuickTime; using System.Collections.ObjectModel; using System.Text.Json; using View_by_Distance.Shared.Models; @@ -90,7 +87,7 @@ public class B_Metadata : IMetadata if (results is null || results.Count == 0) { IReadOnlyList directories = ImageMetadataReader.ReadMetadata(mappingFromItem.ImageFileHolder.FullName); - results = Stateless.Methods.Metadata.Covert(directories); + results = Stateless.Methods.Metadata.GetKeyValuePairs(directories); json = JsonSerializer.Serialize(results, DictionaryStringMetadataExtractorDirectorySourceGenerationContext.Default.DictionaryStringMetadataExtractorDirectory); bool updateDateWhenMatches = dateTimes.Count != 0 && fileInfo.Exists && dateTimes.Max() > fileInfo.LastWriteTime; DateTime? dateTime = !updateDateWhenMatches ? null : dateTimes.Max(); @@ -116,35 +113,35 @@ public class B_Metadata : IMetadata DateTime? dateTime; DateTime checkDateTime; string dateTimeFormat = Property.Models.Stateless.IProperty.DateTimeFormat(); - ExifDirectoryBase? exifDirectoryBase = directories.OfType().FirstOrDefault(); + MetadataExtractor.Formats.Exif.ExifDirectoryBase? exifDirectoryBase = directories.OfType().FirstOrDefault(); results.Add(fileHolder.CreationTime); results.Add(fileHolder.LastWriteTime); if (exifDirectoryBase is not null) { - if (exifDirectoryBase.TryGetDateTime(ExifDirectoryBase.TagDateTime, out checkDateTime)) + if (exifDirectoryBase.TryGetDateTime(MetadataExtractor.Formats.Exif.ExifDirectoryBase.TagDateTime, out checkDateTime)) results.Add(checkDateTime); else { - dateTime = Property.Models.Stateless.IProperty.GetDateTime(dateTimeFormat, exifDirectoryBase.GetString(ExifDirectoryBase.TagDateTime)); + dateTime = Property.Models.Stateless.IProperty.GetDateTime(dateTimeFormat, exifDirectoryBase.GetString(MetadataExtractor.Formats.Exif.ExifDirectoryBase.TagDateTime)); if (dateTime is not null) results.Add(dateTime.Value); } - if (exifDirectoryBase.TryGetDateTime(ExifDirectoryBase.TagDateTimeDigitized, out checkDateTime)) + if (exifDirectoryBase.TryGetDateTime(MetadataExtractor.Formats.Exif.ExifDirectoryBase.TagDateTimeDigitized, out checkDateTime)) results.Add(checkDateTime); else { - dateTime = Property.Models.Stateless.IProperty.GetDateTime(dateTimeFormat, exifDirectoryBase.GetString(ExifDirectoryBase.TagDateTimeDigitized)); + dateTime = Property.Models.Stateless.IProperty.GetDateTime(dateTimeFormat, exifDirectoryBase.GetString(MetadataExtractor.Formats.Exif.ExifDirectoryBase.TagDateTimeDigitized)); if (dateTime is not null) results.Add(dateTime.Value); } - if (exifDirectoryBase.TryGetDateTime(ExifDirectoryBase.TagDateTimeOriginal, out checkDateTime)) + if (exifDirectoryBase.TryGetDateTime(MetadataExtractor.Formats.Exif.ExifDirectoryBase.TagDateTimeOriginal, out checkDateTime)) { result ??= checkDateTime; results.Add(checkDateTime); } else { - dateTime = Property.Models.Stateless.IProperty.GetDateTime(dateTimeFormat, exifDirectoryBase.GetString(ExifDirectoryBase.TagDateTimeOriginal)); + dateTime = Property.Models.Stateless.IProperty.GetDateTime(dateTimeFormat, exifDirectoryBase.GetString(MetadataExtractor.Formats.Exif.ExifDirectoryBase.TagDateTimeOriginal)); if (dateTime is not null) { result ??= dateTime.Value; @@ -152,17 +149,17 @@ public class B_Metadata : IMetadata } } } - AviDirectory? aviDirectory = directories.OfType().FirstOrDefault(); + MetadataExtractor.Formats.Avi.AviDirectory? aviDirectory = directories.OfType().FirstOrDefault(); if (aviDirectory is not null) { - if (aviDirectory.TryGetDateTime(AviDirectory.TagDateTimeOriginal, out checkDateTime)) + if (aviDirectory.TryGetDateTime(MetadataExtractor.Formats.Avi.AviDirectory.TagDateTimeOriginal, out checkDateTime)) { result ??= checkDateTime; results.Add(checkDateTime); } else { - dateTime = Property.Models.Stateless.IProperty.GetDateTime(dateTimeFormat, aviDirectory.GetString(AviDirectory.TagDateTimeOriginal)); + dateTime = Property.Models.Stateless.IProperty.GetDateTime(dateTimeFormat, aviDirectory.GetString(MetadataExtractor.Formats.Avi.AviDirectory.TagDateTimeOriginal)); if (dateTime is not null) { result ??= dateTime.Value; @@ -170,17 +167,17 @@ public class B_Metadata : IMetadata } } } - QuickTimeMovieHeaderDirectory? quickTimeMovieHeaderDirectory = directories.OfType().FirstOrDefault(); + MetadataExtractor.Formats.QuickTime.QuickTimeMovieHeaderDirectory? quickTimeMovieHeaderDirectory = directories.OfType().FirstOrDefault(); if (quickTimeMovieHeaderDirectory is not null) { - if (quickTimeMovieHeaderDirectory.TryGetDateTime(QuickTimeMovieHeaderDirectory.TagCreated, out checkDateTime)) + if (quickTimeMovieHeaderDirectory.TryGetDateTime(MetadataExtractor.Formats.QuickTime.QuickTimeMovieHeaderDirectory.TagCreated, out checkDateTime)) { result ??= checkDateTime; results.Add(checkDateTime); } else { - dateTime = Property.Models.Stateless.IProperty.GetDateTime(dateTimeFormat, quickTimeMovieHeaderDirectory.GetString(QuickTimeMovieHeaderDirectory.TagCreated)); + dateTime = Property.Models.Stateless.IProperty.GetDateTime(dateTimeFormat, quickTimeMovieHeaderDirectory.GetString(MetadataExtractor.Formats.QuickTime.QuickTimeMovieHeaderDirectory.TagCreated)); if (dateTime is not null) { result ??= dateTime.Value; @@ -188,17 +185,17 @@ public class B_Metadata : IMetadata } } } - QuickTimeTrackHeaderDirectory? quickTimeTrackHeaderDirectory = directories.OfType().FirstOrDefault(); + MetadataExtractor.Formats.QuickTime.QuickTimeTrackHeaderDirectory? quickTimeTrackHeaderDirectory = directories.OfType().FirstOrDefault(); if (quickTimeTrackHeaderDirectory is not null) { - if (quickTimeTrackHeaderDirectory.TryGetDateTime(QuickTimeTrackHeaderDirectory.TagCreated, out checkDateTime)) + if (quickTimeTrackHeaderDirectory.TryGetDateTime(MetadataExtractor.Formats.QuickTime.QuickTimeTrackHeaderDirectory.TagCreated, out checkDateTime)) { result ??= checkDateTime; results.Add(checkDateTime); } else { - dateTime = Property.Models.Stateless.IProperty.GetDateTime(dateTimeFormat, quickTimeTrackHeaderDirectory.GetString(QuickTimeTrackHeaderDirectory.TagCreated)); + dateTime = Property.Models.Stateless.IProperty.GetDateTime(dateTimeFormat, quickTimeTrackHeaderDirectory.GetString(MetadataExtractor.Formats.QuickTime.QuickTimeTrackHeaderDirectory.TagCreated)); if (dateTime is not null) { result ??= dateTime.Value; diff --git a/Metadata/Models/QuickTimeMovieHeader.cs b/Metadata/Models/QuickTimeMovieHeader.cs deleted file mode 100644 index 56bd747..0000000 --- a/Metadata/Models/QuickTimeMovieHeader.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace View_by_Distance.Metadata.Models; - -public record QuickTimeMovieHeader(string? Version1, - string? NextTrackId16, - string? CurrentTime15, - string? SelectionDuration14, - string? SelectionTime13, - string? PosterTime12, - string? PreviewDuration11, - string? PreviewTime10, - string? Matrix9, - string? PreferredVolume8, - string? PreferredRate7, - string? Duration6, - string? TimeScale5, - string? Modified4, - string? Created3, - string? Flags2) -{ - - public override string ToString() - { - string result = JsonSerializer.Serialize(this, QuickTimeMovieHeaderSourceGenerationContext.Default.QuickTimeMovieHeader); - return result; - } - -} - -[JsonSourceGenerationOptions(WriteIndented = true)] -[JsonSerializable(typeof(QuickTimeMovieHeader))] -public partial class QuickTimeMovieHeaderSourceGenerationContext : JsonSerializerContext -{ -} \ No newline at end of file diff --git a/Metadata/Models/QuickTimeTrackHeader.cs b/Metadata/Models/QuickTimeTrackHeader.cs deleted file mode 100644 index 0566ed1..0000000 --- a/Metadata/Models/QuickTimeTrackHeader.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace View_by_Distance.Metadata.Models; - -public record QuickTimeTrackHeader(string? Version1, - string? Flags2, - string? Created3, - string? Modified4, - string? TrackId5, - string? Duration6, - string? Layer7, - string? AlternateGroup8, - string? Volume9, - string? Width10, - string? Height11, - string? Matrix12, - string? Rotation13) -{ - - public override string ToString() - { - string result = JsonSerializer.Serialize(this, QuickTimeTrackHeaderSourceGenerationContext.Default.QuickTimeTrackHeader); - return result; - } - -} - -[JsonSourceGenerationOptions(WriteIndented = true)] -[JsonSerializable(typeof(QuickTimeTrackHeader))] -public partial class QuickTimeTrackHeaderSourceGenerationContext : JsonSerializerContext -{ -} \ No newline at end of file diff --git a/Metadata/Models/Stateless/Methods/IMetadata.cs b/Metadata/Models/Stateless/Methods/IMetadata.cs index bcef368..b622203 100644 --- a/Metadata/Models/Stateless/Methods/IMetadata.cs +++ b/Metadata/Models/Stateless/Methods/IMetadata.cs @@ -14,10 +14,10 @@ public interface IMetadata Meters } - ReadOnlyDictionary TestStatic_Covert(IReadOnlyList directories) => - Covert(directories); - static ReadOnlyDictionary Covert(IReadOnlyList directories) => - new(Metadata.Covert(directories)); + ReadOnlyDictionary TestStatic_GetKeyValuePairs(IReadOnlyList directories) => + GetKeyValuePairs(directories); + static ReadOnlyDictionary GetKeyValuePairs(IReadOnlyList directories) => + new(Metadata.GetKeyValuePairs(directories)); string? TestStatic_GetModel(IReadOnlyList directories) => GetModel(directories); diff --git a/Metadata/Models/Stateless/Methods/Metadata.cs b/Metadata/Models/Stateless/Methods/Metadata.cs index 5b4a25d..1f94d76 100644 --- a/Metadata/Models/Stateless/Methods/Metadata.cs +++ b/Metadata/Models/Stateless/Methods/Metadata.cs @@ -9,7 +9,7 @@ namespace View_by_Distance.Metadata.Models.Stateless.Methods; internal partial class Metadata { - internal static Dictionary Covert(IReadOnlyList directories) + internal static Dictionary GetKeyValuePairs(IReadOnlyList directories) { Dictionary results = []; MetadataExtractorTag metadataExtractorTag; diff --git a/Rename/Rename.cs b/Rename/Rename.cs index 34dffbf..51e3c85 100644 --- a/Rename/Rename.cs +++ b/Rename/Rename.cs @@ -3,7 +3,6 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using Phares.Shared; using ShellProgressBar; -using System.Collections.ObjectModel; using System.Text; using View_by_Distance.Metadata.Models; using View_by_Distance.Rename.Models; @@ -16,9 +15,6 @@ namespace View_by_Distance.Rename; public class Rename { - private record Result(string File, - ReadOnlyDictionary KeyValuePairs); - private record Record(int Index, bool IsIgnoreExtension, bool IsValidImageFormatExtension, @@ -52,12 +48,6 @@ public class Rename logger?.LogInformation("{RootDirectory}", propertyConfiguration.RootDirectory); Property.Models.Configuration.Verify(propertyConfiguration, requireExist: false); Verify(); - List linesB = IteratedRenameFilesInDirectories(logger); - if (linesB.Count != 0) - { - File.WriteAllLines($"D:/Tmp/Phares/{DateTime.Now.Ticks}.tsv", linesB); - _ = Shared.Models.Stateless.Methods.IPath.DeleteEmptyDirectories(propertyConfiguration.RootDirectory); - } List lines = RenameFilesInDirectories(logger); if (lines.Count != 0) { @@ -82,25 +72,6 @@ public class Rename throw new NullReferenceException(nameof(_PropertyConfiguration)); } - private static Action GetResultCollection(A_Metadata metadata, List results, Action tick) - { - tick.Invoke(); - return file => results.Add(new(file, metadata.GetMetadataCollection(file))); - } - - private List IteratedRenameFilesInDirectories(ILogger? logger) - { - List old = []; - List results = []; - string rootDirectoryFullPath = Path.GetFullPath(_PropertyConfiguration.RootDirectory); - ParallelOptions parallelOptions = new() { MaxDegreeOfParallelism = _AppSettings.MaxDegreeOfParallelism }; - IEnumerable files = Directory.EnumerateFiles(rootDirectoryFullPath, "*", SearchOption.AllDirectories); - A_Metadata metadata = new(_PropertyConfiguration, _Configuration.ForceMetadataLastWriteTimeToCreationTime, _Configuration.PropertiesChangedForMetadata); - ProgressBar progressBar = new(short.MaxValue, "EnumerateFiles load", new ProgressBarOptions() { ProgressCharacter = '─', ProgressBarOnBottom = true, DisableBottomPercentage = true }); - files.AsParallel().ForAll(GetResultCollection(metadata, results, () => progressBar.Tick())); - return old; - } - private List RenameFilesInDirectories(ILogger? logger) { List results = []; diff --git a/Shared/Models/AviDirectory.cs b/Shared/Models/AviDirectory.cs new file mode 100644 index 0000000..745d8b3 --- /dev/null +++ b/Shared/Models/AviDirectory.cs @@ -0,0 +1,24 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace View_by_Distance.Shared.Models; + +public record AviDirectory(DateTime? DateTimeOriginal, + string? Duration, + string? Height, + string? Width) +{ + + public override string ToString() + { + string result = JsonSerializer.Serialize(this, AviDirectorySourceGenerationContext.Default.AviDirectory); + return result; + } + +} + +[JsonSourceGenerationOptions(WriteIndented = true)] +[JsonSerializable(typeof(AviDirectory))] +public partial class AviDirectorySourceGenerationContext : JsonSerializerContext +{ +} \ No newline at end of file diff --git a/Shared/Models/ExifDirectory.cs b/Shared/Models/ExifDirectory.cs new file mode 100644 index 0000000..45c5dc6 --- /dev/null +++ b/Shared/Models/ExifDirectory.cs @@ -0,0 +1,35 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace View_by_Distance.Shared.Models; + +public record ExifDirectory(AviDirectory AviDirectory, + ExifDirectoryBase ExifDirectoryBase, + string File, + FileMetadataDirectory FileMetadataDirectory, + GifHeaderDirectory GifHeaderDirectory, + GpsDirectory GpsDirectory, + int? Height, + string JsonFile, + JpegDirectory JpegDirectory, + PhotoshopDirectory PhotoshopDirectory, + PngDirectory PngDirectory, + QuickTimeMovieHeaderDirectory QuickTimeMovieHeaderDirectory, + QuickTimeTrackHeaderDirectory QuickTimeTrackHeaderDirectory, + WebPDirectory WebPDirectory, + int? Width) +{ + + public override string ToString() + { + string result = JsonSerializer.Serialize(this, ExifDirectorySourceGenerationContext.Default.ExifDirectory); + return result; + } + +} + +[JsonSourceGenerationOptions(WriteIndented = true)] +[JsonSerializable(typeof(ExifDirectory))] +public partial class ExifDirectorySourceGenerationContext : JsonSerializerContext +{ +} \ No newline at end of file diff --git a/Shared/Models/ExifDirectoryBase.cs b/Shared/Models/ExifDirectoryBase.cs new file mode 100644 index 0000000..8235471 --- /dev/null +++ b/Shared/Models/ExifDirectoryBase.cs @@ -0,0 +1,66 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace View_by_Distance.Shared.Models; + +public record ExifDirectoryBase(string? Aperture, + string? ApplicationNotes, + string? Artist, + string? BitsPerSample, + string? BodySerialNumber, + string? CameraOwnerName, + string? CompressedAverageBitsPerPixel, + string? Compression, + string? Copyright, + DateTime? DateTime, + DateTime? DateTimeDigitized, + DateTime? DateTimeOriginal, + string? DocumentName, + string? ExifVersion, + string? ExposureTime, + string? FileSource, + string? ImageDescription, + string? ImageHeight, + string? ImageNumber, + string? ImageUniqueId, + string? ImageWidth, + string? IsoSpeed, + string? LensMake, + string? LensModel, + string? LensSerialNumber, + string? Make, + string? MakerNote, + string? Model, + string? Orientation, + int? OrientationValue, + string? Rating, + string? RatingPercent, + string? SecurityClassification, + string? ShutterSpeed, + string? Software, + string? TimeZone, + string? TimeZoneDigitized, + string? TimeZoneOriginal, + string? UserComment, + string? WinAuthor, + string? WinComment, + string? WinKeywords, + string? WinSubject, + string? WinTitle, + string? XResolution, + string? YResolution) +{ + + public override string ToString() + { + string result = JsonSerializer.Serialize(this, ExifDirectoryBaseSourceGenerationContext.Default.ExifDirectoryBase); + return result; + } + +} + +[JsonSourceGenerationOptions(WriteIndented = true)] +[JsonSerializable(typeof(ExifDirectoryBase))] +public partial class ExifDirectoryBaseSourceGenerationContext : JsonSerializerContext +{ +} \ No newline at end of file diff --git a/Shared/Models/FileMetadataDirectory.cs b/Shared/Models/FileMetadataDirectory.cs new file mode 100644 index 0000000..1249ef5 --- /dev/null +++ b/Shared/Models/FileMetadataDirectory.cs @@ -0,0 +1,23 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace View_by_Distance.Shared.Models; + +public record FileMetadataDirectory(DateTime? FileModifiedDate, + string? FileName, + string? FileSize) +{ + + public override string ToString() + { + string result = JsonSerializer.Serialize(this, FileMetadataDirectorySourceGenerationContext.Default.FileMetadataDirectory); + return result; + } + +} + +[JsonSourceGenerationOptions(WriteIndented = true)] +[JsonSerializable(typeof(FileMetadataDirectory))] +public partial class FileMetadataDirectorySourceGenerationContext : JsonSerializerContext +{ +} \ No newline at end of file diff --git a/Shared/Models/GifHeaderDirectory.cs b/Shared/Models/GifHeaderDirectory.cs new file mode 100644 index 0000000..11342d9 --- /dev/null +++ b/Shared/Models/GifHeaderDirectory.cs @@ -0,0 +1,22 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace View_by_Distance.Shared.Models; + +public record GifHeaderDirectory(string? ImageHeight, + string? ImageWidth) +{ + + public override string ToString() + { + string result = JsonSerializer.Serialize(this, GifHeaderDirectorySourceGenerationContext.Default.GifHeaderDirectory); + return result; + } + +} + +[JsonSourceGenerationOptions(WriteIndented = true)] +[JsonSerializable(typeof(GifHeaderDirectory))] +public partial class GifHeaderDirectorySourceGenerationContext : JsonSerializerContext +{ +} \ No newline at end of file diff --git a/Shared/Models/GpsDirectory.cs b/Shared/Models/GpsDirectory.cs new file mode 100644 index 0000000..beef966 --- /dev/null +++ b/Shared/Models/GpsDirectory.cs @@ -0,0 +1,26 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace View_by_Distance.Shared.Models; + +public record GpsDirectory(string? Altitude, + string? Latitude, + string? LatitudeRef, + string? Longitude, + string? LongitudeRef, + DateTime? TimeStamp) +{ + + public override string ToString() + { + string result = JsonSerializer.Serialize(this, GpsDirectorySourceGenerationContext.Default.GpsDirectory); + return result; + } + +} + +[JsonSourceGenerationOptions(WriteIndented = true)] +[JsonSerializable(typeof(GpsDirectory))] +public partial class GpsDirectorySourceGenerationContext : JsonSerializerContext +{ +} \ No newline at end of file diff --git a/Shared/Models/JpegDirectory.cs b/Shared/Models/JpegDirectory.cs new file mode 100644 index 0000000..10747bf --- /dev/null +++ b/Shared/Models/JpegDirectory.cs @@ -0,0 +1,22 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace View_by_Distance.Shared.Models; + +public record JpegDirectory(string? ImageHeight, + string? ImageWidth) +{ + + public override string ToString() + { + string result = JsonSerializer.Serialize(this, JpegDirectorySourceGenerationContext.Default.JpegDirectory); + return result; + } + +} + +[JsonSourceGenerationOptions(WriteIndented = true)] +[JsonSerializable(typeof(JpegDirectory))] +public partial class JpegDirectorySourceGenerationContext : JsonSerializerContext +{ +} \ No newline at end of file diff --git a/Shared/Models/PhotoshopDirectory.cs b/Shared/Models/PhotoshopDirectory.cs new file mode 100644 index 0000000..ee42850 --- /dev/null +++ b/Shared/Models/PhotoshopDirectory.cs @@ -0,0 +1,22 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace View_by_Distance.Shared.Models; + +public record PhotoshopDirectory(string? JpegQuality, + string? Url) +{ + + public override string ToString() + { + string result = JsonSerializer.Serialize(this, PhotoshopDirectorySourceGenerationContext.Default.PhotoshopDirectory); + return result; + } + +} + +[JsonSourceGenerationOptions(WriteIndented = true)] +[JsonSerializable(typeof(PhotoshopDirectory))] +public partial class PhotoshopDirectorySourceGenerationContext : JsonSerializerContext +{ +} \ No newline at end of file diff --git a/Shared/Models/PngDirectory.cs b/Shared/Models/PngDirectory.cs new file mode 100644 index 0000000..4951a7f --- /dev/null +++ b/Shared/Models/PngDirectory.cs @@ -0,0 +1,22 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace View_by_Distance.Shared.Models; + +public record PngDirectory(string? ImageHeight, + string? ImageWidth) +{ + + public override string ToString() + { + string result = JsonSerializer.Serialize(this, PngDirectorySourceGenerationContext.Default.PngDirectory); + return result; + } + +} + +[JsonSourceGenerationOptions(WriteIndented = true)] +[JsonSerializable(typeof(PngDirectory))] +public partial class PngDirectorySourceGenerationContext : JsonSerializerContext +{ +} \ No newline at end of file diff --git a/Shared/Models/QuickTimeMovieHeaderDirectory.cs b/Shared/Models/QuickTimeMovieHeaderDirectory.cs new file mode 100644 index 0000000..0601dbc --- /dev/null +++ b/Shared/Models/QuickTimeMovieHeaderDirectory.cs @@ -0,0 +1,21 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace View_by_Distance.Shared.Models; + +public record QuickTimeMovieHeaderDirectory(DateTime? Created) +{ + + public override string ToString() + { + string result = JsonSerializer.Serialize(this, QuickTimeMovieHeaderDirectorySourceGenerationContext.Default.QuickTimeMovieHeaderDirectory); + return result; + } + +} + +[JsonSourceGenerationOptions(WriteIndented = true)] +[JsonSerializable(typeof(QuickTimeMovieHeaderDirectory))] +public partial class QuickTimeMovieHeaderDirectorySourceGenerationContext : JsonSerializerContext +{ +} \ No newline at end of file diff --git a/Shared/Models/QuickTimeTrackHeaderDirectory.cs b/Shared/Models/QuickTimeTrackHeaderDirectory.cs new file mode 100644 index 0000000..236c39c --- /dev/null +++ b/Shared/Models/QuickTimeTrackHeaderDirectory.cs @@ -0,0 +1,21 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace View_by_Distance.Shared.Models; + +public record QuickTimeTrackHeaderDirectory(DateTime? Created) +{ + + public override string ToString() + { + string result = JsonSerializer.Serialize(this, QuickTimeTrackHeaderDirectorySourceGenerationContext.Default.QuickTimeTrackHeaderDirectory); + return result; + } + +} + +[JsonSourceGenerationOptions(WriteIndented = true)] +[JsonSerializable(typeof(QuickTimeTrackHeaderDirectory))] +public partial class QuickTimeTrackHeaderDirectorySourceGenerationContext : JsonSerializerContext +{ +} \ No newline at end of file diff --git a/Shared/Models/WebPDirectory.cs b/Shared/Models/WebPDirectory.cs new file mode 100644 index 0000000..9e84df8 --- /dev/null +++ b/Shared/Models/WebPDirectory.cs @@ -0,0 +1,22 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace View_by_Distance.Shared.Models; + +public record WebPDirectory(string? ImageHeight, + string? ImageWidth) +{ + + public override string ToString() + { + string result = JsonSerializer.Serialize(this, WebPDirectorySourceGenerationContext.Default.WebPDirectory); + return result; + } + +} + +[JsonSourceGenerationOptions(WriteIndented = true)] +[JsonSerializable(typeof(WebPDirectory))] +public partial class WebPDirectorySourceGenerationContext : JsonSerializerContext +{ +} \ No newline at end of file diff --git a/Shared/View-by-Distance.Shared.csproj b/Shared/View-by-Distance.Shared.csproj index 8ed7d45..7accaab 100644 --- a/Shared/View-by-Distance.Shared.csproj +++ b/Shared/View-by-Distance.Shared.csproj @@ -1,7 +1,6 @@ enable - 11.0 enable win-x64;linux-x64 net8.0