Save Shortcuts Rev B
This commit is contained in:
parent
d951ad6696
commit
b0b4c20597
@ -5,6 +5,8 @@ namespace View_by_Distance.Compare.Models.Binder;
|
|||||||
|
|
||||||
public class Configuration
|
public class Configuration
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
[Display(Name = "Diff Property Directory"), Required] public string DiffPropertyDirectory { get; set; }
|
[Display(Name = "Diff Property Directory"), Required] public string DiffPropertyDirectory { get; set; }
|
||||||
[Display(Name = "Property Configuration"), Required] public Property.Models.Configuration PropertyConfiguration { get; set; }
|
[Display(Name = "Property Configuration"), Required] public Property.Models.Configuration PropertyConfiguration { get; set; }
|
||||||
[Display(Name = "Rename"), Required] public string[] Rename { get; set; }
|
[Display(Name = "Rename"), Required] public string[] Rename { get; set; }
|
||||||
@ -12,14 +14,7 @@ public class Configuration
|
|||||||
[Display(Name = "Rename C"), Required] public string[] RenameC { get; set; }
|
[Display(Name = "Rename C"), Required] public string[] RenameC { get; set; }
|
||||||
[Display(Name = "Spelling"), Required] public string[] Spelling { get; set; }
|
[Display(Name = "Spelling"), Required] public string[] Spelling { get; set; }
|
||||||
|
|
||||||
public Configuration()
|
#nullable restore
|
||||||
{
|
|
||||||
DiffPropertyDirectory = string.Empty;
|
|
||||||
Rename = Array.Empty<string>();
|
|
||||||
RenameB = Array.Empty<string>();
|
|
||||||
RenameC = Array.Empty<string>();
|
|
||||||
Spelling = Array.Empty<string>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
|
@ -5,6 +5,9 @@ namespace View_by_Distance.Date.Group.Models.Binder;
|
|||||||
|
|
||||||
public class Configuration
|
public class Configuration
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
[Display(Name = "By Create Date Shortcut"), Required] public bool? ByCreateDateShortcut { get; set; }
|
[Display(Name = "By Create Date Shortcut"), Required] public bool? ByCreateDateShortcut { get; set; }
|
||||||
[Display(Name = "By Date"), Required] public bool? ByDay { get; set; }
|
[Display(Name = "By Date"), Required] public bool? ByDay { get; set; }
|
||||||
[Display(Name = "By Hash"), Required] public bool? ByHash { get; set; }
|
[Display(Name = "By Hash"), Required] public bool? ByHash { get; set; }
|
||||||
@ -13,15 +16,7 @@ public class Configuration
|
|||||||
[Display(Name = "Ignore Subdirectories for Rename"), Required] public bool? KeepFullPath { get; set; }
|
[Display(Name = "Ignore Subdirectories for Rename"), Required] public bool? KeepFullPath { get; set; }
|
||||||
[Display(Name = "Property Configuration"), Required] public Property.Models.Configuration PropertyConfiguration { get; set; }
|
[Display(Name = "Property Configuration"), Required] public Property.Models.Configuration PropertyConfiguration { get; set; }
|
||||||
|
|
||||||
public Configuration()
|
#nullable restore
|
||||||
{
|
|
||||||
ByDay = null;
|
|
||||||
ByCreateDateShortcut = null;
|
|
||||||
ByHash = null;
|
|
||||||
BySeason = null;
|
|
||||||
ByWeek = null;
|
|
||||||
KeepFullPath = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
|
@ -63,21 +63,18 @@ public class D_Face
|
|||||||
string hiddenFileNameExtension,
|
string hiddenFileNameExtension,
|
||||||
ImageCodecInfo hiddenImageCodecInfo,
|
ImageCodecInfo hiddenImageCodecInfo,
|
||||||
ImageCodecInfo imageCodecInfo,
|
ImageCodecInfo imageCodecInfo,
|
||||||
Model model,
|
string modelDirectory,
|
||||||
ModelParameter modelParameter,
|
string modelName,
|
||||||
int numberOfJitters,
|
int numberOfJitters,
|
||||||
int numberOfTimesToUpsample,
|
int numberOfTimesToUpsample,
|
||||||
bool overrideForFaceImages,
|
bool overrideForFaceImages,
|
||||||
bool retryImagesWithoutAFace,
|
bool retryImagesWithoutAFace,
|
||||||
PredictorModel predictorModel,
|
string predictorModelName,
|
||||||
bool propertiesChangedForFaces)
|
bool propertiesChangedForFaces)
|
||||||
{
|
{
|
||||||
_Model = model;
|
|
||||||
_ArgZero = argZero;
|
_ArgZero = argZero;
|
||||||
_Configuration = configuration;
|
_Configuration = configuration;
|
||||||
_ImageCodecInfo = imageCodecInfo;
|
_ImageCodecInfo = imageCodecInfo;
|
||||||
_ModelParameter = modelParameter;
|
|
||||||
_PredictorModel = predictorModel;
|
|
||||||
_NumberOfJitters = numberOfJitters;
|
_NumberOfJitters = numberOfJitters;
|
||||||
_EncoderParameters = encoderParameters;
|
_EncoderParameters = encoderParameters;
|
||||||
_FileNameExtension = filenameExtension;
|
_FileNameExtension = filenameExtension;
|
||||||
@ -94,6 +91,10 @@ public class D_Face
|
|||||||
_FaceDistanceAreaPermilleTolerance = faceDistanceAreaPermilleTolerance;
|
_FaceDistanceAreaPermilleTolerance = faceDistanceAreaPermilleTolerance;
|
||||||
_FaceDistanceHiddenImageFactor = faceDistanceHiddenImageFactor;
|
_FaceDistanceHiddenImageFactor = faceDistanceHiddenImageFactor;
|
||||||
_ForceFaceLastWriteTimeToCreationTime = forceFaceLastWriteTimeToCreationTime;
|
_ForceFaceLastWriteTimeToCreationTime = forceFaceLastWriteTimeToCreationTime;
|
||||||
|
(Model model, PredictorModel predictorModel, ModelParameter modelParameter) = GetModel(modelDirectory, modelName, predictorModelName);
|
||||||
|
_Model = model;
|
||||||
|
_PredictorModel = predictorModel;
|
||||||
|
_ModelParameter = modelParameter;
|
||||||
ConstructorInfo? constructorInfo = typeof(PropertyItem).GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public, null, Array.Empty<Type>(), null);
|
ConstructorInfo? constructorInfo = typeof(PropertyItem).GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public, null, Array.Empty<Type>(), null);
|
||||||
if (constructorInfo is null)
|
if (constructorInfo is null)
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
@ -107,6 +108,47 @@ public class D_Face
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static (Model model, PredictorModel predictorModel, ModelParameter modelParameter) GetModel(string modelDirectory, string modelName, string predictorModelName)
|
||||||
|
{
|
||||||
|
(Model, PredictorModel, ModelParameter) result;
|
||||||
|
Array array;
|
||||||
|
Model? model = null;
|
||||||
|
PredictorModel? predictorModel = null;
|
||||||
|
array = Enum.GetValues(typeof(Model));
|
||||||
|
foreach (Model check in array)
|
||||||
|
{
|
||||||
|
if (modelName.Contains(check.ToString()))
|
||||||
|
{
|
||||||
|
model = check;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (model is null)
|
||||||
|
throw new Exception("Destination directory must have Model name!");
|
||||||
|
model = model.Value;
|
||||||
|
array = Enum.GetValues(typeof(PredictorModel));
|
||||||
|
foreach (PredictorModel check in array)
|
||||||
|
{
|
||||||
|
if (predictorModelName.Contains(check.ToString()))
|
||||||
|
{
|
||||||
|
predictorModel = check;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (predictorModel is null)
|
||||||
|
throw new Exception("Destination directory must have Predictor Model name!");
|
||||||
|
predictorModel = predictorModel.Value;
|
||||||
|
ModelParameter modelParameter = new()
|
||||||
|
{
|
||||||
|
CnnFaceDetectorModel = File.ReadAllBytes(Path.Combine(modelDirectory, "mmod_human_face_detector.dat")),
|
||||||
|
FaceRecognitionModel = File.ReadAllBytes(Path.Combine(modelDirectory, "dlib_face_recognition_resnet_model_v1.dat")),
|
||||||
|
PosePredictor5FaceLandmarksModel = File.ReadAllBytes(Path.Combine(modelDirectory, "shape_predictor_5_face_landmarks.dat")),
|
||||||
|
PosePredictor68FaceLandmarksModel = File.ReadAllBytes(Path.Combine(modelDirectory, "shape_predictor_68_face_landmarks.dat"))
|
||||||
|
};
|
||||||
|
result = new(model.Value, predictorModel.Value, modelParameter);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
#pragma warning disable CA1416
|
#pragma warning disable CA1416
|
||||||
|
|
||||||
private static byte[] GetBytes(string value)
|
private static byte[] GetBytes(string value)
|
||||||
|
@ -6,7 +6,6 @@ using System.Text.Json;
|
|||||||
using View_by_Distance.Distance.Models;
|
using View_by_Distance.Distance.Models;
|
||||||
using View_by_Distance.Face.Models;
|
using View_by_Distance.Face.Models;
|
||||||
using View_by_Distance.FaceParts.Models;
|
using View_by_Distance.FaceParts.Models;
|
||||||
using View_by_Distance.FaceRecognitionDotNet;
|
|
||||||
using View_by_Distance.Instance.Models;
|
using View_by_Distance.Instance.Models;
|
||||||
using View_by_Distance.Map.Models;
|
using View_by_Distance.Map.Models;
|
||||||
using View_by_Distance.Metadata.Models;
|
using View_by_Distance.Metadata.Models;
|
||||||
@ -14,7 +13,6 @@ using View_by_Distance.Property.Models;
|
|||||||
using View_by_Distance.Resize.Models;
|
using View_by_Distance.Resize.Models;
|
||||||
using View_by_Distance.Shared.Models;
|
using View_by_Distance.Shared.Models;
|
||||||
using View_by_Distance.Shared.Models.Methods;
|
using View_by_Distance.Shared.Models.Methods;
|
||||||
using View_by_Distance.Shared.Models.Stateless;
|
|
||||||
|
|
||||||
namespace View_by_Distance.Instance;
|
namespace View_by_Distance.Instance;
|
||||||
|
|
||||||
@ -71,20 +69,13 @@ public partial class DlibDotNet
|
|||||||
_Index = new(configuration);
|
_Index = new(configuration);
|
||||||
_Random = new(configuration);
|
_Random = new(configuration);
|
||||||
_Rename = new(configuration);
|
_Rename = new(configuration);
|
||||||
_Distance = new(
|
|
||||||
configuration.DistanceMoveUnableToMatch,
|
|
||||||
configuration.DistancePixelDistanceTolerance,
|
|
||||||
configuration.DistanceRenameToMatch,
|
|
||||||
configuration.FaceDistanceTolerance);
|
|
||||||
if (configuration.IgnoreExtensions is null)
|
if (configuration.IgnoreExtensions is null)
|
||||||
throw new NullReferenceException(nameof(configuration.IgnoreExtensions));
|
throw new NullReferenceException(nameof(configuration.IgnoreExtensions));
|
||||||
string propertyRoot = Property.Models.Stateless.IResult.GetResultsGroupDirectory(propertyConfiguration, nameof(A_Property), create: false);
|
string propertyRoot = Property.Models.Stateless.IResult.GetResultsGroupDirectory(propertyConfiguration, nameof(A_Property), create: false);
|
||||||
_FirstRun = !Directory.Exists(propertyRoot);
|
_FirstRun = !Directory.Exists(propertyRoot);
|
||||||
_Metadata = new(configuration.ForceMetadataLastWriteTimeToCreationTime, configuration.PropertiesChangedForMetadata);
|
|
||||||
argZero = args.Count > 0 ? Path.GetFullPath(args[0]) : Path.GetFullPath(propertyConfiguration.RootDirectory);
|
argZero = args.Count > 0 ? Path.GetFullPath(args[0]) : Path.GetFullPath(propertyConfiguration.RootDirectory);
|
||||||
_ArgZeroIsConfigurationRootDirectory = propertyConfiguration.RootDirectory == argZero;
|
_ArgZeroIsConfigurationRootDirectory = propertyConfiguration.RootDirectory == argZero;
|
||||||
_Log.Information(configuration.ModelDirectory);
|
_Log.Information(configuration.ModelDirectory);
|
||||||
(Model model, PredictorModel predictorModel, ModelParameter modelParameter) = GetModel(configuration);
|
|
||||||
{
|
{
|
||||||
(ImageCodecInfo imageCodecInfo, EncoderParameters encoderParameters, string filenameExtension) = C_Resize.GetPngLowQuality();
|
(ImageCodecInfo imageCodecInfo, EncoderParameters encoderParameters, string filenameExtension) = C_Resize.GetPngLowQuality();
|
||||||
(ImageCodecInfo hiddenImageCodecInfo, EncoderParameters hiddenEncoderParameters, string hiddenFileNameExtension) = C_Resize.GetGifLowQuality();
|
(ImageCodecInfo hiddenImageCodecInfo, EncoderParameters hiddenEncoderParameters, string hiddenFileNameExtension) = C_Resize.GetGifLowQuality();
|
||||||
@ -101,20 +92,22 @@ public partial class DlibDotNet
|
|||||||
hiddenFileNameExtension,
|
hiddenFileNameExtension,
|
||||||
hiddenImageCodecInfo,
|
hiddenImageCodecInfo,
|
||||||
imageCodecInfo,
|
imageCodecInfo,
|
||||||
model,
|
configuration.ModelDirectory,
|
||||||
modelParameter,
|
configuration.ModelName,
|
||||||
configuration.NumberOfJitters,
|
configuration.NumberOfJitters,
|
||||||
configuration.NumberOfTimesToUpsample,
|
configuration.NumberOfTimesToUpsample,
|
||||||
configuration.OverrideForFaceImages,
|
configuration.OverrideForFaceImages,
|
||||||
configuration.RetryImagesWithoutAFace,
|
configuration.RetryImagesWithoutAFace,
|
||||||
predictorModel,
|
configuration.PredictorModelName,
|
||||||
configuration.PropertiesChangedForFaces);
|
configuration.PropertiesChangedForFaces);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
(ImageCodecInfo imageCodecInfo, EncoderParameters encoderParameters, string filenameExtension) = C_Resize.GetGifLowQuality();
|
(ImageCodecInfo imageCodecInfo, EncoderParameters encoderParameters, string filenameExtension) = C_Resize.GetGifLowQuality();
|
||||||
_FaceParts = new D2_FaceParts(imageCodecInfo, encoderParameters, filenameExtension, configuration.CheckDFaceAndUpWriteDates, configuration.OverrideForFaceLandmarkImages);
|
_FaceParts = new D2_FaceParts(imageCodecInfo, encoderParameters, filenameExtension, configuration.CheckDFaceAndUpWriteDates, configuration.OverrideForFaceLandmarkImages);
|
||||||
}
|
}
|
||||||
|
_Metadata = new(configuration.ForceMetadataLastWriteTimeToCreationTime, configuration.PropertiesChangedForMetadata);
|
||||||
_MapConfiguration = Get(configuration, _Faces.FileNameExtension, _Faces.HiddenFileNameExtension, _FaceParts.FileNameExtension);
|
_MapConfiguration = Get(configuration, _Faces.FileNameExtension, _Faces.HiddenFileNameExtension, _FaceParts.FileNameExtension);
|
||||||
|
_Distance = new(configuration.DistanceMoveUnableToMatch, configuration.DistancePixelDistanceTolerance, configuration.DistanceRenameToMatch, configuration.FaceDistanceTolerance);
|
||||||
if (_FirstRun || !_ArgZeroIsConfigurationRootDirectory)
|
if (_FirstRun || !_ArgZeroIsConfigurationRootDirectory)
|
||||||
personContainers = Array.Empty<PersonContainer>();
|
personContainers = Array.Empty<PersonContainer>();
|
||||||
else
|
else
|
||||||
@ -152,7 +145,7 @@ public partial class DlibDotNet
|
|||||||
filenameExtension);
|
filenameExtension);
|
||||||
}
|
}
|
||||||
if (!configuration.SkipSearch)
|
if (!configuration.SkipSearch)
|
||||||
Search(ticks, model, predictorModel, argZero, propertyRoot, personContainers);
|
Search(ticks, argZero, propertyRoot, personContainers);
|
||||||
if (!_FirstRun && !_IsEnvironment.Development && _Exceptions.Count == 0 && _ArgZeroIsConfigurationRootDirectory)
|
if (!_FirstRun && !_IsEnvironment.Development && _Exceptions.Count == 0 && _ArgZeroIsConfigurationRootDirectory)
|
||||||
{
|
{
|
||||||
List<string[]> directoryCollections = _Rename.GetDirectoryRenameCollections(
|
List<string[]> directoryCollections = _Rename.GetDirectoryRenameCollections(
|
||||||
@ -212,50 +205,6 @@ public partial class DlibDotNet
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma warning disable CA1416
|
|
||||||
#pragma warning restore CA1416
|
|
||||||
|
|
||||||
private static (Model model, PredictorModel predictorModel, ModelParameter modelParameter) GetModel(Models.Configuration configuration)
|
|
||||||
{
|
|
||||||
(Model, PredictorModel, ModelParameter) result;
|
|
||||||
Array array;
|
|
||||||
Model? model = null;
|
|
||||||
PredictorModel? predictorModel = null;
|
|
||||||
array = Enum.GetValues(typeof(Model));
|
|
||||||
foreach (Model check in array)
|
|
||||||
{
|
|
||||||
if (configuration.ModelName.Contains(check.ToString()))
|
|
||||||
{
|
|
||||||
model = check;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (model is null)
|
|
||||||
throw new Exception("Destination directory must have Model name!");
|
|
||||||
model = model.Value;
|
|
||||||
array = Enum.GetValues(typeof(PredictorModel));
|
|
||||||
foreach (PredictorModel check in array)
|
|
||||||
{
|
|
||||||
if (configuration.PredictorModelName.Contains(check.ToString()))
|
|
||||||
{
|
|
||||||
predictorModel = check;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (predictorModel is null)
|
|
||||||
throw new Exception("Destination directory must have Predictor Model name!");
|
|
||||||
predictorModel = predictorModel.Value;
|
|
||||||
ModelParameter modelParameter = new()
|
|
||||||
{
|
|
||||||
CnnFaceDetectorModel = File.ReadAllBytes(Path.Combine(configuration.ModelDirectory, "mmod_human_face_detector.dat")),
|
|
||||||
FaceRecognitionModel = File.ReadAllBytes(Path.Combine(configuration.ModelDirectory, "dlib_face_recognition_resnet_model_v1.dat")),
|
|
||||||
PosePredictor5FaceLandmarksModel = File.ReadAllBytes(Path.Combine(configuration.ModelDirectory, "shape_predictor_5_face_landmarks.dat")),
|
|
||||||
PosePredictor68FaceLandmarksModel = File.ReadAllBytes(Path.Combine(configuration.ModelDirectory, "shape_predictor_68_face_landmarks.dat"))
|
|
||||||
};
|
|
||||||
result = new(model.Value, predictorModel.Value, modelParameter);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Verify(Models.Configuration configuration)
|
private void Verify(Models.Configuration configuration)
|
||||||
{
|
{
|
||||||
if (!configuration.OutputResolutions.Any() || string.IsNullOrEmpty(configuration.OutputResolutions[0]) || !configuration.ValidResolutions.Contains(configuration.OutputResolutions[0]))
|
if (!configuration.OutputResolutions.Any() || string.IsNullOrEmpty(configuration.OutputResolutions[0]) || !configuration.ValidResolutions.Contains(configuration.OutputResolutions[0]))
|
||||||
@ -268,6 +217,8 @@ public partial class DlibDotNet
|
|||||||
throw new Exception($"One or more {nameof(configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions)} are not in the ValidResolutions list!");
|
throw new Exception($"One or more {nameof(configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions)} are not in the ValidResolutions list!");
|
||||||
if ((from l in configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions where !configuration.ValidResolutions.Contains(l) select false).Any())
|
if ((from l in configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions where !configuration.ValidResolutions.Contains(l) select false).Any())
|
||||||
throw new Exception($"One or more {nameof(configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions)} are not in the ValidResolutions list!");
|
throw new Exception($"One or more {nameof(configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions)} are not in the ValidResolutions list!");
|
||||||
|
if ((from l in configuration.SaveShortcutsForOutputResolutions where !configuration.ValidResolutions.Contains(l) select false).Any())
|
||||||
|
throw new Exception($"One or more {nameof(configuration.SaveShortcutsForOutputResolutions)} are not in the ValidResolutions list!");
|
||||||
if ((from l in configuration.SaveFaceLandmarkForOutputResolutions where !configuration.ValidResolutions.Contains(l) select false).Any())
|
if ((from l in configuration.SaveFaceLandmarkForOutputResolutions where !configuration.ValidResolutions.Contains(l) select false).Any())
|
||||||
throw new Exception($"One or more {nameof(configuration.SaveFaceLandmarkForOutputResolutions)} are not in the ValidResolutions list!");
|
throw new Exception($"One or more {nameof(configuration.SaveFaceLandmarkForOutputResolutions)} are not in the ValidResolutions list!");
|
||||||
if (configuration.DistanceFactor + configuration.LocationConfidenceFactor != 10)
|
if (configuration.DistanceFactor + configuration.LocationConfidenceFactor != 10)
|
||||||
@ -628,7 +579,7 @@ public partial class DlibDotNet
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private (string, string, string, string) GetResultsFullGroupDirectories(Model? model, PredictorModel? predictorModel, string outputResolution)
|
private (string, string, string, string) GetResultsFullGroupDirectories(string outputResolution)
|
||||||
{
|
{
|
||||||
string aResultsFullGroupDirectory = Property.Models.Stateless.IResult.GetResultsFullGroupDirectory(
|
string aResultsFullGroupDirectory = Property.Models.Stateless.IResult.GetResultsFullGroupDirectory(
|
||||||
_Configuration.PropertyConfiguration,
|
_Configuration.PropertyConfiguration,
|
||||||
@ -716,7 +667,7 @@ public partial class DlibDotNet
|
|||||||
return results.ToArray();
|
return results.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FullDoWork(string argZero, Model? model, PredictorModel? predictorModel, string propertyRoot, long ticks, A_Property propertyLogic, int t, Container[] containers, string? eDistanceContentDirectory, Dictionary<int, List<(string, int)>> idToMappedFaceFilesCollection)
|
private void FullDoWork(string argZero, string propertyRoot, long ticks, A_Property propertyLogic, int t, Container[] containers, string? eDistanceContentDirectory, Dictionary<int, List<(string, int)>> idToMappedFaceFilesCollection)
|
||||||
{
|
{
|
||||||
if (_Log is null)
|
if (_Log is null)
|
||||||
throw new NullReferenceException(nameof(_Log));
|
throw new NullReferenceException(nameof(_Log));
|
||||||
@ -744,7 +695,7 @@ public partial class DlibDotNet
|
|||||||
total = 0;
|
total = 0;
|
||||||
_FileKeyValuePairs.Clear();
|
_FileKeyValuePairs.Clear();
|
||||||
_FilePropertiesKeyValuePairs.Clear();
|
_FilePropertiesKeyValuePairs.Clear();
|
||||||
(aResultsFullGroupDirectory, bResultsFullGroupDirectory, cResultsFullGroupDirectory, dResultsFullGroupDirectory) = GetResultsFullGroupDirectories(model, predictorModel, outputResolution);
|
(aResultsFullGroupDirectory, bResultsFullGroupDirectory, cResultsFullGroupDirectory, dResultsFullGroupDirectory) = GetResultsFullGroupDirectories(outputResolution);
|
||||||
for (int i = 0; i < containers.Length; i++)
|
for (int i = 0; i < containers.Length; i++)
|
||||||
{
|
{
|
||||||
container = containers[i];
|
container = containers[i];
|
||||||
@ -839,9 +790,10 @@ public partial class DlibDotNet
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Shared.Models.Face[] SetMappingThenGetDistinctFilteredFacesWithMapping(string argZero, Container[] containers)
|
private (List<Item>, Shared.Models.Face[]) SetMappingThenGetDistinctFilteredFacesWithMapping(string argZero, Container[] containers)
|
||||||
{
|
{
|
||||||
Shared.Models.Face[] results;
|
List<Item> items = new();
|
||||||
|
Shared.Models.Face[] faces;
|
||||||
Mapping mapping;
|
Mapping mapping;
|
||||||
int areaPermille;
|
int areaPermille;
|
||||||
bool? isWrongYear;
|
bool? isWrongYear;
|
||||||
@ -868,7 +820,10 @@ public partial class DlibDotNet
|
|||||||
if (item.Property?.Id is null || item.ImageFileHolder is null || item.ResizedFileHolder is null)
|
if (item.Property?.Id is null || item.ImageFileHolder is null || item.ResizedFileHolder is null)
|
||||||
continue;
|
continue;
|
||||||
if (!item.Faces.Any(l => l.FaceEncoding is not null && l.Location is not null && l.OutputResolution is not null))
|
if (!item.Faces.Any(l => l.FaceEncoding is not null && l.Location is not null && l.OutputResolution is not null))
|
||||||
|
{
|
||||||
|
items.Add(item);
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
minimumDateTime = Shared.Models.Stateless.Methods.IProperty.GetMinimumDateTime(item.Property);
|
minimumDateTime = Shared.Models.Stateless.Methods.IProperty.GetMinimumDateTime(item.Property);
|
||||||
(isWrongYear, _) = item.Property.IsWrongYear(item.ImageFileHolder.FullName, minimumDateTime);
|
(isWrongYear, _) = item.Property.IsWrongYear(item.ImageFileHolder.FullName, minimumDateTime);
|
||||||
mappingFromItem = new(item.Property.Id.Value, item.ImageFileHolder, isWrongYear, minimumDateTime, item.RelativePath, item.ResizedFileHolder);
|
mappingFromItem = new(item.Property.Id.Value, item.ImageFileHolder, isWrongYear, minimumDateTime, item.RelativePath, item.ResizedFileHolder);
|
||||||
@ -888,8 +843,8 @@ public partial class DlibDotNet
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
results = (from l in collection orderby l.Mapping?.MappingFromItem.Id select l).ToArray();
|
faces = (from l in collection orderby l.Mapping?.MappingFromItem.Id select l).ToArray();
|
||||||
return results;
|
return new(items, faces);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MapLogic(string argZero, long ticks, PersonContainer[] personContainers, Container[] containers, string a2PeopleSingletonDirectory, string dResultsFullGroupDirectory, string d2FacePartsContentDirectory, string eDistanceContentDirectory, string outputResolution)
|
private void MapLogic(string argZero, long ticks, PersonContainer[] personContainers, Container[] containers, string a2PeopleSingletonDirectory, string dResultsFullGroupDirectory, string d2FacePartsContentDirectory, string eDistanceContentDirectory, string outputResolution)
|
||||||
@ -897,7 +852,7 @@ public partial class DlibDotNet
|
|||||||
int? useFiltersCounter = null;
|
int? useFiltersCounter = null;
|
||||||
SortingContainer[] sortingContainers;
|
SortingContainer[] sortingContainers;
|
||||||
string dFacesContentDirectory = Path.Combine(dResultsFullGroupDirectory, "()");
|
string dFacesContentDirectory = Path.Combine(dResultsFullGroupDirectory, "()");
|
||||||
Shared.Models.Face[] distinctFilteredFaces = SetMappingThenGetDistinctFilteredFacesWithMapping(argZero, containers);
|
(List<Item> filteredItems, Shared.Models.Face[] distinctFilteredFaces) = SetMappingThenGetDistinctFilteredFacesWithMapping(argZero, containers);
|
||||||
Mapping[] mappingCollection = MapLogicSupport.GetSelectedMappingCollection(distinctFilteredFaces);
|
Mapping[] mappingCollection = MapLogicSupport.GetSelectedMappingCollection(distinctFilteredFaces);
|
||||||
MapLogicSupport mapLogicSupport = new(
|
MapLogicSupport mapLogicSupport = new(
|
||||||
_Configuration.FaceDistanceAreaPermilleTolerance,
|
_Configuration.FaceDistanceAreaPermilleTolerance,
|
||||||
@ -920,6 +875,12 @@ public partial class DlibDotNet
|
|||||||
int totalNotMapped = mapLogic.AddToMapping(mappingCollection);
|
int totalNotMapped = mapLogic.AddToMapping(mappingCollection);
|
||||||
if (_Configuration.MappingSaveMapped)
|
if (_Configuration.MappingSaveMapped)
|
||||||
mapLogic.SaveMapped(dFacesContentDirectory, d2FacePartsContentDirectory, mappingCollection, idToNormalizedPixelPercentageToMapping, totalNotMapped);
|
mapLogic.SaveMapped(dFacesContentDirectory, d2FacePartsContentDirectory, mappingCollection, idToNormalizedPixelPercentageToMapping, totalNotMapped);
|
||||||
|
if (_Configuration.MappingSaveNotMapped)
|
||||||
|
mapLogic.SaveNotMappedTicks();
|
||||||
|
if (_Configuration.SaveShortcutsForOutputResolutions.Contains(outputResolution))
|
||||||
|
mapLogic.SaveShortcuts(a2PeopleSingletonDirectory, personContainers, filteredItems, mappingCollection);
|
||||||
|
if (_Configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions.Contains(outputResolution))
|
||||||
|
mapLogic.SaveResizedImagesByPersonKeyFormatted(_Configuration.JLinks, a2PeopleSingletonDirectory, personContainers, mappingCollection, totalNotMapped);
|
||||||
MapLogicSupport.SetFaceDistances(_AppSettings.MaxDegreeOfParallelism, ticks, distinctFilteredFaces);
|
MapLogicSupport.SetFaceDistances(_AppSettings.MaxDegreeOfParallelism, ticks, distinctFilteredFaces);
|
||||||
sortingContainers = mapLogicSupport.SetFaceMappingSortingCollectionThenGetSortingContainers(_AppSettings.MaxDegreeOfParallelism, ticks, mapLogic, distinctFilteredFaces, useFiltersCounter);
|
sortingContainers = mapLogicSupport.SetFaceMappingSortingCollectionThenGetSortingContainers(_AppSettings.MaxDegreeOfParallelism, ticks, mapLogic, distinctFilteredFaces, useFiltersCounter);
|
||||||
if (!sortingContainers.Any())
|
if (!sortingContainers.Any())
|
||||||
@ -934,10 +895,6 @@ public partial class DlibDotNet
|
|||||||
MapLogicSupport.SaveFaceDistances(_Configuration.PropertyConfiguration, sortingContainers);
|
MapLogicSupport.SaveFaceDistances(_Configuration.PropertyConfiguration, sortingContainers);
|
||||||
if (totalNotMapped > 0)
|
if (totalNotMapped > 0)
|
||||||
mapLogic.UpdateFromSortingContainersThenSaveContainers(dFacesContentDirectory, d2FacePartsContentDirectory, mappingCollection, idToNormalizedPixelPercentageToMapping, useFiltersCounter, sortingContainers, totalNotMapped);
|
mapLogic.UpdateFromSortingContainersThenSaveContainers(dFacesContentDirectory, d2FacePartsContentDirectory, mappingCollection, idToNormalizedPixelPercentageToMapping, useFiltersCounter, sortingContainers, totalNotMapped);
|
||||||
if (_Configuration.MappingSaveNotMapped)
|
|
||||||
mapLogic.SaveNotMappedTicks();
|
|
||||||
if (_Configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions.Contains(outputResolution))
|
|
||||||
mapLogic.SaveResizedImagesByPersonKeyFormatted(_Configuration.JLinks, a2PeopleSingletonDirectory, personContainers, mappingCollection, totalNotMapped);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Container? AreAllSameEndsWith(string argZero, Container[] containers)
|
private static Container? AreAllSameEndsWith(string argZero, Container[] containers)
|
||||||
@ -1006,7 +963,7 @@ public partial class DlibDotNet
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Search(long ticks, Model? model, PredictorModel? predictorModel, string argZero, string propertyRoot, PersonContainer[] personContainers)
|
private void Search(long ticks, string argZero, string propertyRoot, PersonContainer[] personContainers)
|
||||||
{
|
{
|
||||||
int j;
|
int j;
|
||||||
int f;
|
int f;
|
||||||
@ -1048,13 +1005,13 @@ public partial class DlibDotNet
|
|||||||
propertyLogic = new(_AppSettings.MaxDegreeOfParallelism, _Configuration.PropertyConfiguration, _Resize.FileNameExtension, _Configuration.Reverse);
|
propertyLogic = new(_AppSettings.MaxDegreeOfParallelism, _Configuration.PropertyConfiguration, _Resize.FileNameExtension, _Configuration.Reverse);
|
||||||
}
|
}
|
||||||
Dictionary<int, List<(string, int)>> idToMappedFaceFilesCollection = Map.Models.Stateless.Methods.IMapLogic.DeleteEmptyDirectoriesAndGetMappedFaceFiles(_MapConfiguration, ticks, a2PeopleContentDirectory, eDistanceContentDirectory, personContainers);
|
Dictionary<int, List<(string, int)>> idToMappedFaceFilesCollection = Map.Models.Stateless.Methods.IMapLogic.DeleteEmptyDirectoriesAndGetMappedFaceFiles(_MapConfiguration, ticks, a2PeopleContentDirectory, eDistanceContentDirectory, personContainers);
|
||||||
FullDoWork(argZero, model, predictorModel, propertyRoot, ticks, propertyLogic, t, containers, eDistanceContentDirectory, idToMappedFaceFilesCollection);
|
FullDoWork(argZero, propertyRoot, ticks, propertyLogic, t, containers, eDistanceContentDirectory, idToMappedFaceFilesCollection);
|
||||||
_Distance.Clear();
|
_Distance.Clear();
|
||||||
foreach (string outputResolution in _Configuration.OutputResolutions)
|
foreach (string outputResolution in _Configuration.OutputResolutions)
|
||||||
{
|
{
|
||||||
if (_FirstRun || container is not null)
|
if (_FirstRun || container is not null)
|
||||||
break;
|
break;
|
||||||
(aResultsFullGroupDirectory, bResultsFullGroupDirectory, cResultsFullGroupDirectory, dResultsFullGroupDirectory) = GetResultsFullGroupDirectories(model, predictorModel, outputResolution);
|
(aResultsFullGroupDirectory, bResultsFullGroupDirectory, cResultsFullGroupDirectory, dResultsFullGroupDirectory) = GetResultsFullGroupDirectories(outputResolution);
|
||||||
if (_ArgZeroIsConfigurationRootDirectory
|
if (_ArgZeroIsConfigurationRootDirectory
|
||||||
&& _Configuration.SaveResizedSubfiles
|
&& _Configuration.SaveResizedSubfiles
|
||||||
&& outputResolution == _Configuration.OutputResolutions[0]
|
&& outputResolution == _Configuration.OutputResolutions[0]
|
||||||
|
@ -67,7 +67,8 @@ public class Configuration
|
|||||||
[Display(Name = "Reverse"), Required] public bool? Reverse { get; set; }
|
[Display(Name = "Reverse"), Required] public bool? Reverse { get; set; }
|
||||||
[Display(Name = "Save Face Landmark For Output Resolutions"), Required] public string[] SaveFaceLandmarkForOutputResolutions { get; set; }
|
[Display(Name = "Save Face Landmark For Output Resolutions"), Required] public string[] SaveFaceLandmarkForOutputResolutions { get; set; }
|
||||||
[Display(Name = "Save Full Year Of Random Files"), Required] public bool? SaveFullYearOfRandomFiles { get; set; }
|
[Display(Name = "Save Full Year Of Random Files"), Required] public bool? SaveFullYearOfRandomFiles { get; set; }
|
||||||
[Display(Name = "Save Shortcuts"), Required] public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { get; set; }
|
[Display(Name = "Save Resized Images by Person Key Formatted"), Required] public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { get; set; }
|
||||||
|
[Display(Name = "Save Shortcuts"), Required] public string[] SaveShortcutsForOutputResolutions { get; set; }
|
||||||
[Display(Name = "Save Resized Subfiles"), Required] public bool? SaveResizedSubfiles { get; set; }
|
[Display(Name = "Save Resized Subfiles"), Required] public bool? SaveResizedSubfiles { get; set; }
|
||||||
[Display(Name = "Skip Search"), Required] public bool? SkipSearch { get; set; }
|
[Display(Name = "Skip Search"), Required] public bool? SkipSearch { get; set; }
|
||||||
[Display(Name = "Sorting Days Delta Tolerance"), Required] public int? SortingDaysDeltaTolerance { get; set; }
|
[Display(Name = "Sorting Days Delta Tolerance"), Required] public int? SortingDaysDeltaTolerance { get; set; }
|
||||||
@ -136,10 +137,10 @@ public class Configuration
|
|||||||
throw new NullReferenceException(nameof(configuration.LocationFactor));
|
throw new NullReferenceException(nameof(configuration.LocationFactor));
|
||||||
if (configuration.MappingDefaultName is null)
|
if (configuration.MappingDefaultName is null)
|
||||||
throw new NullReferenceException(nameof(configuration.MappingDefaultName));
|
throw new NullReferenceException(nameof(configuration.MappingDefaultName));
|
||||||
if (configuration.MappingSaveNotMapped is null)
|
|
||||||
throw new NullReferenceException(nameof(configuration.MappingSaveNotMapped));
|
|
||||||
if (configuration.MappingSaveMapped is null)
|
if (configuration.MappingSaveMapped is null)
|
||||||
throw new NullReferenceException(nameof(configuration.MappingSaveMapped));
|
throw new NullReferenceException(nameof(configuration.MappingSaveMapped));
|
||||||
|
if (configuration.MappingSaveNotMapped is null)
|
||||||
|
throw new NullReferenceException(nameof(configuration.MappingSaveNotMapped));
|
||||||
if (configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping is null)
|
if (configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping is null)
|
||||||
throw new NullReferenceException(nameof(configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping));
|
throw new NullReferenceException(nameof(configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping));
|
||||||
if (configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping is null)
|
if (configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping is null)
|
||||||
@ -186,14 +187,16 @@ public class Configuration
|
|||||||
throw new NullReferenceException(nameof(configuration.Reverse));
|
throw new NullReferenceException(nameof(configuration.Reverse));
|
||||||
if (configuration.SaveFaceLandmarkForOutputResolutions is null)
|
if (configuration.SaveFaceLandmarkForOutputResolutions is null)
|
||||||
configuration.SaveFaceLandmarkForOutputResolutions = Array.Empty<string>();
|
configuration.SaveFaceLandmarkForOutputResolutions = Array.Empty<string>();
|
||||||
if (configuration.SaveFaceLandmarkForOutputResolutions is null)
|
|
||||||
throw new NullReferenceException(nameof(configuration.SaveFaceLandmarkForOutputResolutions));
|
|
||||||
if (configuration.SaveFullYearOfRandomFiles is null)
|
if (configuration.SaveFullYearOfRandomFiles is null)
|
||||||
throw new NullReferenceException(nameof(configuration.SaveFullYearOfRandomFiles));
|
throw new NullReferenceException(nameof(configuration.SaveFullYearOfRandomFiles));
|
||||||
if (configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions is null)
|
if (configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions is null)
|
||||||
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions = Array.Empty<string>();
|
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions = Array.Empty<string>();
|
||||||
if (configuration.SaveResizedSubfiles is null)
|
if (configuration.SaveResizedSubfiles is null)
|
||||||
throw new NullReferenceException(nameof(configuration.SaveResizedSubfiles));
|
throw new NullReferenceException(nameof(configuration.SaveResizedSubfiles));
|
||||||
|
if (configuration.SaveShortcutsForOutputResolutions is null)
|
||||||
|
configuration.SaveShortcutsForOutputResolutions = Array.Empty<string>();
|
||||||
|
if (configuration.SaveShortcutsForOutputResolutions is null)
|
||||||
|
configuration.SaveShortcutsForOutputResolutions = Array.Empty<string>();
|
||||||
if (configuration.SkipSearch is null)
|
if (configuration.SkipSearch is null)
|
||||||
throw new NullReferenceException(nameof(configuration.SkipSearch));
|
throw new NullReferenceException(nameof(configuration.SkipSearch));
|
||||||
if (configuration.SortingDaysDeltaTolerance is null)
|
if (configuration.SortingDaysDeltaTolerance is null)
|
||||||
@ -208,14 +211,6 @@ public class Configuration
|
|||||||
throw new NullReferenceException(nameof(configuration.TestDistanceResults));
|
throw new NullReferenceException(nameof(configuration.TestDistanceResults));
|
||||||
if (configuration.ValidResolutions is null)
|
if (configuration.ValidResolutions is null)
|
||||||
throw new NullReferenceException(nameof(configuration.ValidResolutions));
|
throw new NullReferenceException(nameof(configuration.ValidResolutions));
|
||||||
if (configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions is null)
|
|
||||||
configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions = Array.Empty<string>();
|
|
||||||
if (configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions is null)
|
|
||||||
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = Array.Empty<string>();
|
|
||||||
if (configuration.SaveFaceLandmarkForOutputResolutions is null)
|
|
||||||
configuration.SaveFaceLandmarkForOutputResolutions = Array.Empty<string>();
|
|
||||||
if (configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions is null)
|
|
||||||
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions = Array.Empty<string>();
|
|
||||||
_ = DateTime.Now.AddDays(-configuration.SortingDaysDeltaTolerance.Value);
|
_ = DateTime.Now.AddDays(-configuration.SortingDaysDeltaTolerance.Value);
|
||||||
result = new(configuration.PropertyConfiguration,
|
result = new(configuration.PropertyConfiguration,
|
||||||
configuration.CheckDFaceAndUpWriteDates.Value,
|
configuration.CheckDFaceAndUpWriteDates.Value,
|
||||||
@ -275,6 +270,7 @@ public class Configuration
|
|||||||
configuration.SaveFaceLandmarkForOutputResolutions,
|
configuration.SaveFaceLandmarkForOutputResolutions,
|
||||||
configuration.SaveFullYearOfRandomFiles.Value,
|
configuration.SaveFullYearOfRandomFiles.Value,
|
||||||
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
||||||
|
configuration.SaveShortcutsForOutputResolutions,
|
||||||
configuration.SaveResizedSubfiles.Value,
|
configuration.SaveResizedSubfiles.Value,
|
||||||
configuration.SkipSearch.Value,
|
configuration.SkipSearch.Value,
|
||||||
configuration.SortingDaysDeltaTolerance.Value,
|
configuration.SortingDaysDeltaTolerance.Value,
|
||||||
|
@ -66,6 +66,7 @@ public class Configuration
|
|||||||
public string[] SaveFaceLandmarkForOutputResolutions { init; get; }
|
public string[] SaveFaceLandmarkForOutputResolutions { init; get; }
|
||||||
public bool SaveFullYearOfRandomFiles { init; get; }
|
public bool SaveFullYearOfRandomFiles { init; get; }
|
||||||
public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { init; get; }
|
public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { init; get; }
|
||||||
|
public string[] SaveShortcutsForOutputResolutions { init; get; }
|
||||||
public bool SaveResizedSubfiles { init; get; }
|
public bool SaveResizedSubfiles { init; get; }
|
||||||
public bool SkipSearch { init; get; }
|
public bool SkipSearch { init; get; }
|
||||||
public int SortingDaysDeltaTolerance { init; get; }
|
public int SortingDaysDeltaTolerance { init; get; }
|
||||||
@ -134,6 +135,7 @@ public class Configuration
|
|||||||
string[] saveFaceLandmarkForOutputResolutions,
|
string[] saveFaceLandmarkForOutputResolutions,
|
||||||
bool saveFullYearOfRandomFiles,
|
bool saveFullYearOfRandomFiles,
|
||||||
string[] saveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
string[] saveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
||||||
|
string[] saveShortcutsForOutputResolutions,
|
||||||
bool saveResizedSubfiles,
|
bool saveResizedSubfiles,
|
||||||
bool skipSearch,
|
bool skipSearch,
|
||||||
int sortingDaysDeltaTolerance,
|
int sortingDaysDeltaTolerance,
|
||||||
@ -201,6 +203,7 @@ public class Configuration
|
|||||||
SaveFaceLandmarkForOutputResolutions = saveFaceLandmarkForOutputResolutions;
|
SaveFaceLandmarkForOutputResolutions = saveFaceLandmarkForOutputResolutions;
|
||||||
SaveFullYearOfRandomFiles = saveFullYearOfRandomFiles;
|
SaveFullYearOfRandomFiles = saveFullYearOfRandomFiles;
|
||||||
SaveResizedImagesByPersonKeyFormattedForOutputResolutions = saveResizedImagesByPersonKeyFormattedForOutputResolutions;
|
SaveResizedImagesByPersonKeyFormattedForOutputResolutions = saveResizedImagesByPersonKeyFormattedForOutputResolutions;
|
||||||
|
SaveShortcutsForOutputResolutions = saveShortcutsForOutputResolutions;
|
||||||
SaveResizedSubfiles = saveResizedSubfiles;
|
SaveResizedSubfiles = saveResizedSubfiles;
|
||||||
SkipSearch = skipSearch;
|
SkipSearch = skipSearch;
|
||||||
SortingDaysDeltaTolerance = sortingDaysDeltaTolerance;
|
SortingDaysDeltaTolerance = sortingDaysDeltaTolerance;
|
||||||
|
@ -6,7 +6,6 @@ using View_by_Distance.Metadata.Models;
|
|||||||
using View_by_Distance.Resize.Models;
|
using View_by_Distance.Resize.Models;
|
||||||
using View_by_Distance.Shared.Models;
|
using View_by_Distance.Shared.Models;
|
||||||
using View_by_Distance.Shared.Models.Methods;
|
using View_by_Distance.Shared.Models.Methods;
|
||||||
using View_by_Distance.Shared.Models.Stateless;
|
|
||||||
|
|
||||||
namespace View_by_Distance.Instance.Models;
|
namespace View_by_Distance.Instance.Models;
|
||||||
|
|
||||||
|
@ -4,7 +4,6 @@ using View_by_Distance.Face.Models;
|
|||||||
using View_by_Distance.FaceParts.Models;
|
using View_by_Distance.FaceParts.Models;
|
||||||
using View_by_Distance.Metadata.Models;
|
using View_by_Distance.Metadata.Models;
|
||||||
using View_by_Distance.Resize.Models;
|
using View_by_Distance.Resize.Models;
|
||||||
using View_by_Distance.Shared.Models.Stateless;
|
|
||||||
|
|
||||||
namespace View_by_Distance.Instance.Models;
|
namespace View_by_Distance.Instance.Models;
|
||||||
|
|
||||||
|
@ -83,8 +83,8 @@
|
|||||||
"MaxItemsInDistanceCollection": 50,
|
"MaxItemsInDistanceCollection": 50,
|
||||||
"ModelDirectory": "C:/GitHub/dlib-models",
|
"ModelDirectory": "C:/GitHub/dlib-models",
|
||||||
"ModelName": "Hog",
|
"ModelName": "Hog",
|
||||||
"NumberOfJitters": 1,
|
"NumberOfJitters": 0,
|
||||||
"NumberOfTimesToUpsample": 1,
|
"NumberOfTimesToUpsample": 0,
|
||||||
"OutputExtension": ".jpg",
|
"OutputExtension": ".jpg",
|
||||||
"OutputQuality": 95,
|
"OutputQuality": 95,
|
||||||
"OverrideForFaceImages": false,
|
"OverrideForFaceImages": false,
|
||||||
@ -147,6 +147,7 @@
|
|||||||
"256 x 256"
|
"256 x 256"
|
||||||
],
|
],
|
||||||
"SaveResizedImagesByPersonKeyFormattedForOutputResolutions": [],
|
"SaveResizedImagesByPersonKeyFormattedForOutputResolutions": [],
|
||||||
|
"SaveShortcutsForOutputResolutions": [],
|
||||||
"ValidImageFormatExtensions": [
|
"ValidImageFormatExtensions": [
|
||||||
".bmp",
|
".bmp",
|
||||||
".BMP",
|
".BMP",
|
||||||
|
@ -83,8 +83,8 @@
|
|||||||
"MaxItemsInDistanceCollection": 50,
|
"MaxItemsInDistanceCollection": 50,
|
||||||
"ModelDirectory": "L:/GitHub/dlib-models",
|
"ModelDirectory": "L:/GitHub/dlib-models",
|
||||||
"ModelName": "Hog",
|
"ModelName": "Hog",
|
||||||
"NumberOfJitters": 1,
|
"NumberOfJitters": 0,
|
||||||
"NumberOfTimesToUpsample": 1,
|
"NumberOfTimesToUpsample": 0,
|
||||||
"OutputExtension": ".jpg",
|
"OutputExtension": ".jpg",
|
||||||
"OutputQuality": 95,
|
"OutputQuality": 95,
|
||||||
"OverrideForFaceImages": false,
|
"OverrideForFaceImages": false,
|
||||||
@ -139,6 +139,9 @@
|
|||||||
"SaveResizedImagesByPersonKeyFormattedForOutputResolutions": [
|
"SaveResizedImagesByPersonKeyFormattedForOutputResolutions": [
|
||||||
"1920 x 1080"
|
"1920 x 1080"
|
||||||
],
|
],
|
||||||
|
"SaveShortcutsForOutputResolutions": [
|
||||||
|
"1920 x 1080"
|
||||||
|
],
|
||||||
"ValidImageFormatExtensions": [
|
"ValidImageFormatExtensions": [
|
||||||
".bmp",
|
".bmp",
|
||||||
".BMP",
|
".BMP",
|
||||||
|
@ -83,8 +83,8 @@
|
|||||||
"MaxItemsInDistanceCollection": 50,
|
"MaxItemsInDistanceCollection": 50,
|
||||||
"ModelDirectory": "C:/GitHub/dlib-models",
|
"ModelDirectory": "C:/GitHub/dlib-models",
|
||||||
"ModelName": "Hog",
|
"ModelName": "Hog",
|
||||||
"NumberOfJitters": 1,
|
"NumberOfJitters": 0,
|
||||||
"NumberOfTimesToUpsample": 1,
|
"NumberOfTimesToUpsample": 0,
|
||||||
"OutputExtension": ".jpg",
|
"OutputExtension": ".jpg",
|
||||||
"OutputQuality": 95,
|
"OutputQuality": 95,
|
||||||
"OverrideForFaceImages": false,
|
"OverrideForFaceImages": false,
|
||||||
@ -148,6 +148,9 @@
|
|||||||
"SaveResizedImagesByPersonKeyFormattedForOutputResolutions": [
|
"SaveResizedImagesByPersonKeyFormattedForOutputResolutions": [
|
||||||
"1920 x 1080"
|
"1920 x 1080"
|
||||||
],
|
],
|
||||||
|
"SaveShortcutsForOutputResolutions": [
|
||||||
|
"1920 x 1080"
|
||||||
|
],
|
||||||
"ValidImageFormatExtensions": [
|
"ValidImageFormatExtensions": [
|
||||||
".bmp",
|
".bmp",
|
||||||
".BMP",
|
".BMP",
|
||||||
|
@ -25,12 +25,14 @@ public class MapLogic
|
|||||||
private readonly int _MaxDegreeOfParallelism;
|
private readonly int _MaxDegreeOfParallelism;
|
||||||
private readonly Configuration? _Configuration;
|
private readonly Configuration? _Configuration;
|
||||||
private readonly string _EDistanceContentTicksDirectory;
|
private readonly string _EDistanceContentTicksDirectory;
|
||||||
|
private readonly Shared.Models.Properties.IPropertyConfiguration _PropertyConfiguration;
|
||||||
|
|
||||||
public MapLogic(int maxDegreeOfParallelism, Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, Configuration? configuration, long ticks, PersonContainer[] personContainers, string a2PeopleSingletonDirectory, string eDistanceContentDirectory, Mapping[] mappingCollection, Shared.Models.Methods.IMapLogicSupport? faceDistance)
|
public MapLogic(int maxDegreeOfParallelism, Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, Configuration? configuration, long ticks, PersonContainer[] personContainers, string a2PeopleSingletonDirectory, string eDistanceContentDirectory, Mapping[] mappingCollection, Shared.Models.Methods.IMapLogicSupport? faceDistance)
|
||||||
{
|
{
|
||||||
_Ticks = ticks;
|
_Ticks = ticks;
|
||||||
_Configuration = configuration;
|
_Configuration = configuration;
|
||||||
_Log = Serilog.Log.ForContext<MapLogic>();
|
_Log = Serilog.Log.ForContext<MapLogic>();
|
||||||
|
_PropertyConfiguration = propertyConfiguration;
|
||||||
_MaxDegreeOfParallelism = maxDegreeOfParallelism;
|
_MaxDegreeOfParallelism = maxDegreeOfParallelism;
|
||||||
if (_Log is null)
|
if (_Log is null)
|
||||||
{ }
|
{ }
|
||||||
@ -704,47 +706,82 @@ public class MapLogic
|
|||||||
SaveContainers(totalNotMapped, updated, saveContainers);
|
SaveContainers(totalNotMapped, updated, saveContainers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private (string, PersonBirthday?) GetPersonBirthday(string windowsShortcutPath)
|
||||||
|
{
|
||||||
|
if (_Configuration is null)
|
||||||
|
throw new NullReferenceException(nameof(_Configuration));
|
||||||
|
PersonBirthday? personBirthday = null;
|
||||||
|
string personKeyFormatted = string.Empty;
|
||||||
|
string[] directoryNames = IPath.GetDirectoryNames(windowsShortcutPath);
|
||||||
|
foreach (string directoryName in directoryNames)
|
||||||
|
{
|
||||||
|
personBirthday = IPersonBirthday.GetPersonBirthday(_Configuration.PersonBirthdayFormat, directoryName);
|
||||||
|
if (personBirthday is not null)
|
||||||
|
{
|
||||||
|
personKeyFormatted = directoryName;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new(personKeyFormatted, personBirthday);
|
||||||
|
}
|
||||||
|
|
||||||
private List<(string, PersonContainer)> GetPersonContainers(string[] jLinks, string a2PeopleSingletonDirectory, PersonContainer[] personContainers)
|
private List<(string, PersonContainer)> GetPersonContainers(string[] jLinks, string a2PeopleSingletonDirectory, PersonContainer[] personContainers)
|
||||||
{
|
{
|
||||||
if (_Configuration is null)
|
if (_Configuration is null)
|
||||||
throw new NullReferenceException(nameof(_Configuration));
|
throw new NullReferenceException(nameof(_Configuration));
|
||||||
List<(string, PersonContainer)> results = new();
|
List<(string, PersonContainer)> results = new();
|
||||||
string[] files;
|
string[] files;
|
||||||
long personKey;
|
|
||||||
const int zero = 0;
|
const int zero = 0;
|
||||||
string[] directories;
|
string[] directories;
|
||||||
string checkDirectory;
|
string checkDirectory;
|
||||||
|
string[] checkDirectories;
|
||||||
string personKeyFormatted;
|
string personKeyFormatted;
|
||||||
string displayDirectoryName;
|
PersonContainer[] matches;
|
||||||
PersonContainer[] collection;
|
|
||||||
PersonBirthday? personBirthday;
|
PersonBirthday? personBirthday;
|
||||||
|
string fileNameWithoutExtension;
|
||||||
WindowsShortcut windowsShortcut;
|
WindowsShortcut windowsShortcut;
|
||||||
|
List<(long, string)> collection = new();
|
||||||
foreach (string directoryName in jLinks)
|
foreach (string directoryName in jLinks)
|
||||||
{
|
{
|
||||||
checkDirectory = Path.Combine(a2PeopleSingletonDirectory, directoryName);
|
checkDirectory = Path.Combine(a2PeopleSingletonDirectory, directoryName);
|
||||||
if (!Directory.Exists(checkDirectory))
|
if (!Directory.Exists(checkDirectory))
|
||||||
continue;
|
continue;
|
||||||
|
checkDirectories = Directory.GetDirectories(checkDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||||
files = Directory.GetFiles(checkDirectory, "*.lnk", SearchOption.TopDirectoryOnly);
|
files = Directory.GetFiles(checkDirectory, "*.lnk", SearchOption.TopDirectoryOnly);
|
||||||
foreach (string file in files)
|
foreach (string file in files)
|
||||||
{
|
{
|
||||||
|
collection.Clear();
|
||||||
windowsShortcut = WindowsShortcut.Load(file);
|
windowsShortcut = WindowsShortcut.Load(file);
|
||||||
if (windowsShortcut.Path is null || !Directory.Exists(windowsShortcut.Path))
|
fileNameWithoutExtension = Path.GetFileNameWithoutExtension(file);
|
||||||
|
if (windowsShortcut.Path is null)
|
||||||
continue;
|
continue;
|
||||||
directories = Directory.GetDirectories(windowsShortcut.Path, "*", SearchOption.TopDirectoryOnly);
|
if (!Directory.Exists(windowsShortcut.Path) && files.Length != checkDirectories.Length)
|
||||||
foreach (string directory in directories)
|
throw new NotSupportedException(fileNameWithoutExtension);
|
||||||
|
(personKeyFormatted, personBirthday) = GetPersonBirthday(windowsShortcut.Path);
|
||||||
|
if (personBirthday is not null)
|
||||||
|
collection.Add(new(personBirthday.Value.Ticks, Path.Combine(checkDirectory, personKeyFormatted, fileNameWithoutExtension)));
|
||||||
|
else
|
||||||
{
|
{
|
||||||
personKeyFormatted = Path.GetFileName(directory);
|
directories = Directory.GetDirectories(windowsShortcut.Path, "*", SearchOption.TopDirectoryOnly);
|
||||||
personBirthday = IPersonBirthday.GetPersonBirthday(_Configuration.PersonBirthdayFormat, personKeyFormatted);
|
foreach (string directory in directories)
|
||||||
if (personBirthday is null)
|
{
|
||||||
continue;
|
personKeyFormatted = Path.GetFileName(directory);
|
||||||
personKey = personBirthday.Value.Ticks;
|
personBirthday = IPersonBirthday.GetPersonBirthday(_Configuration.PersonBirthdayFormat, personKeyFormatted);
|
||||||
collection = (from l in personContainers where l.Key == personKey && l.ApproximateYears.HasValue select l).ToArray();
|
if (personBirthday is null)
|
||||||
if (!collection.Any())
|
continue;
|
||||||
continue;
|
collection.Add(new(personBirthday.Value.Ticks, Path.Combine(checkDirectory, personKeyFormatted, fileNameWithoutExtension)));
|
||||||
displayDirectoryName = Path.Combine(checkDirectory, personKeyFormatted, Path.GetFileNameWithoutExtension(file));
|
}
|
||||||
|
}
|
||||||
|
if (!collection.Any())
|
||||||
|
throw new NotSupportedException(fileNameWithoutExtension);
|
||||||
|
foreach ((long personKey, string displayDirectoryName) in collection)
|
||||||
|
{
|
||||||
|
matches = (from l in personContainers where l.Key == personKey && l.ApproximateYears.HasValue select l).ToArray();
|
||||||
|
if (!matches.Any())
|
||||||
|
throw new NotSupportedException(fileNameWithoutExtension);
|
||||||
if (!Directory.Exists(displayDirectoryName))
|
if (!Directory.Exists(displayDirectoryName))
|
||||||
_ = Directory.CreateDirectory(displayDirectoryName);
|
_ = Directory.CreateDirectory(displayDirectoryName);
|
||||||
results.Add(new(personKeyFormatted, collection[zero]));
|
results.Add(new(personKeyFormatted, matches[zero]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -759,7 +796,7 @@ public class MapLogic
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private (int, FileHolder, int, string, string, string, string)[] GetCollection(string[] jLinks, string a2PeopleSingletonDirectory, PersonContainer[] personContainers, Mapping[] mappingCollection)
|
private (int, FileHolder, int, string, string, string, string)[] GetCollectionForSaveResizedImagesByPersonKeyFormatted(string[] jLinks, string a2PeopleSingletonDirectory, PersonContainer[] personContainers, Mapping[] mappingCollection)
|
||||||
{
|
{
|
||||||
if (_Configuration is null)
|
if (_Configuration is null)
|
||||||
throw new NullReferenceException(nameof(_Configuration));
|
throw new NullReferenceException(nameof(_Configuration));
|
||||||
@ -805,7 +842,7 @@ public class MapLogic
|
|||||||
SaveContainer? saveContainer;
|
SaveContainer? saveContainer;
|
||||||
List<int> distinctCollection = new();
|
List<int> distinctCollection = new();
|
||||||
List<SaveContainer> saveContainers = new();
|
List<SaveContainer> saveContainers = new();
|
||||||
(int, FileHolder, int, string, string, string, string)[] collection = GetCollection(jLinks, a2PeopleSingletonDirectory, personContainers, mappingCollection);
|
(int, FileHolder, int, string, string, string, string)[] collection = GetCollectionForSaveResizedImagesByPersonKeyFormatted(jLinks, a2PeopleSingletonDirectory, personContainers, mappingCollection);
|
||||||
foreach ((int id, FileHolder resizedFileHolder, int approximateYears, string personKeyFormatted, string directory, string personDirectory, string checkFile) in collection)
|
foreach ((int id, FileHolder resizedFileHolder, int approximateYears, string personKeyFormatted, string directory, string personDirectory, string checkFile) in collection)
|
||||||
{
|
{
|
||||||
if (distinctCollection.Contains(id))
|
if (distinctCollection.Contains(id))
|
||||||
@ -819,4 +856,89 @@ public class MapLogic
|
|||||||
SaveContainers(totalNotMapped, null, saveContainers);
|
SaveContainers(totalNotMapped, null, saveContainers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<(string, string, string)> GetCollectionForSaveShortcuts(string[] jLinks, string a2PeopleSingletonDirectory, PersonContainer[] personContainers, List<Item> filteredItems, Mapping[] mappingCollection)
|
||||||
|
{
|
||||||
|
if (_Configuration is null)
|
||||||
|
throw new NullReferenceException(nameof(_Configuration));
|
||||||
|
string fileName;
|
||||||
|
string directory;
|
||||||
|
string? directoryName;
|
||||||
|
string personDirectory;
|
||||||
|
string personKeyFormatted;
|
||||||
|
List<(string, string Directory, string)> collection = new();
|
||||||
|
string[] personKeyFormattedCollection = GetPersonKeyFormattedCollection(jLinks, a2PeopleSingletonDirectory, personContainers);
|
||||||
|
foreach (Item item in filteredItems)
|
||||||
|
{
|
||||||
|
directoryName = Path.GetDirectoryName(item.RelativePath);
|
||||||
|
if (directoryName is null)
|
||||||
|
throw new NotSupportedException();
|
||||||
|
if (item.ResizedFileHolder?.DirectoryName is null || !item.ResizedFileHolder.Exists)
|
||||||
|
continue;
|
||||||
|
directory = Path.Combine(item.ResizedFileHolder.DirectoryName, $"{_PropertyConfiguration.ResultAllInOne}Shortcuts", _PropertyConfiguration.ResultAllInOne);
|
||||||
|
personDirectory = Path.Combine(directory, "No Faces");
|
||||||
|
fileName = Path.Combine(personDirectory, $"{item.ResizedFileHolder.Name}.lnk");
|
||||||
|
collection.Add(new(item.ResizedFileHolder.FullName, personDirectory, fileName));
|
||||||
|
}
|
||||||
|
foreach (Mapping mapping in mappingCollection)
|
||||||
|
{
|
||||||
|
directoryName = Path.GetDirectoryName(mapping.MappingFromItem.RelativePath);
|
||||||
|
if (directoryName is null)
|
||||||
|
throw new NotSupportedException();
|
||||||
|
if (mapping.MappingFromItem.ResizedFileHolder.DirectoryName is null || !mapping.MappingFromItem.ResizedFileHolder.Exists)
|
||||||
|
continue;
|
||||||
|
if (mapping.By is null or IMapLogic.Sorting || mapping.MappingFromPerson?.ApproximateYears is null)
|
||||||
|
{
|
||||||
|
directory = Path.Combine(mapping.MappingFromItem.ResizedFileHolder.DirectoryName, $"{_PropertyConfiguration.ResultAllInOne}Shortcuts", _PropertyConfiguration.ResultAllInOne);
|
||||||
|
personDirectory = Path.Combine(directory, "Unknown");
|
||||||
|
fileName = Path.Combine(personDirectory, $"{mapping.MappingFromItem.ResizedFileHolder.Name}.lnk");
|
||||||
|
collection.Add(new(mapping.MappingFromItem.ResizedFileHolder.FullName, personDirectory, fileName));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(mapping.MappingFromPerson.SegmentB))
|
||||||
|
throw new NotSupportedException();
|
||||||
|
if (string.IsNullOrEmpty(mapping.MappingFromPerson.DisplayDirectoryName))
|
||||||
|
throw new NotSupportedException();
|
||||||
|
personKeyFormatted = IPersonBirthday.GetFormatted(_Configuration.PersonBirthdayFormat, mapping.MappingFromPerson.PersonBirthday);
|
||||||
|
if (!personKeyFormattedCollection.Contains(personKeyFormatted))
|
||||||
|
continue;
|
||||||
|
directory = Path.Combine(mapping.MappingFromItem.ResizedFileHolder.DirectoryName, $"{_PropertyConfiguration.ResultAllInOne}Shortcuts", personKeyFormatted);
|
||||||
|
personDirectory = Path.Combine(directory, mapping.MappingFromPerson.DisplayDirectoryName);
|
||||||
|
fileName = Path.Combine(directory, $"{mapping.MappingFromItem.ResizedFileHolder.Name}.lnk");
|
||||||
|
collection.Add(new(mapping.MappingFromItem.ResizedFileHolder.FullName, personDirectory, fileName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return collection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SaveShortcuts(string a2PeopleSingletonDirectory, PersonContainer[] personContainers, List<Item> filteredItems, Mapping[] mappingCollection)
|
||||||
|
{
|
||||||
|
if (_Configuration is null)
|
||||||
|
throw new NullReferenceException(nameof(_Configuration));
|
||||||
|
WindowsShortcut windowsShortcut;
|
||||||
|
string[] jLinks = new string[] { "All" };
|
||||||
|
List<(string, string Directory, string)> collection = GetCollectionForSaveShortcuts(jLinks, a2PeopleSingletonDirectory, personContainers, filteredItems, mappingCollection);
|
||||||
|
string[] directories = (from l in collection select l.Directory).Distinct().ToArray();
|
||||||
|
foreach (string directory in directories)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(directory))
|
||||||
|
continue;
|
||||||
|
if (!Directory.Exists(directory))
|
||||||
|
_ = Directory.CreateDirectory(directory);
|
||||||
|
}
|
||||||
|
foreach ((string fullName, string directory, string fileName) in collection)
|
||||||
|
{
|
||||||
|
if (File.Exists(fileName))
|
||||||
|
continue;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
windowsShortcut = new() { Path = fullName };
|
||||||
|
windowsShortcut.Save(fileName);
|
||||||
|
windowsShortcut.Dispose();
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -6,17 +6,14 @@ namespace View_by_Distance.Not.Copy.Copy.Models.Binder;
|
|||||||
public class Configuration
|
public class Configuration
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
[Display(Name = "Compare Source"), Required] public string CompareSource { get; set; }
|
[Display(Name = "Compare Source"), Required] public string CompareSource { get; set; }
|
||||||
[Display(Name = "Empty Destination"), Required] public string EmptyDestination { get; set; }
|
[Display(Name = "Empty Destination"), Required] public string EmptyDestination { get; set; }
|
||||||
[Display(Name = "Property Configuration"), Required] public Property.Models.Configuration PropertyConfiguration { get; set; }
|
[Display(Name = "Property Configuration"), Required] public Property.Models.Configuration PropertyConfiguration { get; set; }
|
||||||
[Display(Name = "Selected Source"), Required] public string SelectedSource { get; set; }
|
[Display(Name = "Selected Source"), Required] public string SelectedSource { get; set; }
|
||||||
|
|
||||||
public Configuration()
|
#nullable restore
|
||||||
{
|
|
||||||
CompareSource = string.Empty;
|
|
||||||
EmptyDestination = string.Empty;
|
|
||||||
SelectedSource = string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
|
@ -6,10 +6,12 @@ namespace View_by_Distance.PrepareForOld.Models.Binder;
|
|||||||
public class Configuration
|
public class Configuration
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
[Display(Name = "Property Configuration"), Required] public Property.Models.Configuration PropertyConfiguration { get; set; }
|
[Display(Name = "Property Configuration"), Required] public Property.Models.Configuration PropertyConfiguration { get; set; }
|
||||||
[Display(Name = "Spelling"), Required] public string[] Spelling { get; set; }
|
[Display(Name = "Spelling"), Required] public string[] Spelling { get; set; }
|
||||||
|
|
||||||
public Configuration() => Spelling = Array.Empty<string>();
|
#nullable restore
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
|
@ -13,10 +13,10 @@ public interface IPersonBirthday
|
|||||||
|
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
string TestStatic_GetDateTime(string personKey) =>
|
string TestStatic_GetDateTime(string personKeyFormatted) =>
|
||||||
GetDateTime(personKey);
|
GetDateTime(personKeyFormatted);
|
||||||
static string GetDateTime(string personKey) =>
|
static string GetDateTime(string personKeyFormatted) =>
|
||||||
personKey.Length < 5 || !personKey.Contains('#') ? personKey : personKey[..2] == "19" ? $"1600{personKey[4..]}" : $"1700{personKey[4..]}";
|
personKeyFormatted.Length < 5 || !personKeyFormatted.Contains('#') ? personKeyFormatted : personKeyFormatted[..2] == "19" ? $"1600{personKeyFormatted[4..]}" : $"1700{personKeyFormatted[4..]}";
|
||||||
|
|
||||||
double? TestStatic_GetAge(Models.PersonBirthday birthday) =>
|
double? TestStatic_GetAge(Models.PersonBirthday birthday) =>
|
||||||
GetAge(birthday);
|
GetAge(birthday);
|
||||||
@ -68,10 +68,10 @@ public interface IPersonBirthday
|
|||||||
static TimeSpan? GetTimeSpan(DateTime minimumDateTime, Models.PersonBirthday personBirthday) =>
|
static TimeSpan? GetTimeSpan(DateTime minimumDateTime, Models.PersonBirthday personBirthday) =>
|
||||||
PersonBirthday.GetTimeSpan(minimumDateTime, isWrongYear: false, personBirthday);
|
PersonBirthday.GetTimeSpan(minimumDateTime, isWrongYear: false, personBirthday);
|
||||||
|
|
||||||
Models.PersonBirthday? TestStatic_GetPersonBirthday(string personBirthdayFormat, string personKey) =>
|
Models.PersonBirthday? TestStatic_GetPersonBirthday(string personBirthdayFormat, string personKeyFormatted) =>
|
||||||
GetPersonBirthday(personBirthdayFormat, personKey);
|
GetPersonBirthday(personBirthdayFormat, personKeyFormatted);
|
||||||
static Models.PersonBirthday? GetPersonBirthday(string personBirthdayFormat, string personKey) =>
|
static Models.PersonBirthday? GetPersonBirthday(string personBirthdayFormat, string personKeyFormatted) =>
|
||||||
PersonBirthday.GetPersonBirthday(personBirthdayFormat, personKey);
|
PersonBirthday.GetPersonBirthday(personBirthdayFormat, personKeyFormatted);
|
||||||
|
|
||||||
bool TestStatic_DoesBirthDateExits(Properties.IStorage storage, Models.PersonBirthday personBirthday) =>
|
bool TestStatic_DoesBirthDateExits(Properties.IStorage storage, Models.PersonBirthday personBirthday) =>
|
||||||
DoesBirthDateExits(storage, personBirthday);
|
DoesBirthDateExits(storage, personBirthday);
|
||||||
@ -103,9 +103,9 @@ public interface IPersonBirthday
|
|||||||
internal static bool DoesBirthDateExits(Properties.IStorage storage, string personBirthdayFormat, Models.PersonBirthday personBirthday) =>
|
internal static bool DoesBirthDateExits(Properties.IStorage storage, string personBirthdayFormat, Models.PersonBirthday personBirthday) =>
|
||||||
File.Exists(GetFileFullName(storage, personBirthdayFormat, personBirthday));
|
File.Exists(GetFileFullName(storage, personBirthdayFormat, personBirthday));
|
||||||
|
|
||||||
DateTime? TestStatic_GetDateTime(string personBirthdayFormat, string personKey) =>
|
DateTime? TestStatic_GetDateTime(string personBirthdayFormat, string personKeyFormatted) =>
|
||||||
GetDateTime(personBirthdayFormat, personKey);
|
GetDateTime(personBirthdayFormat, personKeyFormatted);
|
||||||
static DateTime? GetDateTime(string personBirthdayFormat, string personKey) =>
|
static DateTime? GetDateTime(string personBirthdayFormat, string personKeyFormatted) =>
|
||||||
DateTime.TryParseExact(GetDateTime(personKey), personBirthdayFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime dateTime) ? dateTime : null;
|
DateTime.TryParseExact(GetDateTime(personKeyFormatted), personBirthdayFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime dateTime) ? dateTime : null;
|
||||||
|
|
||||||
}
|
}
|
@ -7,14 +7,20 @@ internal abstract class PersonBirthday
|
|||||||
|
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
internal static Models.PersonBirthday? GetPersonBirthday(string personBirthdayFormat, string personKey)
|
internal static Models.PersonBirthday? GetPersonBirthday(string personBirthdayFormat, string personKeyFormatted)
|
||||||
{
|
{
|
||||||
Models.PersonBirthday? result;
|
Models.PersonBirthday? result;
|
||||||
DateTime? dateTime = IPersonBirthday.GetDateTime(personBirthdayFormat, personKey);
|
DateTime? dateTime;
|
||||||
if (dateTime is null)
|
if (personKeyFormatted.Length != personBirthdayFormat.Length)
|
||||||
result = null;
|
result = null;
|
||||||
else
|
else
|
||||||
result = new(dateTime.Value);
|
{
|
||||||
|
dateTime = IPersonBirthday.GetDateTime(personBirthdayFormat, personKeyFormatted);
|
||||||
|
if (dateTime is null)
|
||||||
|
result = null;
|
||||||
|
else
|
||||||
|
result = new(dateTime.Value);
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,8 @@ public class Configuration
|
|||||||
[Display(Name = "Reverse"), Required] public bool? Reverse { get; set; }
|
[Display(Name = "Reverse"), Required] public bool? Reverse { get; set; }
|
||||||
[Display(Name = "Save Face Landmark For Output Resolutions"), Required] public string[] SaveFaceLandmarkForOutputResolutions { get; set; }
|
[Display(Name = "Save Face Landmark For Output Resolutions"), Required] public string[] SaveFaceLandmarkForOutputResolutions { get; set; }
|
||||||
[Display(Name = "Save Full Year Of Random Files"), Required] public bool? SaveFullYearOfRandomFiles { get; set; }
|
[Display(Name = "Save Full Year Of Random Files"), Required] public bool? SaveFullYearOfRandomFiles { get; set; }
|
||||||
[Display(Name = "Save Shortcuts"), Required] public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { get; set; }
|
[Display(Name = "Save Resized Images by Person Key Formatted"), Required] public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { get; set; }
|
||||||
|
[Display(Name = "Save Shortcuts"), Required] public string[] SaveShortcutsForOutputResolutions { get; set; }
|
||||||
[Display(Name = "Save Resized Subfiles"), Required] public bool? SaveResizedSubfiles { get; set; }
|
[Display(Name = "Save Resized Subfiles"), Required] public bool? SaveResizedSubfiles { get; set; }
|
||||||
[Display(Name = "Skip Search"), Required] public bool? SkipSearch { get; set; }
|
[Display(Name = "Skip Search"), Required] public bool? SkipSearch { get; set; }
|
||||||
[Display(Name = "Test Distance Results"), Required] public bool? TestDistanceResults { get; set; }
|
[Display(Name = "Test Distance Results"), Required] public bool? TestDistanceResults { get; set; }
|
||||||
@ -83,6 +84,10 @@ public class Configuration
|
|||||||
throw new NullReferenceException(nameof(configuration.IgnoreExtensions));
|
throw new NullReferenceException(nameof(configuration.IgnoreExtensions));
|
||||||
if (configuration.IgnoreRelativePaths is null)
|
if (configuration.IgnoreRelativePaths is null)
|
||||||
throw new NullReferenceException(nameof(configuration.IgnoreRelativePaths));
|
throw new NullReferenceException(nameof(configuration.IgnoreRelativePaths));
|
||||||
|
if (configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions is null)
|
||||||
|
configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions = Array.Empty<string>();
|
||||||
|
if (configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions is null)
|
||||||
|
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = Array.Empty<string>();
|
||||||
if (configuration.LoadOrCreateThenSaveIndex is null)
|
if (configuration.LoadOrCreateThenSaveIndex is null)
|
||||||
throw new NullReferenceException(nameof(configuration.LoadOrCreateThenSaveIndex));
|
throw new NullReferenceException(nameof(configuration.LoadOrCreateThenSaveIndex));
|
||||||
if (configuration.LocationConfidenceFactor is null)
|
if (configuration.LocationConfidenceFactor is null)
|
||||||
@ -120,25 +125,21 @@ public class Configuration
|
|||||||
if (configuration.Reverse is null)
|
if (configuration.Reverse is null)
|
||||||
throw new NullReferenceException(nameof(configuration.Reverse));
|
throw new NullReferenceException(nameof(configuration.Reverse));
|
||||||
if (configuration.SaveFaceLandmarkForOutputResolutions is null)
|
if (configuration.SaveFaceLandmarkForOutputResolutions is null)
|
||||||
throw new NullReferenceException(nameof(configuration.SaveFaceLandmarkForOutputResolutions));
|
configuration.SaveFaceLandmarkForOutputResolutions = Array.Empty<string>();
|
||||||
if (configuration.SaveFullYearOfRandomFiles is null)
|
if (configuration.SaveFullYearOfRandomFiles is null)
|
||||||
throw new NullReferenceException(nameof(configuration.SaveFullYearOfRandomFiles));
|
throw new NullReferenceException(nameof(configuration.SaveFullYearOfRandomFiles));
|
||||||
|
if (configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions is null)
|
||||||
|
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions = Array.Empty<string>();
|
||||||
if (configuration.SaveResizedSubfiles is null)
|
if (configuration.SaveResizedSubfiles is null)
|
||||||
throw new NullReferenceException(nameof(configuration.SaveResizedSubfiles));
|
throw new NullReferenceException(nameof(configuration.SaveResizedSubfiles));
|
||||||
|
if (configuration.SaveShortcutsForOutputResolutions is null)
|
||||||
|
configuration.SaveShortcutsForOutputResolutions = Array.Empty<string>();
|
||||||
if (configuration.SkipSearch is null)
|
if (configuration.SkipSearch is null)
|
||||||
throw new NullReferenceException(nameof(configuration.SkipSearch));
|
throw new NullReferenceException(nameof(configuration.SkipSearch));
|
||||||
if (configuration.TestDistanceResults is null)
|
if (configuration.TestDistanceResults is null)
|
||||||
throw new NullReferenceException(nameof(configuration.TestDistanceResults));
|
throw new NullReferenceException(nameof(configuration.TestDistanceResults));
|
||||||
if (configuration.ValidResolutions is null)
|
if (configuration.ValidResolutions is null)
|
||||||
throw new NullReferenceException(nameof(configuration.ValidResolutions));
|
throw new NullReferenceException(nameof(configuration.ValidResolutions));
|
||||||
if (configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions is null)
|
|
||||||
configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions = Array.Empty<string>();
|
|
||||||
if (configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions is null)
|
|
||||||
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = Array.Empty<string>();
|
|
||||||
if (configuration.SaveFaceLandmarkForOutputResolutions is null)
|
|
||||||
configuration.SaveFaceLandmarkForOutputResolutions = Array.Empty<string>();
|
|
||||||
if (configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions is null)
|
|
||||||
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions = Array.Empty<string>();
|
|
||||||
result = new(configuration.PropertyConfiguration,
|
result = new(configuration.PropertyConfiguration,
|
||||||
configuration.CheckDFaceAndUpWriteDates.Value,
|
configuration.CheckDFaceAndUpWriteDates.Value,
|
||||||
configuration.CheckJsonForDistanceResults.Value,
|
configuration.CheckJsonForDistanceResults.Value,
|
||||||
@ -178,6 +179,7 @@ public class Configuration
|
|||||||
configuration.SaveFaceLandmarkForOutputResolutions,
|
configuration.SaveFaceLandmarkForOutputResolutions,
|
||||||
configuration.SaveFullYearOfRandomFiles.Value,
|
configuration.SaveFullYearOfRandomFiles.Value,
|
||||||
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
||||||
|
configuration.SaveShortcutsForOutputResolutions,
|
||||||
configuration.SaveResizedSubfiles.Value,
|
configuration.SaveResizedSubfiles.Value,
|
||||||
configuration.SkipSearch.Value,
|
configuration.SkipSearch.Value,
|
||||||
configuration.TestDistanceResults.Value,
|
configuration.TestDistanceResults.Value,
|
||||||
|
@ -47,6 +47,7 @@ public class Configuration
|
|||||||
public string[] SaveFaceLandmarkForOutputResolutions { init; get; }
|
public string[] SaveFaceLandmarkForOutputResolutions { init; get; }
|
||||||
public bool SaveFullYearOfRandomFiles { init; get; }
|
public bool SaveFullYearOfRandomFiles { init; get; }
|
||||||
public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { init; get; }
|
public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { init; get; }
|
||||||
|
public string[] SaveShortcutsForOutputResolutions { init; get; }
|
||||||
public bool SaveResizedSubfiles { init; get; }
|
public bool SaveResizedSubfiles { init; get; }
|
||||||
public bool SkipSearch { init; get; }
|
public bool SkipSearch { init; get; }
|
||||||
public bool TestDistanceResults { init; get; }
|
public bool TestDistanceResults { init; get; }
|
||||||
@ -92,6 +93,7 @@ public class Configuration
|
|||||||
string[] saveFaceLandmarkForOutputResolutions,
|
string[] saveFaceLandmarkForOutputResolutions,
|
||||||
bool saveFullYearOfRandomFiles,
|
bool saveFullYearOfRandomFiles,
|
||||||
string[] saveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
string[] saveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
||||||
|
string[] saveShortcutsForOutputResolutions,
|
||||||
bool saveResizedSubfiles,
|
bool saveResizedSubfiles,
|
||||||
bool skipSearch,
|
bool skipSearch,
|
||||||
bool testDistanceResults,
|
bool testDistanceResults,
|
||||||
@ -136,6 +138,7 @@ public class Configuration
|
|||||||
SaveFaceLandmarkForOutputResolutions = saveFaceLandmarkForOutputResolutions;
|
SaveFaceLandmarkForOutputResolutions = saveFaceLandmarkForOutputResolutions;
|
||||||
SaveFullYearOfRandomFiles = saveFullYearOfRandomFiles;
|
SaveFullYearOfRandomFiles = saveFullYearOfRandomFiles;
|
||||||
SaveResizedImagesByPersonKeyFormattedForOutputResolutions = saveResizedImagesByPersonKeyFormattedForOutputResolutions;
|
SaveResizedImagesByPersonKeyFormattedForOutputResolutions = saveResizedImagesByPersonKeyFormattedForOutputResolutions;
|
||||||
|
SaveShortcutsForOutputResolutions = saveShortcutsForOutputResolutions;
|
||||||
SaveResizedSubfiles = saveResizedSubfiles;
|
SaveResizedSubfiles = saveResizedSubfiles;
|
||||||
SkipSearch = skipSearch;
|
SkipSearch = skipSearch;
|
||||||
TestDistanceResults = testDistanceResults;
|
TestDistanceResults = testDistanceResults;
|
||||||
|
@ -67,7 +67,8 @@ public class Configuration
|
|||||||
[Display(Name = "Reverse"), Required] public bool? Reverse { get; set; }
|
[Display(Name = "Reverse"), Required] public bool? Reverse { get; set; }
|
||||||
[Display(Name = "Save Face Landmark For Output Resolutions"), Required] public string[] SaveFaceLandmarkForOutputResolutions { get; set; }
|
[Display(Name = "Save Face Landmark For Output Resolutions"), Required] public string[] SaveFaceLandmarkForOutputResolutions { get; set; }
|
||||||
[Display(Name = "Save Full Year Of Random Files"), Required] public bool? SaveFullYearOfRandomFiles { get; set; }
|
[Display(Name = "Save Full Year Of Random Files"), Required] public bool? SaveFullYearOfRandomFiles { get; set; }
|
||||||
[Display(Name = "Save Shortcuts"), Required] public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { get; set; }
|
[Display(Name = "Save Resized Images by Person Key Formatted"), Required] public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { get; set; }
|
||||||
|
[Display(Name = "Save Shortcuts"), Required] public string[] SaveShortcutsForOutputResolutions { get; set; }
|
||||||
[Display(Name = "Save Resized Subfiles"), Required] public bool? SaveResizedSubfiles { get; set; }
|
[Display(Name = "Save Resized Subfiles"), Required] public bool? SaveResizedSubfiles { get; set; }
|
||||||
[Display(Name = "Skip Search"), Required] public bool? SkipSearch { get; set; }
|
[Display(Name = "Skip Search"), Required] public bool? SkipSearch { get; set; }
|
||||||
[Display(Name = "Sorting Days Delta Tolerance"), Required] public int? SortingDaysDeltaTolerance { get; set; }
|
[Display(Name = "Sorting Days Delta Tolerance"), Required] public int? SortingDaysDeltaTolerance { get; set; }
|
||||||
@ -136,10 +137,10 @@ public class Configuration
|
|||||||
throw new NullReferenceException(nameof(configuration.LocationFactor));
|
throw new NullReferenceException(nameof(configuration.LocationFactor));
|
||||||
if (configuration.MappingDefaultName is null)
|
if (configuration.MappingDefaultName is null)
|
||||||
throw new NullReferenceException(nameof(configuration.MappingDefaultName));
|
throw new NullReferenceException(nameof(configuration.MappingDefaultName));
|
||||||
if (configuration.MappingSaveNotMapped is null)
|
|
||||||
throw new NullReferenceException(nameof(configuration.MappingSaveNotMapped));
|
|
||||||
if (configuration.MappingSaveMapped is null)
|
if (configuration.MappingSaveMapped is null)
|
||||||
throw new NullReferenceException(nameof(configuration.MappingSaveMapped));
|
throw new NullReferenceException(nameof(configuration.MappingSaveMapped));
|
||||||
|
if (configuration.MappingSaveNotMapped is null)
|
||||||
|
throw new NullReferenceException(nameof(configuration.MappingSaveNotMapped));
|
||||||
if (configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping is null)
|
if (configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping is null)
|
||||||
throw new NullReferenceException(nameof(configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping));
|
throw new NullReferenceException(nameof(configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping));
|
||||||
if (configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping is null)
|
if (configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping is null)
|
||||||
@ -186,14 +187,14 @@ public class Configuration
|
|||||||
throw new NullReferenceException(nameof(configuration.Reverse));
|
throw new NullReferenceException(nameof(configuration.Reverse));
|
||||||
if (configuration.SaveFaceLandmarkForOutputResolutions is null)
|
if (configuration.SaveFaceLandmarkForOutputResolutions is null)
|
||||||
configuration.SaveFaceLandmarkForOutputResolutions = Array.Empty<string>();
|
configuration.SaveFaceLandmarkForOutputResolutions = Array.Empty<string>();
|
||||||
if (configuration.SaveFaceLandmarkForOutputResolutions is null)
|
|
||||||
throw new NullReferenceException(nameof(configuration.SaveFaceLandmarkForOutputResolutions));
|
|
||||||
if (configuration.SaveFullYearOfRandomFiles is null)
|
if (configuration.SaveFullYearOfRandomFiles is null)
|
||||||
throw new NullReferenceException(nameof(configuration.SaveFullYearOfRandomFiles));
|
throw new NullReferenceException(nameof(configuration.SaveFullYearOfRandomFiles));
|
||||||
if (configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions is null)
|
if (configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions is null)
|
||||||
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions = Array.Empty<string>();
|
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions = Array.Empty<string>();
|
||||||
if (configuration.SaveResizedSubfiles is null)
|
if (configuration.SaveResizedSubfiles is null)
|
||||||
throw new NullReferenceException(nameof(configuration.SaveResizedSubfiles));
|
throw new NullReferenceException(nameof(configuration.SaveResizedSubfiles));
|
||||||
|
if (configuration.SaveShortcutsForOutputResolutions is null)
|
||||||
|
configuration.SaveShortcutsForOutputResolutions = Array.Empty<string>();
|
||||||
if (configuration.SkipSearch is null)
|
if (configuration.SkipSearch is null)
|
||||||
throw new NullReferenceException(nameof(configuration.SkipSearch));
|
throw new NullReferenceException(nameof(configuration.SkipSearch));
|
||||||
if (configuration.SortingDaysDeltaTolerance is null)
|
if (configuration.SortingDaysDeltaTolerance is null)
|
||||||
@ -208,14 +209,6 @@ public class Configuration
|
|||||||
throw new NullReferenceException(nameof(configuration.TestDistanceResults));
|
throw new NullReferenceException(nameof(configuration.TestDistanceResults));
|
||||||
if (configuration.ValidResolutions is null)
|
if (configuration.ValidResolutions is null)
|
||||||
throw new NullReferenceException(nameof(configuration.ValidResolutions));
|
throw new NullReferenceException(nameof(configuration.ValidResolutions));
|
||||||
if (configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions is null)
|
|
||||||
configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions = Array.Empty<string>();
|
|
||||||
if (configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions is null)
|
|
||||||
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = Array.Empty<string>();
|
|
||||||
if (configuration.SaveFaceLandmarkForOutputResolutions is null)
|
|
||||||
configuration.SaveFaceLandmarkForOutputResolutions = Array.Empty<string>();
|
|
||||||
if (configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions is null)
|
|
||||||
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions = Array.Empty<string>();
|
|
||||||
_ = DateTime.Now.AddDays(-configuration.SortingDaysDeltaTolerance.Value);
|
_ = DateTime.Now.AddDays(-configuration.SortingDaysDeltaTolerance.Value);
|
||||||
result = new(configuration.PropertyConfiguration,
|
result = new(configuration.PropertyConfiguration,
|
||||||
configuration.CheckDFaceAndUpWriteDates.Value,
|
configuration.CheckDFaceAndUpWriteDates.Value,
|
||||||
@ -275,6 +268,7 @@ public class Configuration
|
|||||||
configuration.SaveFaceLandmarkForOutputResolutions,
|
configuration.SaveFaceLandmarkForOutputResolutions,
|
||||||
configuration.SaveFullYearOfRandomFiles.Value,
|
configuration.SaveFullYearOfRandomFiles.Value,
|
||||||
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
||||||
|
configuration.SaveShortcutsForOutputResolutions,
|
||||||
configuration.SaveResizedSubfiles.Value,
|
configuration.SaveResizedSubfiles.Value,
|
||||||
configuration.SkipSearch.Value,
|
configuration.SkipSearch.Value,
|
||||||
configuration.SortingDaysDeltaTolerance.Value,
|
configuration.SortingDaysDeltaTolerance.Value,
|
||||||
|
@ -66,6 +66,7 @@ public class Configuration
|
|||||||
public string[] SaveFaceLandmarkForOutputResolutions { init; get; }
|
public string[] SaveFaceLandmarkForOutputResolutions { init; get; }
|
||||||
public bool SaveFullYearOfRandomFiles { init; get; }
|
public bool SaveFullYearOfRandomFiles { init; get; }
|
||||||
public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { init; get; }
|
public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { init; get; }
|
||||||
|
public string[] SaveShortcutsForOutputResolutions { init; get; }
|
||||||
public bool SaveResizedSubfiles { init; get; }
|
public bool SaveResizedSubfiles { init; get; }
|
||||||
public bool SkipSearch { init; get; }
|
public bool SkipSearch { init; get; }
|
||||||
public int SortingDaysDeltaTolerance { init; get; }
|
public int SortingDaysDeltaTolerance { init; get; }
|
||||||
@ -134,6 +135,7 @@ public class Configuration
|
|||||||
string[] saveFaceLandmarkForOutputResolutions,
|
string[] saveFaceLandmarkForOutputResolutions,
|
||||||
bool saveFullYearOfRandomFiles,
|
bool saveFullYearOfRandomFiles,
|
||||||
string[] saveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
string[] saveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
||||||
|
string[] saveShortcutsForOutputResolutions,
|
||||||
bool saveResizedSubfiles,
|
bool saveResizedSubfiles,
|
||||||
bool skipSearch,
|
bool skipSearch,
|
||||||
int sortingDaysDeltaTolerance,
|
int sortingDaysDeltaTolerance,
|
||||||
@ -201,6 +203,7 @@ public class Configuration
|
|||||||
SaveFaceLandmarkForOutputResolutions = saveFaceLandmarkForOutputResolutions;
|
SaveFaceLandmarkForOutputResolutions = saveFaceLandmarkForOutputResolutions;
|
||||||
SaveFullYearOfRandomFiles = saveFullYearOfRandomFiles;
|
SaveFullYearOfRandomFiles = saveFullYearOfRandomFiles;
|
||||||
SaveResizedImagesByPersonKeyFormattedForOutputResolutions = saveResizedImagesByPersonKeyFormattedForOutputResolutions;
|
SaveResizedImagesByPersonKeyFormattedForOutputResolutions = saveResizedImagesByPersonKeyFormattedForOutputResolutions;
|
||||||
|
SaveShortcutsForOutputResolutions = saveShortcutsForOutputResolutions;
|
||||||
SaveResizedSubfiles = saveResizedSubfiles;
|
SaveResizedSubfiles = saveResizedSubfiles;
|
||||||
SkipSearch = skipSearch;
|
SkipSearch = skipSearch;
|
||||||
SortingDaysDeltaTolerance = sortingDaysDeltaTolerance;
|
SortingDaysDeltaTolerance = sortingDaysDeltaTolerance;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user