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; 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(); List<string> files = new();
FaceDistance? faceDistanceEncoding = null; FaceDistance? faceDistanceEncoding;
List<FaceDistance> faceDistanceLengths;
List<string> firstPassFailures = new();
List<FaceDistance> faceDistanceEncodings = new(); List<FaceDistance> faceDistanceEncodings = new();
foreach ((string _, FaceRecognitionDotNet.FaceEncoding faceRecognitionDotNetFaceEncoding) in collection) faceDistanceEncoding = new(collection[0].FaceRecognitionDotNetFaceEncoding);
{
faceDistanceEncoding = new(faceRecognitionDotNetFaceEncoding);
break;
}
foreach ((string file, FaceRecognitionDotNet.FaceEncoding faceRecognitionDotNetFaceEncoding) in collection) foreach ((string file, FaceRecognitionDotNet.FaceEncoding faceRecognitionDotNetFaceEncoding) in collection)
{ {
files.Add(file); files.Add(file);
@ -570,16 +569,38 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
} }
if (faceDistanceEncoding is null) if (faceDistanceEncoding is null)
throw new Exception(); throw new Exception();
List<FaceDistance> faceDistanceLengths = FaceRecognition.FaceDistances(faceDistanceEncodings, faceDistanceEncoding); faceDistanceLengths = FaceRecognition.FaceDistances(faceDistanceEncodings, faceDistanceEncoding);
if (faceDistanceLengths.Count != files.Count) if (faceDistanceLengths.Count != files.Count)
throw new Exception(); throw new Exception();
for (int i = 0; i < files.Count; i++) for (int i = 0; i < files.Count; i++)
{ {
if (!File.Exists(files[i]))
continue;
if (faceDistanceLengths[i].Length < locationContainerDistanceTolerance) if (faceDistanceLengths[i].Length < locationContainerDistanceTolerance)
continue; 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; string? json;
int? lastDirectoryNumber = null; int? lastDirectoryNumber = null;
DateTime dateTime = DateTime.Now; DateTime dateTime = DateTime.Now;
DateTime yesterday = DateTime.Now.AddDays(-1);
Shared.Models.FaceEncoding? modelsFaceEncoding; Shared.Models.FaceEncoding? modelsFaceEncoding;
FaceRecognitionDotNet.FaceEncoding faceRecognitionDotNetFaceEncoding; FaceRecognitionDotNet.FaceEncoding faceRecognitionDotNetFaceEncoding;
List<(string, FaceRecognitionDotNet.FaceEncoding)> collection = new(); List<(string, FaceRecognitionDotNet.FaceEncoding)> collection = new();
@ -597,7 +619,8 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
continue; continue;
if (lastDirectoryNumber is not null && locationContainer.DirectoryNumber.Value != lastDirectoryNumber.Value) 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(); collection.Clear();
} }
json = Metadata.Models.Stateless.Methods.IMetadata.GetFaceEncoding(locationContainer.Directories); 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)); collection.Add((locationContainer.File, faceRecognitionDotNetFaceEncoding));
lastDirectoryNumber = locationContainer.DirectoryNumber.Value; lastDirectoryNumber = locationContainer.DirectoryNumber.Value;
} }
if (collection.Count > 0) if (collection.Count > 2)
ReviewLocationContainerDistanceTolerance(locationContainerDistanceTolerance, dateTime, collection); ReviewLocationContainerDistanceTolerance(locationContainerDistanceTolerance, dateTime, yesterday, collection);
} }
} }