Bug fix and clean up
This commit is contained in:
		
							
								
								
									
										7
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
								
							| @ -43,3 +43,10 @@ | ||||
| // If id is in collection update collection to new path/name | ||||
| // If not save and add to collection | ||||
| // Nicéphore Niépce in 1826 or 182 | ||||
| // https://dotnet.microsoft.com/en-us/download | ||||
| // https://git-scm.com/ | ||||
| // https://code.visualstudio.com/ | ||||
| // https://github.com/mikepharesjr/VS-Code-Settings | ||||
| // https://github.com/davisking/dlib-models | ||||
| // https://github.com/mikepharesjr/View-by-Distance-MKLink-Console | ||||
| // https://184.103.9.214/login?folder=/home/vscode/Notes&to= | ||||
| @ -94,7 +94,7 @@ public partial class DlibDotNet | ||||
|         } | ||||
|         if (!configuration.SkipSearch) | ||||
|             Search(model, predictorModel, argZero, propertyRoot, people); | ||||
|         if (!_FirstRun && _Exceptions.Count == 0 && _ArgZeroIsConfigurationRootDirectory) | ||||
|         if (!_FirstRun && !_IsEnvironment.Development && _Exceptions.Count == 0 && _ArgZeroIsConfigurationRootDirectory) | ||||
|         { | ||||
|             long ticks = DateTime.Now.Ticks; | ||||
|             List<string[]> directoryCollections = _Rename.GetDirectoryRenameCollections(propertyConfiguration, model, predictorModel, relativePath: string.Empty, newDirectoryName: string.Empty, jsonFiles4InfoAny: false); | ||||
| @ -666,6 +666,7 @@ public partial class DlibDotNet | ||||
|     private List<Face> SetMappingThenGetDistinctFilteredFacesWithMapping(string argZero, Container[] containers) | ||||
|     { | ||||
|         List<Face> results = new(); | ||||
|         bool added; | ||||
|         Mapping mapping; | ||||
|         bool? isWrongYear; | ||||
|         Item[] filteredItems; | ||||
| @ -690,12 +691,13 @@ public partial class DlibDotNet | ||||
|                     continue; | ||||
|                 if (!item.Faces.Any()) | ||||
|                     continue; | ||||
|                 added = false; | ||||
|                 foreach (Face face in item.Faces) | ||||
|                 { | ||||
|                     if (face.RelativePath != item.RelativePath) | ||||
|                         break; | ||||
|                     if (face.FaceEncoding is null || face.Location?.NormalizedPixelPercentage is null) | ||||
|                         continue; | ||||
|                     if (distinctCheck.Contains(item.Property.Id.Value)) | ||||
|                         continue; | ||||
|                     minimumDateTime = Shared.Models.Stateless.Methods.IProperty.GetMinimumDateTime(item.Property); | ||||
|                     (isWrongYear, _) = item.Property.IsWrongYear(item.ImageFileHolder.FullName, minimumDateTime); | ||||
|                     mappingFromItem = new(item.Property.Id.Value, item.ImageFileHolder, isWrongYear, minimumDateTime, item.ResizedFileHolder); | ||||
| @ -705,7 +707,10 @@ public partial class DlibDotNet | ||||
|                     mapping = new(mappingFromItem, mappingFromLocation, mappingFromPerson); | ||||
|                     face.SetMapping(mapping); | ||||
|                     results.Add(face); | ||||
|                     added = true; | ||||
|                 } | ||||
|                 if (added) | ||||
|                     distinctCheck.Add(item.Property.Id.Value); | ||||
|             } | ||||
|         } | ||||
|         return results; | ||||
| @ -744,6 +749,7 @@ public partial class DlibDotNet | ||||
|                                                      _Configuration.LocationFactor, | ||||
|                                                      _Configuration.MapLogicSigma, | ||||
|                                                      _Configuration.MappingSaveFaceEncoding, | ||||
|                                                      _Configuration.MappingSaveNotMapped, | ||||
|                                                      _Configuration.MappingSaveMapped, | ||||
|                                                      _Configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping, | ||||
|                                                      _Configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping, | ||||
| @ -770,6 +776,7 @@ public partial class DlibDotNet | ||||
|         int totalNotMapped = mapLogic.AddToMapping(distinctFilteredFaces); | ||||
|         if (totalNotMapped > 0) | ||||
|             mapLogic.ForceSingleImageThenSaveMapping(_AppSettings.MaxDegreeOfParallelism, _Configuration.PropertyConfiguration, dFacesContentDirectory, d2ResultsFullGroupDirectory, distinctFilteredFaces, sortingContainers, totalNotMapped); | ||||
|         if (configuration.MappingSaveNotMapped) | ||||
|             mapLogic.SaveNotMappedTicks(_Configuration.PropertyConfiguration); | ||||
|         if (_Configuration.SaveShortcutsForOutputResolutions.Contains(outputResolution)) | ||||
|             mapLogic.SaveShortcuts(_Configuration.JuliePhares, distinctFilteredFaces); | ||||
| @ -821,13 +828,13 @@ public partial class DlibDotNet | ||||
|             (aResultsFullGroupDirectory, bResultsFullGroupDirectory, cResultsFullGroupDirectory, dResultsFullGroupDirectory, d2ResultsFullGroupDirectory, eResultsFullGroupDirectory) = GetResultsFullGroupDirectories(model, predictorModel, outputResolution); | ||||
|             if (_ArgZeroIsConfigurationRootDirectory && _Configuration.SaveResizedSubfiles && outputResolution == _Configuration.OutputResolutions[0] && _Configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions.Contains(outputResolution) && _Exceptions.Count == 0) | ||||
|             { | ||||
|                 DistanceThenMapLogic(argZero, ticks, people, containers, mapLogic, dResultsFullGroupDirectory, eResultsFullGroupDirectory, d2ResultsFullGroupDirectory, zResultsFullGroupDirectory, peopleDateGroupDirectory, outputResolution); | ||||
|                 if (!_Configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions.Any()) | ||||
|                     break; | ||||
|                 if (_FileKeyValuePairs.Any()) | ||||
|                     _Random.Random(_Configuration.PropertyConfiguration, _Configuration.OutputResolutions[0], _FileKeyValuePairs); | ||||
|                 DistanceThenMapLogic(argZero, ticks, people, containers, mapLogic, dResultsFullGroupDirectory, eResultsFullGroupDirectory, d2ResultsFullGroupDirectory, zResultsFullGroupDirectory, peopleDateGroupDirectory, outputResolution); | ||||
|                 if (_IsEnvironment.Development) | ||||
|                     continue; | ||||
|                 if (_FileKeyValuePairs.Any()) | ||||
|                     _Random.Random(_Configuration.PropertyConfiguration, _Configuration.OutputResolutions[0], _FileKeyValuePairs); | ||||
|                 G2_Identify identify = new(_Configuration); | ||||
|                 List<G2_Identify> identifiedCollection = identify.GetIdentifiedCollection(_Configuration.PropertyConfiguration, _IsEnvironment, _People); | ||||
|                 _People.WriteAllText(_Configuration.PropertyConfiguration, _Configuration.OutputResolutions[0], identifiedCollection); | ||||
| @ -835,6 +842,8 @@ public partial class DlibDotNet | ||||
|                 if (_Configuration.LoadOrCreateThenSaveIndex && _FilePropertiesKeyValuePairs.Any()) | ||||
|                     _Index.SetIndex(_Configuration.PropertyConfiguration, model, predictorModel, _Configuration.OutputResolutions[0], _FilePropertiesKeyValuePairs); | ||||
|             } | ||||
|             if (!_IsEnvironment.Development) | ||||
|             { | ||||
|                 _ = Shared.Models.Stateless.Methods.IPath.DeleteEmptyDirectories(Path.Combine(aResultsFullGroupDirectory, "{}")); | ||||
|                 _ = Shared.Models.Stateless.Methods.IPath.DeleteEmptyDirectories(Path.Combine(bResultsFullGroupDirectory, "{}")); | ||||
|                 _ = Shared.Models.Stateless.Methods.IPath.DeleteEmptyDirectories(Path.Combine(cResultsFullGroupDirectory, "{}")); | ||||
| @ -846,6 +855,7 @@ public partial class DlibDotNet | ||||
|                     _ = Shared.Models.Stateless.Methods.IPath.DeleteEmptyDirectories(Path.Combine(d2ResultsFullGroupDirectory, "[]")); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     internal void RenameQueue(Model? model, PredictorModel? predictorModel) => _Rename.RenameQueue(_Configuration.PropertyConfiguration, model, predictorModel); | ||||
|  | ||||
|  | ||||
| @ -33,6 +33,7 @@ public class Configuration | ||||
|     [Display(Name = "Mapped Max Index"), Required] public int? MappedMaxIndex { get; set; } | ||||
|     [Display(Name = "Mapping Save Face Encoding"), Required] public bool? MappingSaveFaceEncoding { get; set; } | ||||
|     [Display(Name = "Mapping Save Mapped"), Required] public bool? MappingSaveMapped { get; set; } | ||||
|     [Display(Name = "Mapping Save Not Mapped"), Required] public bool? MappingSaveNotMapped { get; set; } | ||||
|     [Display(Name = "Mapping Use Deterministic Hash Code Unknown Face Key Value Pairs for Add to Mapping"), Required] public bool? MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping { get; set; } | ||||
|     [Display(Name = "Mapping Use Deterministic Hash Code Unknown Face Key Value Pairs for Save Mapping"), Required] public bool? MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping { get; set; } | ||||
|     [Display(Name = "Max Items In Distance Collection"), Required] public int? MaxItemsInDistanceCollection { get; set; } | ||||
| @ -124,6 +125,8 @@ public class Configuration | ||||
|             throw new NullReferenceException(nameof(configuration.MapLogicSigma)); | ||||
|         if (configuration.MappingSaveFaceEncoding is null) | ||||
|             throw new NullReferenceException(nameof(configuration.MappingSaveFaceEncoding)); | ||||
|         if (configuration.MappingSaveNotMapped is null) | ||||
|             throw new NullReferenceException(nameof(configuration.MappingSaveNotMapped)); | ||||
|         if (configuration.MappingSaveMapped is null) | ||||
|             throw new NullReferenceException(nameof(configuration.MappingSaveMapped)); | ||||
|         if (configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping is null) | ||||
| @ -227,6 +230,7 @@ public class Configuration | ||||
|                      configuration.MapLogicSigma.Value, | ||||
|                      configuration.MappedMaxIndex, | ||||
|                      configuration.MappingSaveFaceEncoding.Value, | ||||
|                      configuration.MappingSaveNotMapped.Value, | ||||
|                      configuration.MappingSaveMapped.Value, | ||||
|                      configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping.Value, | ||||
|                      configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping.Value, | ||||
|  | ||||
| @ -31,6 +31,7 @@ public class Configuration | ||||
|     public int MapLogicSigma { init; get; } | ||||
|     public int? MappedMaxIndex { init; get; } | ||||
|     public bool MappingSaveFaceEncoding { init; get; } | ||||
|     public bool MappingSaveNotMapped { init; get; } | ||||
|     public bool MappingSaveMapped { init; get; } | ||||
|     public bool MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping { init; get; } | ||||
|     public bool MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping { init; get; } | ||||
| @ -95,6 +96,7 @@ public class Configuration | ||||
|                          int mapLogicSigma, | ||||
|                          int? mappedMaxIndex, | ||||
|                          bool mappingSaveFaceEncoding, | ||||
|                          bool mappingSaveNotMapped, | ||||
|                          bool mappingSaveMapped, | ||||
|                          bool mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping, | ||||
|                          bool mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping, | ||||
| @ -158,6 +160,7 @@ public class Configuration | ||||
|         MapLogicSigma = mapLogicSigma; | ||||
|         MappedMaxIndex = mappedMaxIndex; | ||||
|         MappingSaveFaceEncoding = mappingSaveFaceEncoding; | ||||
|         MappingSaveNotMapped = mappingSaveNotMapped; | ||||
|         MappingSaveMapped = mappingSaveMapped; | ||||
|         MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping = mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping; | ||||
|         MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping = mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping; | ||||
|  | ||||
| @ -96,8 +96,10 @@ internal class E_Distance : Shared.Models.Methods.IFaceDistance | ||||
|         List<FaceDistanceContainer> collection = new(); | ||||
|         foreach (Face face in selectedFilteredFaces) | ||||
|         { | ||||
|             if (face.FaceDistance?.Encoding is not FaceRecognitionDotNet.FaceEncoding faceEncoding || face.Mapping is null) | ||||
|             if (face.Mapping is null) | ||||
|                 throw new NotSupportedException(); | ||||
|             if (face.FaceDistance?.Encoding is not FaceRecognitionDotNet.FaceEncoding faceEncoding) | ||||
|                 continue; | ||||
|             faceDistance = new(face.Mapping.MappingFromLocation.Confidence, faceEncoding, face.Mapping.MappingFromItem.Id, face.Mapping.MappingFromItem.IsWrongYear, face.Mapping.MappingFromItem.MinimumDateTime, face.Mapping.MappingFromLocation.NormalizedPixelPercentage); | ||||
|             faceDistanceContainer = new(face, faceDistance); | ||||
|             collection.Add(faceDistanceContainer); | ||||
|  | ||||
| @ -71,6 +71,7 @@ | ||||
|       "MappedMaxIndex": 1034720, | ||||
|       "MappingSaveFaceEncoding": false, | ||||
|       "MappingSaveMapped": false, | ||||
|       "MappingSaveNotMapped": false, | ||||
|       "MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping": false, | ||||
|       "MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping": false, | ||||
|       "MaxImagesInDirectoryForTopLevelFirstPass": 10, | ||||
|  | ||||
| @ -71,6 +71,7 @@ | ||||
|       "MappedMaxIndex": 1034720, | ||||
|       "MappingSaveFaceEncoding": false, | ||||
|       "MappingSaveMapped": false, | ||||
|       "MappingSaveNotMapped": false, | ||||
|       "MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping": false, | ||||
|       "MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping": false, | ||||
|       "MaxImagesInDirectoryForTopLevelFirstPass": 10, | ||||
|  | ||||
| @ -71,6 +71,7 @@ | ||||
|       "MappedMaxIndex": 1034720, | ||||
|       "MappingSaveFaceEncoding": false, | ||||
|       "MappingSaveMapped": false, | ||||
|       "MappingSaveNotMapped": false, | ||||
|       "MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping": false, | ||||
|       "MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping": false, | ||||
|       "MaxImagesInDirectoryForTopLevelFirstPass": 10, | ||||
|  | ||||
| @ -14,6 +14,7 @@ public class Configuration | ||||
|     public int LocationFactor { init; get; } | ||||
|     public int MapLogicSigma { init; get; } | ||||
|     public bool MappingSaveFaceEncoding { init; get; } | ||||
|     public bool MappingSaveNotMapped { init; get; } | ||||
|     public bool MappingSaveMapped { init; get; } | ||||
|     public bool MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping { init; get; } | ||||
|     public bool MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping { init; get; } | ||||
| @ -36,6 +37,7 @@ public class Configuration | ||||
|                          int locationFactor, | ||||
|                          int mapLogicSigma, | ||||
|                          bool mappingSaveFaceEncoding, | ||||
|                          bool mappingSaveNotMapped, | ||||
|                          bool mappingSaveMapped, | ||||
|                          bool mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping, | ||||
|                          bool mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping, | ||||
| @ -57,6 +59,7 @@ public class Configuration | ||||
|         LocationFactor = locationFactor; | ||||
|         MapLogicSigma = mapLogicSigma; | ||||
|         MappingSaveFaceEncoding = mappingSaveFaceEncoding; | ||||
|         MappingSaveNotMapped = mappingSaveNotMapped; | ||||
|         MappingSaveMapped = mappingSaveMapped; | ||||
|         MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping = mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping; | ||||
|         MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping = mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping; | ||||
|  | ||||
| @ -32,10 +32,7 @@ public class MapLogic | ||||
|     private readonly string _ResizeFilenameExtension; | ||||
|     private readonly string _FacePartsFilenameExtension; | ||||
|     private readonly string _FacesHiddenFilenameExtension; | ||||
|     private readonly string _ZPropertyHolderContentDirectory; | ||||
|     private readonly string _ZPropertyHolderContentTicksDirectory; | ||||
|     private readonly string _ZPropertyHolderSingletonTicksDirectory; | ||||
|     private readonly Property.Models.Configuration _PropertyConfiguration; | ||||
|  | ||||
|     public MapLogic(int maxDegreeOfParallelism, Property.Models.Configuration propertyConfiguration, string resizeFilenameExtension, string facesFilenameExtension, string facesHiddenFilenameExtension, string facePartsFilenameExtension, long ticks, Person[] people, string peopleDateGroupDirectory, string zResultsFullGroupDirectory, Configuration? configuration, List<Face> distinctFilteredFaces, Shared.Models.Methods.IFaceDistance? distance) | ||||
|     { | ||||
| @ -43,14 +40,17 @@ public class MapLogic | ||||
|         _PersonKeysRanges = new(); | ||||
|         _Configuration = configuration; | ||||
|         _Log = Serilog.Log.ForContext<MapLogic>(); | ||||
|         _PropertyConfiguration = propertyConfiguration; | ||||
|         _FacesFilenameExtension = facesFilenameExtension; | ||||
|         _MaxDegreeOfParallelism = maxDegreeOfParallelism; | ||||
|         _ResizeFilenameExtension = resizeFilenameExtension; | ||||
|         _FacePartsFilenameExtension = facePartsFilenameExtension; | ||||
|         _FacesHiddenFilenameExtension = facesHiddenFilenameExtension; | ||||
|         if (_Log is null) | ||||
|         { } | ||||
|         if (propertyConfiguration.VerifyToSeason is null || !propertyConfiguration.VerifyToSeason.Any()) | ||||
|             throw new Exception(); | ||||
|         if (_MaxDegreeOfParallelism == 0) | ||||
|         { } | ||||
|         string json; | ||||
|         string[] files; | ||||
|         string fullPath; | ||||
| @ -60,15 +60,13 @@ public class MapLogic | ||||
|         Dictionary<int, int[]>? keyValuePairs; | ||||
|         List<KeyValuePair<int, int[]>>? collection; | ||||
|         Dictionary<int, int[]> indicesFromNew = new(); | ||||
|         string? rootDirectoryParent = Path.GetDirectoryName(propertyConfiguration.RootDirectory); | ||||
|         Dictionary<long, (string, int?, PersonBirthday[], long)> peopleKeyValuePairs = new(); | ||||
|         string zPropertyHolderContentDirectory = Path.Combine(zResultsFullGroupDirectory, "()"); | ||||
|         string zPropertyHolderSingletonDirectory = Path.Combine(zResultsFullGroupDirectory, "{}"); | ||||
|         string? rootDirectoryParent = Path.GetDirectoryName(propertyConfiguration.RootDirectory); | ||||
|         Dictionary<int, Dictionary<int, PersonBirthday[]>> idThenNormalizedPixelPercentageKeyValuePairs = new(); | ||||
|         string zPropertyHolderContentTicksDirectory = Path.Combine(zPropertyHolderContentDirectory, $"({ticks})"); | ||||
|         string zPropertyHolderPeopleContentDirectory = Path.Combine(peopleDateGroupDirectory, "()", "(KnownPeople)"); | ||||
|         Dictionary<int, Dictionary<int, PersonBirthday[]>> incorrectIdThenNormalizedPixelPercentageKeyValuePairs = new(); | ||||
|         string zPropertyHolderSingletonTicksDirectory = Path.Combine(zPropertyHolderSingletonDirectory, string.Concat('{', _Ticks, '}')); | ||||
|         for (int i = 1; i < 5; i++) | ||||
|             _ = IPath.DeleteEmptyDirectories(zPropertyHolderContentDirectory); | ||||
|         _ = IPath.DeleteEmptyDirectories(zPropertyHolderContentDirectory); | ||||
| @ -114,9 +112,7 @@ public class MapLogic | ||||
|         _SkipCollection = skipCollection; | ||||
|         _NotMappedPersonKeys = notMappedTicks; | ||||
|         _PeopleKeyValuePairs = peopleKeyValuePairs; | ||||
|         _ZPropertyHolderContentDirectory = zPropertyHolderContentDirectory; | ||||
|         _ZPropertyHolderContentTicksDirectory = zPropertyHolderContentTicksDirectory; | ||||
|         _ZPropertyHolderSingletonTicksDirectory = zPropertyHolderSingletonTicksDirectory; | ||||
|         _IdThenNormalizedPixelPercentageKeyValuePairs = idThenNormalizedPixelPercentageKeyValuePairs; | ||||
|         _IncorrectIdThenNormalizedPixelPercentageKeyValuePairs = incorrectIdThenNormalizedPixelPercentageKeyValuePairs; | ||||
|     } | ||||
| @ -139,17 +135,6 @@ public class MapLogic | ||||
|  | ||||
|     public bool Skip(double deterministicHashCodeKey) => _SkipCollection.Contains(deterministicHashCodeKey); | ||||
|  | ||||
|     private long LogDelta(long ticks, string? methodName) | ||||
|     { | ||||
|         long result; | ||||
|         if (_Log is null) | ||||
|             throw new NullReferenceException(nameof(_Log)); | ||||
|         double delta = new TimeSpan(DateTime.Now.Ticks - ticks).TotalMilliseconds; | ||||
|         _Log.Debug($"{methodName} took {Math.Floor(delta)} millisecond(s)"); | ||||
|         result = DateTime.Now.Ticks; | ||||
|         return result; | ||||
|     } | ||||
|  | ||||
|     private List<(long, long, long, long)> GetPersonKeysRangesCollection(PersonBirthday[] personBirthdays) | ||||
|     { | ||||
|         List<(long, long, long, long)> results = new(); | ||||
| @ -295,32 +280,6 @@ public class MapLogic | ||||
|         return result; | ||||
|     } | ||||
|  | ||||
|     private Dictionary<int, PersonBirthday[]> GetKeyValuePairs(string json) | ||||
|     { | ||||
|         if (_Configuration is null) | ||||
|             throw new NullReferenceException(nameof(_Configuration)); | ||||
|         Dictionary<int, PersonBirthday[]> results = new(); | ||||
|         PersonBirthday? personBirthday; | ||||
|         List<PersonBirthday> personBirthdays; | ||||
|         Dictionary<int, string[]>? keyValuePairs = JsonSerializer.Deserialize<Dictionary<int, string[]>>(json); | ||||
|         if (keyValuePairs is null) | ||||
|             throw new NullReferenceException(nameof(keyValuePairs)); | ||||
|         foreach (KeyValuePair<int, string[]> keyValuePair in keyValuePairs) | ||||
|         { | ||||
|             personBirthdays = new(); | ||||
|             foreach (string personKey in keyValuePair.Value) | ||||
|             { | ||||
|                 personBirthday = IPersonBirthday.GetPersonBirthday(_Configuration.PersonBirthdayFormat, personKey); | ||||
|                 if (personBirthday is null) | ||||
|                     continue; | ||||
|             } | ||||
|             if (!personBirthdays.Any()) | ||||
|                 continue; | ||||
|             results.Add(keyValuePair.Key, personBirthdays.ToArray()); | ||||
|         } | ||||
|         return results; | ||||
|     } | ||||
|  | ||||
|     public int AddToMapping(List<Face> distinctFilteredFaces) | ||||
|     { | ||||
|         if (_Configuration is null) | ||||
| @ -527,32 +486,6 @@ public class MapLogic | ||||
|         return results; | ||||
|     } | ||||
|  | ||||
|     private static Dictionary<int, Dictionary<int, Face>> Convert(List<(int Id, Face Face)> collection) | ||||
|     { | ||||
|         Dictionary<int, Dictionary<int, Face>> results = new(); | ||||
|         Dictionary<int, Face> keyValuePairs; | ||||
|         foreach ((int id, Face face) in collection) | ||||
|         { | ||||
|             if (!results.ContainsKey(id)) | ||||
|                 results.Add(id, new()); | ||||
|             if (face.Location?.NormalizedPixelPercentage is null) | ||||
|                 throw new NotSupportedException(); | ||||
|             keyValuePairs = results[id]; | ||||
|             if (keyValuePairs.ContainsKey(face.Location.NormalizedPixelPercentage.Value)) | ||||
|                 continue; | ||||
|             results[id].Add(face.Location.NormalizedPixelPercentage.Value, face); | ||||
|         } | ||||
|         return results; | ||||
|     } | ||||
|  | ||||
|     private Dictionary<int, List<int>> GetUsedIdThenNormalizedPixelPercentageKeyValuePairs() | ||||
|     { | ||||
|         Dictionary<int, List<int>> results = new(); | ||||
|         foreach (KeyValuePair<int, Dictionary<int, PersonBirthday[]>> keyValuePair in _IdThenNormalizedPixelPercentageKeyValuePairs) | ||||
|             results.Add(keyValuePair.Key, (from l in keyValuePair.Value select l.Key).ToList()); | ||||
|         return results; | ||||
|     } | ||||
|  | ||||
|     private int UpdateFromSortingContainers(SortingContainer[] sortingContainers) | ||||
|     { | ||||
|         if (_Configuration is null) | ||||
| @ -687,11 +620,11 @@ public class MapLogic | ||||
|                 { | ||||
|                     _Mapping => nameof(_Mapping), | ||||
|                     _Sorting => nameof(_Sorting), | ||||
|                     _ForceSingleImage => nameof(MapLogic.ForceSingleImage), | ||||
|                     _ForceSingleImage => nameof(_ForceSingleImage), | ||||
|                     _ => throw new NotImplementedException() | ||||
|                 }; | ||||
|             } | ||||
|             directory = Path.Combine(_ZPropertyHolderContentTicksDirectory, by, personKeyFormatted, face.Mapping.MappingFromPerson.SegmentB); | ||||
|             directory = Path.Combine(_ZPropertyHolderContentTicksDirectory, by[1..], personKeyFormatted, face.Mapping.MappingFromPerson.SegmentB); | ||||
|             if (!keyValuePairs.ContainsKey(directory)) | ||||
|                 keyValuePairs.Add(directory, 0); | ||||
|             keyValuePairs[directory]++; | ||||
| @ -704,8 +637,8 @@ public class MapLogic | ||||
|                 personDirectory = Path.Combine(directory, face.Mapping.MappingFromPerson.DisplayDirectoryName[..1], "lnk"); | ||||
|             saveContainer = new(personDirectory); | ||||
|             results.Add(saveContainer); | ||||
|             facesDirectory = string.Concat(dFacesContentDirectory, Path.Combine(directoryName, face.Mapping.MappingFromItem.ImageFileHolder.NameWithoutExtension)); | ||||
|             facePartsDirectory = string.Concat(d2ResultsFullGroupDirectory, Path.Combine(directoryName, face.Mapping.MappingFromItem.ImageFileHolder.NameWithoutExtension)); | ||||
|             facesDirectory = Path.Combine($"{dFacesContentDirectory}{directoryName}", face.Mapping.MappingFromItem.ImageFileHolder.NameWithoutExtension); | ||||
|             facePartsDirectory = Path.Combine($"{d2ResultsFullGroupDirectory}{directoryName}", face.Mapping.MappingFromItem.ImageFileHolder.NameWithoutExtension); | ||||
|             checkFile = Path.Combine(directory, $"{face.Mapping.MappingFromLocation.DeterministicHashCodeKey}{face.Mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}"); | ||||
|             faceFileHolder = new(Path.Combine(facesDirectory, $"{face.Mapping.MappingFromLocation.DeterministicHashCodeKey}{face.Mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}{_FacesFilenameExtension}")); | ||||
|             hiddenFaceFileHolder = new(Path.Combine(facesDirectory, $"{face.Mapping.MappingFromLocation.DeterministicHashCodeKey}{face.Mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}{_FacesHiddenFilenameExtension}")); | ||||
|  | ||||
| @ -157,7 +157,7 @@ public class FaceFileSystem : FileSystem, Properties.IFaceFileSystem | ||||
|         string sourceFullFileName = string.Concat(cResizeContent, face.RelativePath); | ||||
|         if (directoryName is null) | ||||
|             throw new Exception(); | ||||
|         string faceFullFileName = string.Concat(dFacesContentDirectory, Path.Combine(directoryName, fileNameWithoutExtension, $"{locationIndex} - {fileNameWithoutExtension}.png")); | ||||
|         string faceFullFileName = Path.Combine($"{dFacesContentDirectory}{directoryName}", fileNameWithoutExtension, $"{locationIndex} - {fileNameWithoutExtension}.png"); | ||||
|         string faceRelativePath = string.Concat(requestPath, new Uri(faceFullFileName).AbsoluteUri[rootResultsDirectoryAbsoluteUriLength..]); | ||||
|         string sourceRelativePath = string.Concat(requestPath, new Uri(sourceFullFileName).AbsoluteUri[rootResultsDirectoryAbsoluteUriLength..]); | ||||
|         FileInfo fileInfo = new(sourceFullFileName); | ||||
|  | ||||
| @ -68,7 +68,7 @@ internal abstract class FaceFileSystem | ||||
|                 continue; | ||||
|             fileNameWithoutExtension = Path.GetFileNameWithoutExtension(face[i].RelativePath); | ||||
|             jsonFileName = string.Concat(locationIndex.Value, " - ", fileNameWithoutExtension, extension); | ||||
|             eDistanceCollectionFileFullName = string.Concat(tuple.E_DistanceCollectionDirectory, Path.Combine(directoryName, fileNameWithoutExtension, jsonFileName)); | ||||
|             eDistanceCollectionFileFullName = Path.Combine($"{tuple.E_DistanceCollectionDirectory}{directoryName}", fileNameWithoutExtension, jsonFileName); | ||||
|             if (i == 0 && extension is ".json" && eDistanceCollectionFileFullName != selectedFileFullName) | ||||
|                 throw new Exception(); | ||||
|             fileInfo = new(eDistanceCollectionFileFullName); | ||||
|  | ||||
| @ -33,6 +33,7 @@ public class Configuration | ||||
|     [Display(Name = "Mapped Max Index"), Required] public int? MappedMaxIndex { get; set; } | ||||
|     [Display(Name = "Mapping Save Face Encoding"), Required] public bool? MappingSaveFaceEncoding { get; set; } | ||||
|     [Display(Name = "Mapping Save Mapped"), Required] public bool? MappingSaveMapped { get; set; } | ||||
|     [Display(Name = "Mapping Save Not Mapped"), Required] public bool? MappingSaveNotMapped { get; set; } | ||||
|     [Display(Name = "Mapping Use Deterministic Hash Code Unknown Face Key Value Pairs for Add to Mapping"), Required] public bool? MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping { get; set; } | ||||
|     [Display(Name = "Mapping Use Deterministic Hash Code Unknown Face Key Value Pairs for Save Mapping"), Required] public bool? MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping { get; set; } | ||||
|     [Display(Name = "Max Items In Distance Collection"), Required] public int? MaxItemsInDistanceCollection { get; set; } | ||||
| @ -124,6 +125,8 @@ public class Configuration | ||||
|             throw new NullReferenceException(nameof(configuration.MapLogicSigma)); | ||||
|         if (configuration.MappingSaveFaceEncoding is null) | ||||
|             throw new NullReferenceException(nameof(configuration.MappingSaveFaceEncoding)); | ||||
|         if (configuration.MappingSaveNotMapped is null) | ||||
|             throw new NullReferenceException(nameof(configuration.MappingSaveNotMapped)); | ||||
|         if (configuration.MappingSaveMapped is null) | ||||
|             throw new NullReferenceException(nameof(configuration.MappingSaveMapped)); | ||||
|         if (configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping is null) | ||||
| @ -227,6 +230,7 @@ public class Configuration | ||||
|                      configuration.MapLogicSigma.Value, | ||||
|                      configuration.MappedMaxIndex, | ||||
|                      configuration.MappingSaveFaceEncoding.Value, | ||||
|                      configuration.MappingSaveNotMapped.Value, | ||||
|                      configuration.MappingSaveMapped.Value, | ||||
|                      configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping.Value, | ||||
|                      configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping.Value, | ||||
|  | ||||
| @ -31,6 +31,7 @@ public class Configuration | ||||
|     public int MapLogicSigma { init; get; } | ||||
|     public int? MappedMaxIndex { init; get; } | ||||
|     public bool MappingSaveFaceEncoding { init; get; } | ||||
|     public bool MappingSaveNotMapped { init; get; } | ||||
|     public bool MappingSaveMapped { init; get; } | ||||
|     public bool MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping { init; get; } | ||||
|     public bool MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping { init; get; } | ||||
| @ -95,6 +96,7 @@ public class Configuration | ||||
|                          int mapLogicSigma, | ||||
|                          int? mappedMaxIndex, | ||||
|                          bool mappingSaveFaceEncoding, | ||||
|                          bool mappingSaveNotMapped, | ||||
|                          bool mappingSaveMapped, | ||||
|                          bool mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping, | ||||
|                          bool mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping, | ||||
| @ -158,6 +160,7 @@ public class Configuration | ||||
|         MapLogicSigma = mapLogicSigma; | ||||
|         MappedMaxIndex = mappedMaxIndex; | ||||
|         MappingSaveFaceEncoding = mappingSaveFaceEncoding; | ||||
|         MappingSaveNotMapped = mappingSaveNotMapped; | ||||
|         MappingSaveMapped = mappingSaveMapped; | ||||
|         MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping = mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping; | ||||
|         MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping = mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user