Rename
editorconfig
This commit is contained in:
91
Metadata/Models/A_Metadata.cs
Normal file
91
Metadata/Models/A_Metadata.cs
Normal file
@ -0,0 +1,91 @@
|
||||
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());
|
||||
}
|
||||
|
||||
}
|
@ -28,7 +28,7 @@ public class B_Metadata : IMetadata<MetadataExtractor.Directory>
|
||||
_PropertyConfiguration = propertyConfiguration;
|
||||
_ForceMetadataLastWriteTimeToCreationTime = false;
|
||||
_WriteIndentedJsonSerializerOptions = new JsonSerializerOptions { WriteIndented = true };
|
||||
_FileGroups = Shared.Models.Stateless.Methods.IPath.GetKeyValuePairs(propertyConfiguration, null, new string[] { propertyConfiguration.ResultSingleton });
|
||||
_FileGroups = Shared.Models.Stateless.Methods.IPath.GetKeyValuePairs(propertyConfiguration, null, [propertyConfiguration.ResultSingleton]);
|
||||
}
|
||||
|
||||
public B_Metadata(IPropertyConfiguration propertyConfiguration, bool forceMetadataLastWriteTimeToCreationTime, bool propertiesChangedForMetadata, string bResultsFullGroupDirectory)
|
||||
@ -37,7 +37,7 @@ public class B_Metadata : IMetadata<MetadataExtractor.Directory>
|
||||
_PropertiesChangedForMetadata = propertiesChangedForMetadata;
|
||||
_ForceMetadataLastWriteTimeToCreationTime = forceMetadataLastWriteTimeToCreationTime;
|
||||
_WriteIndentedJsonSerializerOptions = new JsonSerializerOptions { WriteIndented = true };
|
||||
_FileGroups = Shared.Models.Stateless.Methods.IPath.GetKeyValuePairs(propertyConfiguration, bResultsFullGroupDirectory, new string[] { propertyConfiguration.ResultSingleton });
|
||||
_FileGroups = Shared.Models.Stateless.Methods.IPath.GetKeyValuePairs(propertyConfiguration, bResultsFullGroupDirectory, [propertyConfiguration.ResultSingleton]);
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
@ -69,7 +69,7 @@ public class B_Metadata : IMetadata<MetadataExtractor.Directory>
|
||||
results = null;
|
||||
else if (!fileInfo.FullName.EndsWith(".json") && !fileInfo.FullName.EndsWith(".old"))
|
||||
throw new ArgumentException("must be a *.json file");
|
||||
else if (dateTimes.Any() && dateTimes.Max() > fileInfo.LastWriteTime)
|
||||
else if (dateTimes.Count != 0 && dateTimes.Max() > fileInfo.LastWriteTime)
|
||||
results = null;
|
||||
else
|
||||
{
|
||||
@ -92,7 +92,7 @@ public class B_Metadata : IMetadata<MetadataExtractor.Directory>
|
||||
IReadOnlyList<MetadataExtractor.Directory> directories = ImageMetadataReader.ReadMetadata(mappingFromItem.ImageFileHolder.FullName);
|
||||
results = Stateless.Methods.Metadata.Covert(directories);
|
||||
json = JsonSerializer.Serialize(results, DictionaryStringMetadataExtractorDirectorySourceGenerationContext.Default.DictionaryStringMetadataExtractorDirectory);
|
||||
bool updateDateWhenMatches = dateTimes.Any() && fileInfo.Exists && dateTimes.Max() > fileInfo.LastWriteTime;
|
||||
bool updateDateWhenMatches = dateTimes.Count != 0 && fileInfo.Exists && dateTimes.Max() > fileInfo.LastWriteTime;
|
||||
DateTime? dateTime = !updateDateWhenMatches ? null : dateTimes.Max();
|
||||
if (Shared.Models.Stateless.Methods.IPath.WriteAllText(fileInfo.FullName, json, updateDateWhenMatches, compareBeforeWrite: true, updateToWhenMatches: dateTime))
|
||||
{
|
||||
@ -111,7 +111,7 @@ public class B_Metadata : IMetadata<MetadataExtractor.Directory>
|
||||
|
||||
(DateTime?, DateTime?[]) IMetadata<MetadataExtractor.Directory>.GetDateTimes(FileHolder fileHolder, IReadOnlyList<MetadataExtractor.Directory> directories)
|
||||
{
|
||||
List<DateTime?> results = new();
|
||||
List<DateTime?> results = [];
|
||||
DateTime? result = null;
|
||||
DateTime? dateTime;
|
||||
DateTime checkDateTime;
|
||||
|
@ -11,13 +11,13 @@ internal partial class Metadata
|
||||
|
||||
internal static Dictionary<string, MetadataExtractorDirectory> Covert(IReadOnlyList<MetadataExtractor.Directory> directories)
|
||||
{
|
||||
Dictionary<string, MetadataExtractorDirectory> results = new();
|
||||
Dictionary<string, MetadataExtractorDirectory> results = [];
|
||||
MetadataExtractorTag metadataExtractorTag;
|
||||
MetadataExtractorDirectory? metadataExtractorDirectory;
|
||||
Dictionary<int, MetadataExtractorTag> metadataExtractorTags;
|
||||
foreach (MetadataExtractor.Directory directory in directories)
|
||||
{
|
||||
metadataExtractorTags = new();
|
||||
metadataExtractorTags = [];
|
||||
if (results.TryGetValue(directory.Name, out metadataExtractorDirectory))
|
||||
continue;
|
||||
foreach (Tag tag in directory.Tags)
|
||||
@ -33,7 +33,7 @@ internal partial class Metadata
|
||||
|
||||
internal static Dictionary<string, MetadataExtractorDirectory> Deserialize(string json)
|
||||
{
|
||||
Dictionary<string, MetadataExtractorDirectory> results = new();
|
||||
Dictionary<string, MetadataExtractorDirectory> results = [];
|
||||
Record? record;
|
||||
MetadataExtractorDirectory metadataExtractorDirectory;
|
||||
Dictionary<string, JsonElement>? keyValuePairs = JsonSerializer.Deserialize<Dictionary<string, JsonElement>>(json);
|
||||
@ -53,7 +53,7 @@ internal partial class Metadata
|
||||
internal static string? GetFaceEncoding(IReadOnlyList<MetadataExtractor.Directory> directories)
|
||||
{
|
||||
string? result;
|
||||
List<string> results = new();
|
||||
List<string> results = [];
|
||||
const string comment = "Comment: ";
|
||||
foreach (MetadataExtractor.Directory directory in directories)
|
||||
{
|
||||
@ -68,14 +68,14 @@ internal partial class Metadata
|
||||
results.Add(tag.Description);
|
||||
}
|
||||
}
|
||||
result = results.Any() ? results[0][comment.Length..] : null;
|
||||
result = results.Count != 0 ? results[0][comment.Length..] : null;
|
||||
return result;
|
||||
}
|
||||
|
||||
internal static string? GetOutputResolution(IReadOnlyList<MetadataExtractor.Directory> directories)
|
||||
{
|
||||
string? result;
|
||||
List<string> results = new();
|
||||
List<string> results = [];
|
||||
const string artist = "Artist: ";
|
||||
foreach (MetadataExtractor.Directory directory in directories)
|
||||
{
|
||||
@ -90,7 +90,7 @@ internal partial class Metadata
|
||||
results.Add(tag.Description);
|
||||
}
|
||||
}
|
||||
result = results.Any() ? results[0][artist.Length..] : null;
|
||||
result = results.Count != 0 ? results[0][artist.Length..] : null;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user