New directory structure for Face and FaceParts
This commit is contained in:
		| @ -22,8 +22,6 @@ namespace View_by_Distance.Face.Models; | ||||
| public class D_Face | ||||
| { | ||||
|  | ||||
|     public List<string> AngleBracketCollection { get; } | ||||
|  | ||||
|     protected readonly string _FileNameExtension; | ||||
|     public string FileNameExtension => _FileNameExtension; | ||||
|  | ||||
| @ -77,7 +75,6 @@ public class D_Face | ||||
|         _EncoderParameters = encoderParameters; | ||||
|         _FileNameExtension = filenameExtension; | ||||
|         _Log = Serilog.Log.ForContext<D_Face>(); | ||||
|         AngleBracketCollection = new List<string>(); | ||||
|         _HiddenImageCodecInfo = hiddenImageCodecInfo; | ||||
|         _OverrideForFaceImages = overrideForFaceImages; | ||||
|         _PropertyConfiguration = propertyConfiguration; | ||||
| @ -107,7 +104,7 @@ public class D_Face | ||||
|     public void Update(string dResultsFullGroupDirectory) | ||||
|     { | ||||
|         _FileGroups.Clear(); | ||||
|         Dictionary<string, string[]> keyValuePairs = Shared.Models.Stateless.Methods.IPath.GetKeyValuePairs(_PropertyConfiguration, dResultsFullGroupDirectory, new string[] { _PropertyConfiguration.ResultCollection }); | ||||
|         Dictionary<string, string[]> keyValuePairs = Shared.Models.Stateless.Methods.IPath.GetKeyValuePairs(_PropertyConfiguration, dResultsFullGroupDirectory, new string[] { _PropertyConfiguration.ResultCollection, _PropertyConfiguration.ResultContent }); | ||||
|         foreach (KeyValuePair<string, string[]> keyValuePair in keyValuePairs) | ||||
|             _FileGroups.Add(keyValuePair.Key, keyValuePair.Value); | ||||
|     } | ||||
| @ -279,34 +276,6 @@ public class D_Face | ||||
|         return results; | ||||
|     } | ||||
|  | ||||
|     public void SetAngleBracketCollection(string dResultsFullGroupDirectory, string sourceDirectory) | ||||
|     { | ||||
|         AngleBracketCollection.Clear(); | ||||
|         AngleBracketCollection.AddRange(IResult.GetDirectoryInfoCollection(_PropertyConfiguration, | ||||
|                                                                            sourceDirectory, | ||||
|                                                                            dResultsFullGroupDirectory, | ||||
|                                                                            contentDescription: "n png file(s) for each face found", | ||||
|                                                                            singletonDescription: string.Empty, | ||||
|                                                                            collectionDescription: "For each image a json file with all faces found", | ||||
|                                                                            converted: true)); | ||||
|     } | ||||
|  | ||||
|     public string GetFacesDirectory(string dResultsFullGroupDirectory, Item item) | ||||
|     { | ||||
|         string result; | ||||
|         bool angleBracketCollectionAny = AngleBracketCollection.Any(); | ||||
|         if (!angleBracketCollectionAny) | ||||
|         { | ||||
|             if (item.ImageFileHolder.DirectoryName is null) | ||||
|                 throw new NullReferenceException(nameof(item.ImageFileHolder.DirectoryName)); | ||||
|             SetAngleBracketCollection(dResultsFullGroupDirectory, item.ImageFileHolder.DirectoryName); | ||||
|         } | ||||
|         result = Path.Combine(AngleBracketCollection[0].Replace("<>", _PropertyConfiguration.ResultContent), item.ImageFileHolder.NameWithoutExtension); | ||||
|         if (!angleBracketCollectionAny) | ||||
|             AngleBracketCollection.Clear(); | ||||
|         return result; | ||||
|     } | ||||
|  | ||||
| #pragma warning restore CA1416 | ||||
|  | ||||
|     private static List<LocationContainer<MetadataExtractor.Directory>> GetLocationContainers(string outputResolution, List<LocationContainer<MetadataExtractor.Directory>> locationContainers, Dictionary<string, int[]> outputResolutionToResize, List<Shared.Models.Face> faces) | ||||
| @ -433,7 +402,7 @@ public class D_Face | ||||
|         return results; | ||||
|     } | ||||
|  | ||||
|     public List<(Shared.Models.Face, FileInfo?, string, bool)> SaveFaces(string f, string dResultsFullGroupDirectory, List<Tuple<string, DateTime>> subFileTuples, List<string> parseExceptions, MappingFromItem mappingFromItem, string facesDirectory, List<Shared.Models.Face> faces) | ||||
|     public List<(Shared.Models.Face, FileInfo?, string, bool)> SaveFaces(string f, string dResultsFullGroupDirectory, List<Tuple<string, DateTime>> subFileTuples, List<string> parseExceptions, MappingFromItem mappingFromItem, List<Shared.Models.Face> faces) | ||||
|     { | ||||
|         List<(Shared.Models.Face, FileInfo?, string, bool Save)> results = new(); | ||||
|         bool save; | ||||
| @ -441,8 +410,9 @@ public class D_Face | ||||
|         string deterministicHashCodeKey; | ||||
|         string[] changesFrom = new string[] { nameof(A_Property), nameof(B_Metadata), nameof(C_Resize) }; | ||||
|         List<DateTime> dateTimes = (from l in subFileTuples where changesFrom.Contains(l.Item1) select l.Item2).ToList(); | ||||
|         if (!Directory.Exists(facesDirectory)) | ||||
|             _ = Directory.CreateDirectory(facesDirectory); | ||||
|         (_, int directoryIndex) = Shared.Models.Stateless.Methods.IPath.GetDirectoryNameAndIndex(_PropertyConfiguration.ResultAllInOneSubdirectoryLength, mappingFromItem.ImageFileHolder.Name); | ||||
|         string directory = Path.Combine(_FileGroups[_PropertyConfiguration.ResultContent][directoryIndex], mappingFromItem.ImageFileHolder.NameWithoutExtension); | ||||
|         bool directoryExists = Directory.Exists(directory); | ||||
|         foreach (Shared.Models.Face face in faces) | ||||
|         { | ||||
|             save = false; | ||||
| @ -452,17 +422,23 @@ public class D_Face | ||||
|                 continue; | ||||
|             } | ||||
|             deterministicHashCodeKey = Shared.Models.Stateless.Methods.IMapping.GetDeterministicHashCodeKey(mappingFromItem.Id, face.Location, Shared.Models.Stateless.ILocation.Digits, face.OutputResolution); | ||||
|             fileInfo = new FileInfo(Path.Combine(facesDirectory, $"{deterministicHashCodeKey}{mappingFromItem.ImageFileHolder.ExtensionLowered}{_FileNameExtension}")); | ||||
|             if (_OverrideForFaceImages) | ||||
|             fileInfo = new FileInfo(Path.Combine(directory, $"{deterministicHashCodeKey}{mappingFromItem.ImageFileHolder.ExtensionLowered}{_FileNameExtension}")); | ||||
|             if (!directoryExists) | ||||
|                 save = true; | ||||
|             else if (_OverrideForFaceImages) | ||||
|                 save = true; | ||||
|             else if (!fileInfo.Exists) | ||||
|                 save = true; | ||||
|             else if (_CheckDFaceAndUpWriteDates && dateTimes.Any() && dateTimes.Max() > fileInfo.LastWriteTime) | ||||
|                 save = true; | ||||
|             results.Add(new(face, fileInfo, Path.Combine(facesDirectory, $"{deterministicHashCodeKey}{mappingFromItem.ImageFileHolder.ExtensionLowered}{_HiddenFileNameExtension}"), save)); | ||||
|             results.Add(new(face, fileInfo, Path.Combine(directory, $"{deterministicHashCodeKey}{mappingFromItem.ImageFileHolder.ExtensionLowered}{_HiddenFileNameExtension}"), save)); | ||||
|         } | ||||
|         if (results.Any(l => l.Save)) | ||||
|         { | ||||
|             if (!directoryExists) | ||||
|                 _ = Directory.CreateDirectory(directory); | ||||
|             SaveFaces(mappingFromItem.ResizedFileHolder, results); | ||||
|         } | ||||
|         return results; | ||||
|     } | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user