FilePath ready to test
This commit is contained in:
@ -11,7 +11,7 @@ namespace View_by_Distance.Distance.Models;
|
||||
public partial class E_Distance : IDistance<MetadataExtractor.Directory>
|
||||
{
|
||||
|
||||
internal record Record(string File, FaceRecognitionDotNet.FaceEncoding FaceRecognitionDotNetFaceEncoding);
|
||||
internal record Record(FilePath FilePath, FaceRecognitionDotNet.FaceEncoding FaceRecognitionDotNetFaceEncoding);
|
||||
|
||||
private readonly List<string> _Moved;
|
||||
private readonly List<double?> _Debug;
|
||||
@ -40,11 +40,11 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
|
||||
_RangeDistanceToleranceAverage = rangeDistanceTolerance.Average();
|
||||
}
|
||||
|
||||
private static void MoveUnableToMatch(string file)
|
||||
private static void MoveUnableToMatch(FilePath filePath)
|
||||
{
|
||||
string checkFile = $"{file}.unk";
|
||||
if (File.Exists(file) && !File.Exists(checkFile))
|
||||
File.Move(file, checkFile);
|
||||
string checkFile = $"{filePath.FullName}.unk";
|
||||
if (File.Exists(filePath.FullName) && !File.Exists(checkFile))
|
||||
File.Move(filePath.FullName, checkFile);
|
||||
}
|
||||
|
||||
private FaceDistanceContainer[] GetFaceDistanceContainers(MappingFromItem mappingFromItem, List<Face> intersectFaces)
|
||||
@ -150,7 +150,7 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
|
||||
return results;
|
||||
}
|
||||
|
||||
private static FileInfo? CheckFileThenGetFileInfo(string facesFileNameExtension, MappingFromItem mappingFromItem, string file, List<(Face, double?)> checkFaces)
|
||||
private static FileInfo? CheckFileThenGetFileInfo(string facesFileNameExtension, FilePath filePath, MappingFromItem mappingFromItem, string file, List<(Face, double?)> checkFaces)
|
||||
{
|
||||
FileInfo? result = null;
|
||||
string checkFile;
|
||||
@ -165,7 +165,7 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
|
||||
mappedFaceDirectory = Path.GetDirectoryName(file);
|
||||
if (mappedFaceDirectory is null)
|
||||
throw new NotSupportedException();
|
||||
deterministicHashCodeKey = Shared.Models.Stateless.Methods.IMapping.GetDeterministicHashCodeKey(mappingFromItem.Id, face.Location, Shared.Models.Stateless.ILocation.Digits, face.OutputResolution);
|
||||
deterministicHashCodeKey = Shared.Models.Stateless.Methods.IMapping.GetDeterministicHashCodeKey(filePath, face.Location, Shared.Models.Stateless.ILocation.Digits, face.OutputResolution);
|
||||
checkFile = Path.Combine(mappedFaceDirectory, $"{deterministicHashCodeKey}{mappingFromItem.ImageFileHolder.ExtensionLowered}{facesFileNameExtension}");
|
||||
if (checkFile == file)
|
||||
continue;
|
||||
@ -201,10 +201,9 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
|
||||
}
|
||||
}
|
||||
|
||||
public void LookForMatchFacesAndPossiblyRename(string facesFileNameExtension, MappingFromItem mappingFromItem, List<Face> faces, ReadOnlyCollection<LocationContainer<MetadataExtractor.Directory>> locationContainers)
|
||||
public void LookForMatchFacesAndPossiblyRename(string facesFileNameExtension, FilePath filePath, MappingFromItem mappingFromItem, List<Face> faces, ReadOnlyCollection<LocationContainer<MetadataExtractor.Directory>> locationContainers)
|
||||
{
|
||||
string? json;
|
||||
string fileName;
|
||||
string[] matches;
|
||||
FileInfo? fileInfo;
|
||||
List<Face> intersectFaces;
|
||||
@ -215,10 +214,9 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
|
||||
checkFaces.Clear();
|
||||
foreach (LocationContainer<MetadataExtractor.Directory> locationContainer in locationContainers)
|
||||
{
|
||||
if (_Renamed.Contains(locationContainer.File))
|
||||
if (_Renamed.Contains(locationContainer.FilePath.FullName))
|
||||
continue;
|
||||
fileName = Path.GetFileName(locationContainer.File);
|
||||
if (locationContainer.FromDistanceContent && _DuplicateMappedFaceFiles.Contains(fileName))
|
||||
if (locationContainer.FromDistanceContent && _DuplicateMappedFaceFiles.Contains(locationContainer.FilePath.Name))
|
||||
continue;
|
||||
checkFaces.Clear();
|
||||
if (locationContainer.Directories.Count == 0)
|
||||
@ -231,7 +229,7 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
|
||||
if (json is null)
|
||||
{
|
||||
if (_DistanceMoveUnableToMatch)
|
||||
MoveUnableToMatch(locationContainer.File);
|
||||
MoveUnableToMatch(locationContainer.FilePath);
|
||||
continue;
|
||||
}
|
||||
if (filteredFaces.Length > 0)
|
||||
@ -254,42 +252,42 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
|
||||
if (checkFaces.Count == 0)
|
||||
{
|
||||
if (_DistanceMoveUnableToMatch)
|
||||
MoveUnableToMatch(locationContainer.File);
|
||||
MoveUnableToMatch(locationContainer.FilePath);
|
||||
continue;
|
||||
}
|
||||
if (checkFaces.Count != 1)
|
||||
{
|
||||
if (_DistanceMoveUnableToMatch)
|
||||
MoveUnableToMatch(locationContainer.File);
|
||||
MoveUnableToMatch(locationContainer.FilePath);
|
||||
continue;
|
||||
}
|
||||
fileInfo = CheckFileThenGetFileInfo(facesFileNameExtension, mappingFromItem, locationContainer.File, checkFaces);
|
||||
fileInfo = CheckFileThenGetFileInfo(facesFileNameExtension, filePath, mappingFromItem, locationContainer.FilePath.FullName, checkFaces);
|
||||
if (fileInfo is not null)
|
||||
{
|
||||
if (_DistanceRenameToMatch && fileInfo is not null)
|
||||
{
|
||||
if (fileInfo.Exists)
|
||||
File.Delete(locationContainer.File);
|
||||
File.Delete(locationContainer.FilePath.FullName);
|
||||
else
|
||||
File.Move(locationContainer.File, fileInfo.FullName);
|
||||
File.WriteAllText($"{fileInfo.FullName}.old", $"{fileInfo.FullName}{Environment.NewLine}{locationContainer.File}");
|
||||
_Renamed.Add(locationContainer.File);
|
||||
File.Move(locationContainer.FilePath.FullName, fileInfo.FullName);
|
||||
File.WriteAllText($"{fileInfo.FullName}.old", $"{fileInfo.FullName}{Environment.NewLine}{locationContainer.FilePath.FullName}");
|
||||
_Renamed.Add(locationContainer.FilePath.FullName);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (_AllMappedFaceFileNames.Contains(fileName))
|
||||
if (_AllMappedFaceFileNames.Contains(locationContainer.FilePath.Name))
|
||||
{
|
||||
lock (_AllMappedFaceFiles)
|
||||
matches = (from l in _AllMappedFaceFiles where l != locationContainer.File && Path.GetFileName(l) == fileName select l).ToArray();
|
||||
matches = (from l in _AllMappedFaceFiles where l != locationContainer.FilePath.FullName && Path.GetFileName(l) == locationContainer.FilePath.Name select l).ToArray();
|
||||
if (locationContainer.FromDistanceContent && matches.Length > 0)
|
||||
AppendMatchingDuplicates(locationContainer.File, matches);
|
||||
AppendMatchingDuplicates(locationContainer.FilePath.FullName, matches);
|
||||
}
|
||||
if (!locationContainer.FromDistanceContent)
|
||||
continue;
|
||||
lock (_AllMappedFaceFiles)
|
||||
_AllMappedFaceFiles.Add(locationContainer.File);
|
||||
_AllMappedFaceFiles.Add(locationContainer.FilePath.FullName);
|
||||
lock (_AllMappedFaceFileNames)
|
||||
_AllMappedFaceFileNames.Add(fileName);
|
||||
_AllMappedFaceFileNames.Add(locationContainer.FilePath.Name);
|
||||
}
|
||||
}
|
||||
|
||||
@ -491,13 +489,13 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
|
||||
List<FaceDistance> faceDistanceEncodings = [];
|
||||
foreach (Record record in records)
|
||||
{
|
||||
files.Add(record.File);
|
||||
files.Add(record.FilePath.FullName);
|
||||
faceDistanceEncodings.Add(new(record.FaceRecognitionDotNetFaceEncoding));
|
||||
}
|
||||
foreach (Record record in records)
|
||||
{
|
||||
mappedRelations = [];
|
||||
fileHolder = new(record.File);
|
||||
fileHolder = Shared.Models.Stateless.Methods.IFileHolder.Get(record.FilePath.FullName);
|
||||
if (files.Count > 1)
|
||||
{
|
||||
faceDistanceEncoding = new(record.FaceRecognitionDotNetFaceEncoding);
|
||||
@ -538,7 +536,7 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
|
||||
if (modelsFaceEncoding is null)
|
||||
throw new NotSupportedException();
|
||||
faceRecognitionDotNetFaceEncoding = FaceRecognition.LoadFaceEncoding(modelsFaceEncoding.RawEncoding);
|
||||
records.Add(new(locationContainer.File, faceRecognitionDotNetFaceEncoding));
|
||||
records.Add(new(locationContainer.FilePath, faceRecognitionDotNetFaceEncoding));
|
||||
}
|
||||
result = GetRelationCollections(faceDistancePermyriad, locationContainerDistanceTake, locationContainerDistanceTolerance, records);
|
||||
return result;
|
||||
|
Reference in New Issue
Block a user