Back to before AA
This commit is contained in:
parent
a4a92aacd2
commit
de18149027
@ -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<MetadataExtractor.Directory>
|
||||
{
|
||||
|
||||
private readonly bool _PropertiesChangedForMetadata;
|
||||
private readonly IPropertyConfiguration _PropertyConfiguration;
|
||||
private readonly bool _ForceMetadataLastWriteTimeToCreationTime;
|
||||
private readonly IReadOnlyDictionary<string, string[]> _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<string, MetadataExtractorDirectory> GetMetadataCollection(string file)
|
||||
{
|
||||
Dictionary<string, MetadataExtractorDirectory>? 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<MetadataExtractor.Directory> 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<MetadataExtractor.Directory>.GetDateTimes(FileHolder fileHolder, IReadOnlyList<MetadataExtractor.Directory> directories)
|
||||
{
|
||||
List<DateTime?> results = [];
|
||||
DateTime? result = null;
|
||||
return new(result, results.ToArray());
|
||||
}
|
||||
|
||||
}
|
@ -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
|
||||
{
|
||||
}
|
@ -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<MetadataExtractor.Directory>
|
||||
if (results is null || results.Count == 0)
|
||||
{
|
||||
IReadOnlyList<MetadataExtractor.Directory> 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<MetadataExtractor.Directory>
|
||||
DateTime? dateTime;
|
||||
DateTime checkDateTime;
|
||||
string dateTimeFormat = Property.Models.Stateless.IProperty.DateTimeFormat();
|
||||
ExifDirectoryBase? exifDirectoryBase = directories.OfType<ExifDirectoryBase>().FirstOrDefault();
|
||||
MetadataExtractor.Formats.Exif.ExifDirectoryBase? exifDirectoryBase = directories.OfType<MetadataExtractor.Formats.Exif.ExifDirectoryBase>().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<MetadataExtractor.Directory>
|
||||
}
|
||||
}
|
||||
}
|
||||
AviDirectory? aviDirectory = directories.OfType<AviDirectory>().FirstOrDefault();
|
||||
MetadataExtractor.Formats.Avi.AviDirectory? aviDirectory = directories.OfType<MetadataExtractor.Formats.Avi.AviDirectory>().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<MetadataExtractor.Directory>
|
||||
}
|
||||
}
|
||||
}
|
||||
QuickTimeMovieHeaderDirectory? quickTimeMovieHeaderDirectory = directories.OfType<QuickTimeMovieHeaderDirectory>().FirstOrDefault();
|
||||
MetadataExtractor.Formats.QuickTime.QuickTimeMovieHeaderDirectory? quickTimeMovieHeaderDirectory = directories.OfType<MetadataExtractor.Formats.QuickTime.QuickTimeMovieHeaderDirectory>().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<MetadataExtractor.Directory>
|
||||
}
|
||||
}
|
||||
}
|
||||
QuickTimeTrackHeaderDirectory? quickTimeTrackHeaderDirectory = directories.OfType<QuickTimeTrackHeaderDirectory>().FirstOrDefault();
|
||||
MetadataExtractor.Formats.QuickTime.QuickTimeTrackHeaderDirectory? quickTimeTrackHeaderDirectory = directories.OfType<MetadataExtractor.Formats.QuickTime.QuickTimeTrackHeaderDirectory>().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;
|
||||
|
@ -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
|
||||
{
|
||||
}
|
@ -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
|
||||
{
|
||||
}
|
@ -14,10 +14,10 @@ public interface IMetadata
|
||||
Meters
|
||||
}
|
||||
|
||||
ReadOnlyDictionary<string, MetadataExtractorDirectory> TestStatic_Covert(IReadOnlyList<MetadataExtractor.Directory> directories) =>
|
||||
Covert(directories);
|
||||
static ReadOnlyDictionary<string, MetadataExtractorDirectory> Covert(IReadOnlyList<MetadataExtractor.Directory> directories) =>
|
||||
new(Metadata.Covert(directories));
|
||||
ReadOnlyDictionary<string, MetadataExtractorDirectory> TestStatic_GetKeyValuePairs(IReadOnlyList<MetadataExtractor.Directory> directories) =>
|
||||
GetKeyValuePairs(directories);
|
||||
static ReadOnlyDictionary<string, MetadataExtractorDirectory> GetKeyValuePairs(IReadOnlyList<MetadataExtractor.Directory> directories) =>
|
||||
new(Metadata.GetKeyValuePairs(directories));
|
||||
|
||||
string? TestStatic_GetModel(IReadOnlyList<MetadataExtractor.Directory> directories) =>
|
||||
GetModel(directories);
|
||||
|
@ -9,7 +9,7 @@ namespace View_by_Distance.Metadata.Models.Stateless.Methods;
|
||||
internal partial class Metadata
|
||||
{
|
||||
|
||||
internal static Dictionary<string, MetadataExtractorDirectory> Covert(IReadOnlyList<MetadataExtractor.Directory> directories)
|
||||
internal static Dictionary<string, MetadataExtractorDirectory> GetKeyValuePairs(IReadOnlyList<MetadataExtractor.Directory> directories)
|
||||
{
|
||||
Dictionary<string, MetadataExtractorDirectory> results = [];
|
||||
MetadataExtractorTag metadataExtractorTag;
|
||||
|
@ -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<string, MetadataExtractorDirectory> 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<string> 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<string> lines = RenameFilesInDirectories(logger);
|
||||
if (lines.Count != 0)
|
||||
{
|
||||
@ -82,25 +72,6 @@ public class Rename
|
||||
throw new NullReferenceException(nameof(_PropertyConfiguration));
|
||||
}
|
||||
|
||||
private static Action<string> GetResultCollection(A_Metadata metadata, List<Result> results, Action tick)
|
||||
{
|
||||
tick.Invoke();
|
||||
return file => results.Add(new(file, metadata.GetMetadataCollection(file)));
|
||||
}
|
||||
|
||||
private List<string> IteratedRenameFilesInDirectories(ILogger? logger)
|
||||
{
|
||||
List<string> old = [];
|
||||
List<Result> results = [];
|
||||
string rootDirectoryFullPath = Path.GetFullPath(_PropertyConfiguration.RootDirectory);
|
||||
ParallelOptions parallelOptions = new() { MaxDegreeOfParallelism = _AppSettings.MaxDegreeOfParallelism };
|
||||
IEnumerable<string> 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<string> RenameFilesInDirectories(ILogger? logger)
|
||||
{
|
||||
List<string> results = [];
|
||||
|
24
Shared/Models/AviDirectory.cs
Normal file
24
Shared/Models/AviDirectory.cs
Normal file
@ -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
|
||||
{
|
||||
}
|
35
Shared/Models/ExifDirectory.cs
Normal file
35
Shared/Models/ExifDirectory.cs
Normal file
@ -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
|
||||
{
|
||||
}
|
66
Shared/Models/ExifDirectoryBase.cs
Normal file
66
Shared/Models/ExifDirectoryBase.cs
Normal file
@ -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
|
||||
{
|
||||
}
|
23
Shared/Models/FileMetadataDirectory.cs
Normal file
23
Shared/Models/FileMetadataDirectory.cs
Normal file
@ -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
|
||||
{
|
||||
}
|
22
Shared/Models/GifHeaderDirectory.cs
Normal file
22
Shared/Models/GifHeaderDirectory.cs
Normal file
@ -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
|
||||
{
|
||||
}
|
26
Shared/Models/GpsDirectory.cs
Normal file
26
Shared/Models/GpsDirectory.cs
Normal file
@ -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
|
||||
{
|
||||
}
|
22
Shared/Models/JpegDirectory.cs
Normal file
22
Shared/Models/JpegDirectory.cs
Normal file
@ -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
|
||||
{
|
||||
}
|
22
Shared/Models/PhotoshopDirectory.cs
Normal file
22
Shared/Models/PhotoshopDirectory.cs
Normal file
@ -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
|
||||
{
|
||||
}
|
22
Shared/Models/PngDirectory.cs
Normal file
22
Shared/Models/PngDirectory.cs
Normal file
@ -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
|
||||
{
|
||||
}
|
21
Shared/Models/QuickTimeMovieHeaderDirectory.cs
Normal file
21
Shared/Models/QuickTimeMovieHeaderDirectory.cs
Normal file
@ -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
|
||||
{
|
||||
}
|
21
Shared/Models/QuickTimeTrackHeaderDirectory.cs
Normal file
21
Shared/Models/QuickTimeTrackHeaderDirectory.cs
Normal file
@ -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
|
||||
{
|
||||
}
|
22
Shared/Models/WebPDirectory.cs
Normal file
22
Shared/Models/WebPDirectory.cs
Normal file
@ -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
|
||||
{
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<LangVersion>11.0</LangVersion>
|
||||
<Nullable>enable</Nullable>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64</RuntimeIdentifiers>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
|
Loading…
x
Reference in New Issue
Block a user