Save Closest is ready again with

all Deterministic Hash Code Key
This commit is contained in:
2022-08-20 00:57:48 -07:00
parent be7a6abbf4
commit f72fcee1db
16 changed files with 235 additions and 136 deletions

View File

@ -91,7 +91,7 @@ internal class E_Distance
for (int i = 0; i < distanceHolders.Count; i++)
{
distanceHolder = distanceHolders[i];
if (distanceHolder.Face.Location.NormalizedPixelPercentage is null)
if (distanceHolder.Face.Location?.NormalizedPixelPercentage is null)
continue;
check = Path.Combine(distanceHolder.JSONDirectory, $"{zero} - {distanceHolder.FileHolder.NameWithoutExtension}.json");
jsonFile = Path.Combine(distanceHolder.JSONDirectory, $"{distanceHolder.Id}.{zero}{distanceHolder.FileHolder.ExtensionLowered}.json");
@ -149,7 +149,7 @@ internal class E_Distance
locationIndex = 0;
else
locationIndex = distanceHolder.Face.LocationIndex.Value;
if (!distanceHolder.Face.Populated || distanceHolder.Face.Location.NormalizedPixelPercentage is null)
if (!distanceHolder.Face.Populated || distanceHolder.Face.Location?.NormalizedPixelPercentage is null)
normalizedPixelPercentage = 0;
else
normalizedPixelPercentage = distanceHolder.Face.Location.NormalizedPixelPercentage.Value;
@ -266,8 +266,6 @@ internal class E_Distance
check = true;
else if (hasPopulatedFace && !directoryInfo.Exists)
check = true;
else if (hasPopulatedFace && !tvsDirectoryInfo.Exists)
check = true;
else if (dateTimes.Any() && dateTimes.Max() > directoryInfo.LastWriteTime)
check = true;
if (check && !updateDateWhenMatches)
@ -541,7 +539,7 @@ internal class E_Distance
else
{
List<double> faceDistances = FaceRecognition.FaceDistances(tuple.FaceEncodings, faceEncoding);
result = new(face.LocationIndex, tuple.MinimumDateTime, tuple.IsWrongYear, tuple.PersonBirthday, faceDistances);
result = new(face.Location?.NormalizedPixelPercentage, tuple.MinimumDateTime, tuple.IsWrongYear, tuple.PersonBirthday, faceDistances);
if (result.Minimum > Closest.MaximumMinimum)
result = null;
}
@ -563,7 +561,7 @@ internal class E_Distance
if (itemIsWrongYear.HasValue && !itemIsWrongYear.Value && itemMinimumDateTime < personBirthday.Value)
continue;
faceDistances = FaceRecognition.FaceDistances(faceEncodings, faceEncoding);
closest = new(face.LocationIndex, minimumDateTime, isWrongYear, personBirthday, faceDistances);
closest = new(face.Location?.NormalizedPixelPercentage, minimumDateTime, isWrongYear, personBirthday, faceDistances);
if (closest.Minimum > Closest.MaximumMinimum)
continue;
closestCollection.Add(closest);
@ -596,7 +594,7 @@ internal class E_Distance
bool? itemIsWrongYear;
Closest[] closestCollection;
DateTime? itemMinimumDateTime;
float deterministicHashCodeKey;
double deterministicHashCodeKey;
Dictionary<string, int> results = new();
foreach (Container container in containers)
{
@ -618,7 +616,7 @@ internal class E_Distance
for (int i = 0; i < item.Faces.Count; i++)
{
face = item.Faces[i];
closest = new(face.LocationIndex, itemMinimumDateTime.Value, itemIsWrongYear);
closest = new(face.Location?.NormalizedPixelPercentage, itemMinimumDateTime.Value, itemIsWrongYear);
item.Closest.Add(closest);
if (!face.Populated)
continue;
@ -728,7 +726,7 @@ internal class E_Distance
string facesDirectory;
string personDirectory;
Shared.Models.Person person;
float deterministicHashCodeKey;
double deterministicHashCodeKey;
const string facePopulatedKey = "Closest";
const string pattern = @"[\\,\/,\:,\*,\?,\"",\<,\>,\|]";
foreach (Container container in containers)
@ -758,17 +756,17 @@ internal class E_Distance
{
person = peopleCollection[personKey][0];
personName = Shared.Models.Stateless.Methods.IPersonName.GetFullName(person.Name);
personDirectory = Path.Combine(directory, Regex.Replace(personName, pattern, string.Empty));
personDirectory = Path.Combine(directory, Regex.Replace(personName, pattern, string.Empty), "lnk");
results.Add(new(null, personDirectory, null, string.Empty, string.Empty));
}
facesDirectory = string.Concat(dFacesContentDirectory, Path.Combine(directoryName, item.ImageFileHolder.NameWithoutExtension));
faceFileInfo = new(Path.Combine(facesDirectory, $"{closest.NormalizedPixelPercentage.Value} - {item.ImageFileHolder.NameWithoutExtension}.png"));
deterministicHashCodeKey = Named.GetDeterministicHashCodeKey(item, closest);
checkFile = Path.Combine(directory, $"{deterministicHashCodeKey}{item.ImageFileHolder.ExtensionLowered}");
faceFileInfo = new(Path.Combine(facesDirectory, $"{deterministicHashCodeKey}{item.ImageFileHolder.ExtensionLowered}.png"));
if (string.IsNullOrEmpty(personDirectory))
shortcutFile = string.Empty;
else
shortcutFile = Path.Combine(personDirectory, $"{item.ImageFileHolder.ExtensionLowered}.lnk");
shortcutFile = Path.Combine(personDirectory, $"{deterministicHashCodeKey}{item.ImageFileHolder.ExtensionLowered}.lnk");
results.Add(new(item.ResizedFileHolder, directory, faceFileInfo, checkFile, shortcutFile));
}
}
@ -799,11 +797,11 @@ internal class E_Distance
else
File.Copy(resizedFileHolder.FullName, checkFile);
}
foreach ((FileHolder? resizedFileHolder, string directory, FileInfo? faceFileInfo, string checkFile, string shortcutFile) in collection)
foreach ((FileHolder? resizedFileHolder, string directory, FileInfo? _, string checkFile, string shortcutFile) in collection)
{
if (string.IsNullOrEmpty(directory) || string.IsNullOrEmpty(checkFile) || resizedFileHolder is null || faceFileInfo is null)
if (string.IsNullOrEmpty(directory) || string.IsNullOrEmpty(checkFile) || resizedFileHolder is null)
continue;
if (string.IsNullOrEmpty(shortcutFile))
if (string.IsNullOrEmpty(shortcutFile) || !resizedFileHolder.Exists)
continue;
try
{