yesterday

This commit is contained in:
Mike Phares 2023-08-06 22:42:07 -07:00
parent 6b940180fa
commit 4c6566e63f

View File

@ -553,16 +553,15 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
return results;
}
private static void ReviewLocationContainerDistanceTolerance(float locationContainerDistanceTolerance, DateTime dateTime, List<(string, FaceRecognitionDotNet.FaceEncoding)> collection)
private static void ReviewLocationContainerDistanceTolerance(float locationContainerDistanceTolerance, DateTime dateTime, DateTime yesterday, List<(string File, FaceRecognitionDotNet.FaceEncoding FaceRecognitionDotNetFaceEncoding)> collection)
{
FileInfo fileInfo;
List<string> files = new();
FaceDistance? faceDistanceEncoding = null;
FaceDistance? faceDistanceEncoding;
List<FaceDistance> faceDistanceLengths;
List<string> firstPassFailures = new();
List<FaceDistance> faceDistanceEncodings = new();
foreach ((string _, FaceRecognitionDotNet.FaceEncoding faceRecognitionDotNetFaceEncoding) in collection)
{
faceDistanceEncoding = new(faceRecognitionDotNetFaceEncoding);
break;
}
faceDistanceEncoding = new(collection[0].FaceRecognitionDotNetFaceEncoding);
foreach ((string file, FaceRecognitionDotNet.FaceEncoding faceRecognitionDotNetFaceEncoding) in collection)
{
files.Add(file);
@ -570,16 +569,38 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
}
if (faceDistanceEncoding is null)
throw new Exception();
List<FaceDistance> faceDistanceLengths = FaceRecognition.FaceDistances(faceDistanceEncodings, faceDistanceEncoding);
faceDistanceLengths = FaceRecognition.FaceDistances(faceDistanceEncodings, faceDistanceEncoding);
if (faceDistanceLengths.Count != files.Count)
throw new Exception();
for (int i = 0; i < files.Count; i++)
{
if (!File.Exists(files[i]))
continue;
if (faceDistanceLengths[i].Length < locationContainerDistanceTolerance)
continue;
File.SetCreationTime(files[i], dateTime);
firstPassFailures.Add(files[i]);
}
faceDistanceEncoding = new(collection[^1].FaceRecognitionDotNetFaceEncoding);
foreach ((string file, FaceRecognitionDotNet.FaceEncoding faceRecognitionDotNetFaceEncoding) in collection)
{
files.Add(file);
faceDistanceEncodings.Add(new(faceRecognitionDotNetFaceEncoding));
}
if (faceDistanceEncoding is null)
throw new Exception();
faceDistanceLengths = FaceRecognition.FaceDistances(faceDistanceEncodings, faceDistanceEncoding);
if (faceDistanceLengths.Count != files.Count)
throw new Exception();
for (int i = 0; i < files.Count; i++)
{
fileInfo = new(files[i]);
if (!fileInfo.Exists)
continue;
if (fileInfo.CreationTime > yesterday)
File.SetCreationTime(fileInfo.FullName, yesterday);
if (faceDistanceLengths[i].Length < locationContainerDistanceTolerance)
continue;
if (firstPassFailures.Contains(fileInfo.FullName))
continue;
File.SetCreationTime(fileInfo.FullName, dateTime);
}
}
@ -588,6 +609,7 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
string? json;
int? lastDirectoryNumber = null;
DateTime dateTime = DateTime.Now;
DateTime yesterday = DateTime.Now.AddDays(-1);
Shared.Models.FaceEncoding? modelsFaceEncoding;
FaceRecognitionDotNet.FaceEncoding faceRecognitionDotNetFaceEncoding;
List<(string, FaceRecognitionDotNet.FaceEncoding)> collection = new();
@ -597,7 +619,8 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
continue;
if (lastDirectoryNumber is not null && locationContainer.DirectoryNumber.Value != lastDirectoryNumber.Value)
{
ReviewLocationContainerDistanceTolerance(locationContainerDistanceTolerance, dateTime, collection);
if (collection.Count > 2)
ReviewLocationContainerDistanceTolerance(locationContainerDistanceTolerance, dateTime, yesterday, collection);
collection.Clear();
}
json = Metadata.Models.Stateless.Methods.IMetadata.GetFaceEncoding(locationContainer.Directories);
@ -610,8 +633,8 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
collection.Add((locationContainer.File, faceRecognitionDotNetFaceEncoding));
lastDirectoryNumber = locationContainer.DirectoryNumber.Value;
}
if (collection.Count > 0)
ReviewLocationContainerDistanceTolerance(locationContainerDistanceTolerance, dateTime, collection);
if (collection.Count > 2)
ReviewLocationContainerDistanceTolerance(locationContainerDistanceTolerance, dateTime, yesterday, collection);
}
}