diff --git a/Distance/Models/_E_Distance.cs b/Distance/Models/_E_Distance.cs index d93e9ef..98b3490 100644 --- a/Distance/Models/_E_Distance.cs +++ b/Distance/Models/_E_Distance.cs @@ -439,8 +439,6 @@ public partial class E_Distance : IDistance continue; if (faceDistanceContainer.Face.Mapping.MappingFromFilter.IsFocusRelativePath is not null && !faceDistanceContainer.Face.Mapping.MappingFromFilter.IsFocusRelativePath.Value) continue; - if (faceDistanceContainer.Face.Mapping.MappingFromFilter.IsIgnoreRelativePath is not null && faceDistanceContainer.Face.Mapping.MappingFromFilter.IsIgnoreRelativePath.Value) - continue; results.Add(faceDistanceContainer); } return results.ToArray(); diff --git a/Drag-Drop-Search/Models/Binder/Configuration.cs b/Drag-Drop-Search/Models/Binder/Configuration.cs index 752653a..89b741d 100644 --- a/Drag-Drop-Search/Models/Binder/Configuration.cs +++ b/Drag-Drop-Search/Models/Binder/Configuration.cs @@ -18,7 +18,6 @@ public class Configuration [Display(Name = "Force Metadata Last Write Time to Creation Time"), Required] public bool? ForceMetadataLastWriteTimeToCreationTime { get; set; } [Display(Name = "Force Resize Last Write Time to Creation Time"), Required] public bool? ForceResizeLastWriteTimeToCreationTime { get; set; } [Display(Name = "Ignore Extensions"), Required] public string[] IgnoreExtensions { get; set; } - [Display(Name = "Ignore Relative Paths"), Required] public string[] IgnoreRelativePaths { get; set; } [Display(Name = "Julie Phares Copy Birthdays"), Required] public string[] JLinks { get; set; } [Display(Name = "Load Or Create Then Save Distance Results"), Required] public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { get; set; } [Display(Name = "Load Or Create Then Save Image Faces Results"), Required] public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { get; set; } @@ -80,8 +79,6 @@ public class Configuration throw new NullReferenceException(nameof(configuration.ForceResizeLastWriteTimeToCreationTime)); if (configuration.IgnoreExtensions is null) throw new NullReferenceException(nameof(configuration.IgnoreExtensions)); - if (configuration.IgnoreRelativePaths is null) - throw new NullReferenceException(nameof(configuration.IgnoreRelativePaths)); configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions ??= Array.Empty(); configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions ??= Array.Empty(); if (configuration.MixedYearRelativePaths is null) @@ -136,7 +133,6 @@ public class Configuration configuration.ForceMetadataLastWriteTimeToCreationTime.Value, configuration.ForceResizeLastWriteTimeToCreationTime.Value, configuration.IgnoreExtensions, - configuration.IgnoreRelativePaths, configuration.JLinks, configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions, configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions, diff --git a/Drag-Drop-Search/Models/Configuration.cs b/Drag-Drop-Search/Models/Configuration.cs index 6fdd0b3..a48b0f3 100644 --- a/Drag-Drop-Search/Models/Configuration.cs +++ b/Drag-Drop-Search/Models/Configuration.cs @@ -17,7 +17,6 @@ public class Configuration public bool ForceMetadataLastWriteTimeToCreationTime { init; get; } public bool ForceResizeLastWriteTimeToCreationTime { init; get; } public string[] IgnoreExtensions { init; get; } - public string[] IgnoreRelativePaths { init; get; } public string[] JLinks { init; get; } public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { init; get; } public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { init; get; } @@ -59,7 +58,6 @@ public class Configuration bool forceMetadataLastWriteTimeToCreationTime, bool forceResizeLastWriteTimeToCreationTime, string[] ignoreExtensions, - string[] ignoreRelativePaths, string[] jLinks, string[] loadOrCreateThenSaveDistanceResultsForOutputResolutions, string[] loadOrCreateThenSaveImageFacesResultsForOutputResolutions, @@ -100,7 +98,6 @@ public class Configuration ForceMetadataLastWriteTimeToCreationTime = forceMetadataLastWriteTimeToCreationTime; ForceResizeLastWriteTimeToCreationTime = forceResizeLastWriteTimeToCreationTime; IgnoreExtensions = ignoreExtensions; - IgnoreRelativePaths = ignoreRelativePaths; JLinks = jLinks; LoadOrCreateThenSaveDistanceResultsForOutputResolutions = loadOrCreateThenSaveDistanceResultsForOutputResolutions; LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = loadOrCreateThenSaveImageFacesResultsForOutputResolutions; diff --git a/Drag-Drop-Search/Program.cs b/Drag-Drop-Search/Program.cs index 06f1161..520dec1 100644 --- a/Drag-Drop-Search/Program.cs +++ b/Drag-Drop-Search/Program.cs @@ -27,24 +27,6 @@ public class Program return results.ToArray(); } - private static bool IsIgnoreRelativePath(Models.Configuration configuration, string directory) - { - bool result = false; - string? checkDirectory = Path.GetFullPath(directory); - for (int i = 0; i < int.MaxValue; i++) - { - if (configuration.IgnoreRelativePaths.Contains(Path.GetFileName(checkDirectory))) - { - result = true; - break; - } - checkDirectory = Path.GetDirectoryName(checkDirectory); - if (string.IsNullOrEmpty(checkDirectory) || checkDirectory == configuration.PropertyConfiguration.RootDirectory) - break; - } - return result; - } - public static List GetItemCollection(Models.Configuration configuration, Container[] containers) { List results = new(); @@ -53,8 +35,6 @@ public class Program { if (!container.Items.Any()) continue; - if (configuration.IgnoreRelativePaths.Any(l => container.SourceDirectory.Contains(l)) && IsIgnoreRelativePath(configuration, container.SourceDirectory)) - continue; filteredItems = GetFilterItems(configuration, container); if (!filteredItems.Any()) continue; diff --git a/Duplicate-Search/DuplicateSearch.cs b/Duplicate-Search/DuplicateSearch.cs index b66226c..53273d8 100644 --- a/Duplicate-Search/DuplicateSearch.cs +++ b/Duplicate-Search/DuplicateSearch.cs @@ -140,7 +140,7 @@ public class DuplicateSearch (f, containers) = Shared.Models.Stateless.Methods.IContainer.GetContainers(configuration, aPropertySingletonDirectory); } if (appSettings.SortContainers) - containers = Shared.Models.Stateless.Methods.IContainer.SortContainers(configuration, appSettings.IgnoreRelativePaths, argZeroIsConfigurationRootDirectory, argZero, containers); + containers = Shared.Models.Stateless.Methods.IContainer.SortContainers(argZeroIsConfigurationRootDirectory, argZero, containers); return containers; } diff --git a/Duplicate-Search/Models/AppSettings.cs b/Duplicate-Search/Models/AppSettings.cs index 382773f..2ffb756 100644 --- a/Duplicate-Search/Models/AppSettings.cs +++ b/Duplicate-Search/Models/AppSettings.cs @@ -8,7 +8,6 @@ public class AppSettings public string Company { init; get; } public bool IndexOnly { init; get; } - public string[] IgnoreRelativePaths { init; get; } public int MaxDegreeOfParallelism { init; get; } public string OutputExtension { init; get; } public bool SortContainers { init; get; } @@ -16,11 +15,10 @@ public class AppSettings public string WorkingDirectoryName { init; get; } [JsonConstructor] - public AppSettings(string company, bool indexOnly, string[] ignoreRelativePaths, int maxDegreeOfParallelism, string outputExtension, bool sortContainers, bool reverse, string workingDirectoryName) + public AppSettings(string company, bool indexOnly, int maxDegreeOfParallelism, string outputExtension, bool sortContainers, bool reverse, string workingDirectoryName) { Company = company; IndexOnly = indexOnly; - IgnoreRelativePaths = ignoreRelativePaths; MaxDegreeOfParallelism = maxDegreeOfParallelism; OutputExtension = outputExtension; SortContainers = sortContainers; diff --git a/Duplicate-Search/Models/Binder/AppSettings.cs b/Duplicate-Search/Models/Binder/AppSettings.cs index a3d8f6b..fe1d2b9 100644 --- a/Duplicate-Search/Models/Binder/AppSettings.cs +++ b/Duplicate-Search/Models/Binder/AppSettings.cs @@ -10,7 +10,6 @@ public class AppSettings public string Company { get; set; } public bool? IndexOnly { get; set; } - public string[] IgnoreRelativePaths { get; set; } public int? MaxDegreeOfParallelism { get; set; } public string OutputExtension { get; set; } public bool? SortContainers { get; set; } @@ -30,8 +29,6 @@ public class AppSettings Models.AppSettings result; if (appSettings?.IndexOnly is null) throw new NullReferenceException(nameof(appSettings.IndexOnly)); - if (appSettings?.IgnoreRelativePaths is null) - throw new NullReferenceException(nameof(appSettings.IgnoreRelativePaths)); if (appSettings?.MaxDegreeOfParallelism is null) throw new NullReferenceException(nameof(appSettings.MaxDegreeOfParallelism)); if (appSettings?.SortContainers is null) @@ -41,7 +38,6 @@ public class AppSettings result = new( appSettings.Company, appSettings.IndexOnly.Value, - appSettings.IgnoreRelativePaths, appSettings.MaxDegreeOfParallelism.Value, appSettings.OutputExtension, appSettings.SortContainers.Value, diff --git a/Instance/DlibDotNet.cs b/Instance/DlibDotNet.cs index a83eb97..62e900c 100644 --- a/Instance/DlibDotNet.cs +++ b/Instance/DlibDotNet.cs @@ -289,7 +289,7 @@ public partial class DlibDotNet return result; } - private int GetNotMappedCountAndSetMapping(MapLogic mapLogic, Item item, bool? isFocusRelativePath, bool? isIgnoreRelativePath, ReadOnlyCollection> locationContainers, MappingFromItem mappingFromItem, List? mappingFromPhotoPrismCollection, List faces) + private int GetNotMappedCountAndSetMapping(MapLogic mapLogic, Item item, bool? isFocusRelativePath, ReadOnlyCollection> locationContainers, MappingFromItem mappingFromItem, List? mappingFromPhotoPrismCollection, List faces) { int result; double? α; @@ -319,7 +319,7 @@ public partial class DlibDotNet isFocusPerson = null; inSkipCollection = null; mappingFromLocation = null; - mappingFromFilter = new(isFocusModel, isFocusPerson, isFocusRelativePath, isIgnoreRelativePath, inSkipCollection, isUsed); + mappingFromFilter = new(isFocusModel, isFocusPerson, isFocusRelativePath, inSkipCollection, isUsed); } else { @@ -338,7 +338,7 @@ public partial class DlibDotNet isUsed = mapLogic.IsUsed(ignoreXMatches, item.Property.Id.Value, wholePercentagesToPersonContainers, mappingFromLocation); inSkipCollection = mapLogic.InSkipCollection(item.Property.Id.Value, mappingFromLocation); isFocusPerson = mapLogic.IsFocusPerson(_Configuration.SkipPersonWithMoreThen, _JLinkResolvedDirectories, wholePercentagesToPersonContainers, mappingFromLocation); - mappingFromFilter = new(isFocusModel, isFocusPerson, isFocusRelativePath, isIgnoreRelativePath, inSkipCollection, isUsed); + mappingFromFilter = new(isFocusModel, isFocusPerson, isFocusRelativePath, inSkipCollection, isUsed); } mapping = new(mappingFromItem, mappingFromFilter, mappingFromLocation, mappingFromPhotoPrismCollection); notMapped += mapLogic.UpdateMappingFromPerson(locationContainersFiles, wholePercentagesToPersonContainers, mapping); @@ -348,7 +348,7 @@ public partial class DlibDotNet return result; } - private (Mapping, int) GetMapping(MapLogic mapLogic, ReadOnlyCollection? locationContainersFiles, Item item, bool? isFocusRelativePath, bool? isIgnoreRelativePath, MappingFromItem mappingFromItem) + private (Mapping, int) GetMapping(MapLogic mapLogic, ReadOnlyCollection? locationContainersFiles, Item item, bool? isFocusRelativePath, MappingFromItem mappingFromItem) { Mapping result; bool? isUsed; @@ -371,7 +371,7 @@ public partial class DlibDotNet isFocusPerson = null; inSkipCollection = null; mappingFromLocation = null; - mappingFromFilter = new(isFocusModel, isFocusPerson, isFocusRelativePath, isIgnoreRelativePath, inSkipCollection, isUsed); + mappingFromFilter = new(isFocusModel, isFocusPerson, isFocusRelativePath, inSkipCollection, isUsed); } else { @@ -381,7 +381,7 @@ public partial class DlibDotNet isUsed = mapLogic.IsUsed(ignoreXMatches, item.Property.Id.Value, wholePercentagesToPersonContainers, mappingFromLocation); inSkipCollection = mapLogic.InSkipCollection(item.Property.Id.Value, mappingFromLocation); isFocusPerson = mapLogic.IsFocusPerson(_Configuration.SkipPersonWithMoreThen, _JLinkResolvedDirectories, wholePercentagesToPersonContainers, mappingFromLocation); - mappingFromFilter = new(isFocusModel, isFocusPerson, isFocusRelativePath, isIgnoreRelativePath, inSkipCollection, isUsed); + mappingFromFilter = new(isFocusModel, isFocusPerson, isFocusRelativePath, inSkipCollection, isUsed); } result = new(mappingFromItem, mappingFromFilter, mappingFromLocation, mappingFromPhotoPrismCollection: null); int notMapped = mapLogic.UpdateMappingFromPerson(locationContainersFiles, wholePercentagesToPersonContainers, result); @@ -425,7 +425,6 @@ public partial class DlibDotNet Item item, DateTime[] containerDateTimes, bool? isFocusRelativePath, - bool? isIgnoreRelativePath, string facePartsCollectionDirectory) { int result = 0; @@ -505,7 +504,7 @@ public partial class DlibDotNet faces = _Faces.GetFaces(outputResolution, dResultsFullGroupDirectory, subFileTuples, parseExceptions, property, mappingFromItem, outputResolutionToResize, locationContainers, mappingFromPhotoPrismCollection); if (_AppSettings.MaxDegreeOfParallelism < 2) ticks = LogDelta(ticks, nameof(D_Face.GetFaces)); - result = GetNotMappedCountAndSetMapping(mapLogic, item, isFocusRelativePath, isIgnoreRelativePath, locationContainers, mappingFromItem, mappingFromPhotoPrismCollection, faces); + result = GetNotMappedCountAndSetMapping(mapLogic, item, isFocusRelativePath, locationContainers, mappingFromItem, mappingFromPhotoPrismCollection, faces); List<(Shared.Models.Face, FileInfo?, string, bool Saved)> faceCollection = _Faces.SaveFaces(_FaceParts.FileNameExtension, dResultsFullGroupDirectory, subFileTuples, parseExceptions, mappingFromItem, faces); if (_Configuration.CopyFacesAndSaveFaceLandmarkForOutputResolutions.Contains(outputResolution)) _FaceParts.CopyFacesAndSaveFaceLandmarkImage(facePartsCollectionDirectory, mappingFromItem, faceCollection); @@ -559,29 +558,27 @@ public partial class DlibDotNet string focusRelativePath = Path.GetFullPath(string.Concat(_Configuration.PropertyConfiguration.RootDirectory, _Configuration.FocusDirectory)); bool? isFocusRelativePath = string.IsNullOrEmpty(_Configuration.FocusDirectory) ? null : container.SourceDirectory.StartsWith(focusRelativePath); string facePartsCollectionDirectory = _Configuration.CopyFacesAndSaveFaceLandmarkForOutputResolutions.Contains(outputResolution) ? _FaceParts.GetFacePartsDirectory(_Configuration.PropertyConfiguration, d2ResultsFullGroupDirectory, item: filteredItems.First(), includeNameWithoutExtension: false) : string.Empty; - bool? isIgnoreRelativePath = _Configuration.IgnoreRelativePaths.Length == 0 ? null : _Configuration.IgnoreRelativePaths.Any(l => container.SourceDirectory.Contains(l)) && Shared.Models.Stateless.Methods.IContainer.IsIgnoreRelativePath(_Configuration.PropertyConfiguration, _Configuration.IgnoreRelativePaths, container.SourceDirectory); using ProgressBar progressBar = new(filteredItems.Length, message, options); _ = Parallel.For(0, filteredItems.Length, parallelOptions, (i, state) => { try { result += FullParallelForWork(propertyLogic, - metadata, - mapLogic, - outputResolution, - outputResolutionHasNumber, - cResultsFullGroupDirectory, - dResultsFullGroupDirectory, - d2ResultsFullGroupDirectory, - sourceDirectoryChanges, - fileNameToCollection, - container, - index: i, - filteredItems[i], - containerDateTimes, - isFocusRelativePath, - isIgnoreRelativePath, - facePartsCollectionDirectory); + metadata, + mapLogic, + outputResolution, + outputResolutionHasNumber, + cResultsFullGroupDirectory, + dResultsFullGroupDirectory, + d2ResultsFullGroupDirectory, + sourceDirectoryChanges, + fileNameToCollection, + container, + index: i, + filteredItems[i], + containerDateTimes, + isFocusRelativePath, + facePartsCollectionDirectory); if (i == 0 || sourceDirectoryChanges.Count > 0) progressBar.Tick(); } @@ -908,7 +905,6 @@ public partial class DlibDotNet bool anyValidFaces; string focusRelativePath; bool? isFocusRelativePath; - bool? isIgnoreRelativePath; List distinct = new(); DateTime[] containerDateTimes; IEnumerable filteredItems; @@ -925,7 +921,6 @@ public partial class DlibDotNet containerDateTimes = Shared.Models.Stateless.Methods.IContainer.GetContainerDateTimes(filteredItems); focusRelativePath = Path.GetFullPath(string.Concat(_Configuration.PropertyConfiguration.RootDirectory, _Configuration.FocusDirectory)); isFocusRelativePath = string.IsNullOrEmpty(_Configuration.FocusDirectory) ? null : container.SourceDirectory.StartsWith(focusRelativePath); - isIgnoreRelativePath = _Configuration.IgnoreRelativePaths.Length == 0 ? null : _Configuration.IgnoreRelativePaths.Any(l => container.SourceDirectory.Contains(l)) && Shared.Models.Stateless.Methods.IContainer.IsIgnoreRelativePath(_Configuration.PropertyConfiguration, _Configuration.IgnoreRelativePaths, container.SourceDirectory); foreach (Item item in filteredItems) { if (item.Property?.Id is null || item.ResizedFileHolder is null) @@ -952,7 +947,7 @@ public partial class DlibDotNet } if (!anyValidFaces) { - (mapping, notMapped) = GetMapping(mapLogic, locationContainersFiles, item, isFocusRelativePath, isIgnoreRelativePath, mappingFromItem); + (mapping, notMapped) = GetMapping(mapLogic, locationContainersFiles, item, isFocusRelativePath, mappingFromItem); mappingCollection.Add(mapping); } } @@ -1199,7 +1194,7 @@ public partial class DlibDotNet fileNameToCollection = !Directory.Exists(fPhotoPrismSingletonDirectory) ? fileNameToCollection = new() : F_PhotoPrism.GetFileNameToCollection(fPhotoPrismSingletonDirectory); B_Metadata metadata = new(_Configuration.PropertyConfiguration, _Configuration.ForceMetadataLastWriteTimeToCreationTime, _Configuration.PropertiesChangedForMetadata, bResultsFullGroupDirectory); mapLogic ??= new(_AppSettings.MaxDegreeOfParallelism, _Configuration.PropertyConfiguration, _MapConfiguration, _Distance, personContainers, ticks, a2PeopleSingletonDirectory, eDistanceContentDirectory); - containers = Shared.Models.Stateless.Methods.IContainer.SortContainers(_Configuration.PropertyConfiguration, _Configuration.IgnoreRelativePaths, _ArgZeroIsConfigurationRootDirectory, argZero, containers); + containers = Shared.Models.Stateless.Methods.IContainer.SortContainers(_ArgZeroIsConfigurationRootDirectory, argZero, containers); FullDoWork(argZero, propertyRoot, ticks, aResultsFullGroupDirectory, bResultsFullGroupDirectory, t, containers, propertyLogic, metadata, fileNameToCollection, mapLogic); ReadOnlyCollection distinctFilteredItems = Shared.Models.Stateless.Methods.IContainer.GetItems(_Configuration.PropertyConfiguration, new(containers), distinctItems: true, filterItems: true); if (_Configuration.LookForAbandoned) diff --git a/Instance/Models/Binder/Configuration.cs b/Instance/Models/Binder/Configuration.cs index e3817a1..fff91b5 100644 --- a/Instance/Models/Binder/Configuration.cs +++ b/Instance/Models/Binder/Configuration.cs @@ -31,7 +31,6 @@ public class Configuration [Display(Name = "Force Resize Last Write Time to Creation Time"), Required] public bool? ForceResizeLastWriteTimeToCreationTime { get; set; } [Display(Name = "GenealogicalDataCommunication File"), Required] public string GenealogicalDataCommunicationFile { get; set; } [Display(Name = "Ignore Extensions"), Required] public string[] IgnoreExtensions { get; set; } - [Display(Name = "Ignore Relative Paths"), Required] public string[] IgnoreRelativePaths { get; set; } [Display(Name = "Julie Phares Copy Birthdays"), Required] public string[] JLinks { get; set; } [Display(Name = "Load Or Create Then Save Distance Results"), Required] public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { get; set; } [Display(Name = "Load Or Create Then Save Image Faces Results"), Required] public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { get; set; } @@ -149,7 +148,6 @@ public class Configuration throw new NullReferenceException(nameof(configuration.GenealogicalDataCommunicationFile)); if (configuration.IgnoreExtensions is null) throw new NullReferenceException(nameof(configuration.IgnoreExtensions)); - configuration.IgnoreRelativePaths ??= Array.Empty(); configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions ??= Array.Empty(); configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions ??= Array.Empty(); if (configuration.LoadPhotoPrismLocations is null) @@ -268,7 +266,6 @@ public class Configuration configuration.ForceResizeLastWriteTimeToCreationTime.Value, configuration.GenealogicalDataCommunicationFile, configuration.IgnoreExtensions, - configuration.IgnoreRelativePaths, configuration.JLinks, configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions, configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions, diff --git a/Instance/Models/Configuration.cs b/Instance/Models/Configuration.cs index 9732904..5760268 100644 --- a/Instance/Models/Configuration.cs +++ b/Instance/Models/Configuration.cs @@ -30,7 +30,6 @@ public class Configuration public bool ForceResizeLastWriteTimeToCreationTime { init; get; } public string GenealogicalDataCommunicationFile { init; get; } public string[] IgnoreExtensions { init; get; } - public string[] IgnoreRelativePaths { init; get; } public string[] JLinks { init; get; } public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { init; get; } public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { init; get; } @@ -115,7 +114,6 @@ public class Configuration bool forceResizeLastWriteTimeToCreationTime, string genealogicalDataCommunicationFile, string[] ignoreExtensions, - string[] ignoreRelativePaths, string[] jLinks, string[] loadOrCreateThenSaveDistanceResultsForOutputResolutions, string[] loadOrCreateThenSaveImageFacesResultsForOutputResolutions, @@ -198,7 +196,6 @@ public class Configuration ForceResizeLastWriteTimeToCreationTime = forceResizeLastWriteTimeToCreationTime; GenealogicalDataCommunicationFile = genealogicalDataCommunicationFile; IgnoreExtensions = ignoreExtensions; - IgnoreRelativePaths = ignoreRelativePaths; JLinks = jLinks; LoadOrCreateThenSaveDistanceResultsForOutputResolutions = loadOrCreateThenSaveDistanceResultsForOutputResolutions; LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = loadOrCreateThenSaveImageFacesResultsForOutputResolutions; diff --git a/Instance/Models/_F_Random.cs b/Instance/Models/_F_Random.cs index 9b64837..ff77d28 100644 --- a/Instance/Models/_F_Random.cs +++ b/Instance/Models/_F_Random.cs @@ -81,8 +81,6 @@ internal class F_Random continue; if (mapping.MappingFromItem.ImageFileHolder.DirectoryName is null) continue; - if (mapping.MappingFromFilter.IsIgnoreRelativePath is not null && mapping.MappingFromFilter.IsIgnoreRelativePath.Value) - continue; relativePaths.Add(mapping.MappingFromItem.RelativePath); distinctCollection.Add(mapping.MappingFromItem.Id); } diff --git a/Property/Models/Stateless/Property.cs b/Property/Models/Stateless/Property.cs index d5f9ec6..de4c435 100644 --- a/Property/Models/Stateless/Property.cs +++ b/Property/Models/Stateless/Property.cs @@ -213,6 +213,7 @@ internal class Property string? model = null; DateTime?[] dateTimes; string dateTimeFormat; + string[]? tags = null; DateTime checkDateTime; DateTime? dateTime = null; PropertyItem? propertyItem; @@ -334,6 +335,17 @@ internal class Property orientation = value; } } + if (image.PropertyIdList.Contains((int)IExif.Tags.XPKeywords)) + { + propertyItem = image.GetPropertyItem((int)IExif.Tags.XPKeywords); + if (propertyItem?.Value is not null) + { + if (propertyItem.Type == 2) + tags = asciiEncoding.GetString(propertyItem.Value).Trim('\0', ' ').Split(';'); + else if (propertyItem.Type == 1) + tags = Encoding.Unicode.GetString(propertyItem.Value).Trim('\0', ' ').Split(';'); + } + } message = null; dateTimes = new DateTime?[] { fileHolder.LastWriteTime, fileHolder.CreationTime, dateTime, dateTimeDigitized, dateTimeOriginal, gpsDateStamp }; } @@ -369,9 +381,9 @@ internal class Property if (fileHolder.LastWriteTime is null && property?.LastWriteTime is null) throw new NullReferenceException(nameof(fileHolder.LastWriteTime)); if (fileHolder.CreationTime is not null && fileHolder.LastWriteTime is not null) - result = new(fileHolder.CreationTime.Value, dateTime, dateTimeDigitized, dateTimeFromName, dateTimeOriginalByLogic, fileLength, gpsDateStamp, height, id, fileHolder.LastWriteTime.Value, make, model, orientation, width); + result = new(fileHolder.CreationTime.Value, dateTime, dateTimeDigitized, dateTimeFromName, dateTimeOriginalByLogic, fileLength, gpsDateStamp, height, id, fileHolder.LastWriteTime.Value, make, model, orientation, tags, width); else if (property is not null) - result = new(property.CreationTime, dateTime, dateTimeDigitized, dateTimeFromName, dateTimeOriginalByLogic, fileLength, gpsDateStamp, height, id, property.LastWriteTime, make, model, orientation, width); + result = new(property.CreationTime, dateTime, dateTimeDigitized, dateTimeFromName, dateTimeOriginalByLogic, fileLength, gpsDateStamp, height, id, property.LastWriteTime, make, model, orientation, tags, width); else throw new NullReferenceException(nameof(property)); return (message, dateTimesByLogic.ToArray(), result); diff --git a/Shared/Models/MappingFromFilter.cs b/Shared/Models/MappingFromFilter.cs index 8556817..7acf4f3 100644 --- a/Shared/Models/MappingFromFilter.cs +++ b/Shared/Models/MappingFromFilter.cs @@ -9,17 +9,15 @@ public class MappingFromFilter : Properties.IMappingFromFilter public bool? IsFocusModel { init; get; } public bool? IsFocusPerson { init; get; } public bool? IsFocusRelativePath { init; get; } - public bool? IsIgnoreRelativePath { init; get; } public bool? InSkipCollection { init; get; } public bool? IsUsed { init; get; } [JsonConstructor] - public MappingFromFilter(bool? isFocusModel, bool? isFocusPerson, bool? isFocusRelativePath, bool? isIgnoreRelativePath, bool? inSkipCollection, bool? isUsed) + public MappingFromFilter(bool? isFocusModel, bool? isFocusPerson, bool? isFocusRelativePath, bool? inSkipCollection, bool? isUsed) { IsFocusModel = isFocusModel; IsFocusPerson = isFocusPerson; IsFocusRelativePath = isFocusRelativePath; - IsIgnoreRelativePath = isIgnoreRelativePath; InSkipCollection = inSkipCollection; IsUsed = isUsed; } diff --git a/Shared/Models/Properties/IMappingFromFilter.cs b/Shared/Models/Properties/IMappingFromFilter.cs index fbfb4f3..2a6ab3b 100644 --- a/Shared/Models/Properties/IMappingFromFilter.cs +++ b/Shared/Models/Properties/IMappingFromFilter.cs @@ -6,7 +6,6 @@ public interface IMappingFromFilter public bool? IsFocusModel { init; get; } public bool? IsFocusPerson { init; get; } public bool? IsFocusRelativePath { init; get; } - public bool? IsIgnoreRelativePath { init; get; } public bool? InSkipCollection { init; get; } public bool? IsUsed { init; get; } diff --git a/Shared/Models/Properties/IProperty.cs b/Shared/Models/Properties/IProperty.cs deleted file mode 100644 index f1454da..0000000 --- a/Shared/Models/Properties/IProperty.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace View_by_Distance.Shared.Models.Properties; - -public interface IProperty -{ - - public DateTime CreationTime { init; get; } - public DateTime? DateTime { init; get; } - public DateTime? DateTimeDigitized { init; get; } - public DateTime? DateTimeFromName { init; get; } - public DateTime? DateTimeOriginal { init; get; } - public long FileSize { init; get; } - public DateTime? GPSDateStamp { init; get; } - public int? Height { init; get; } - public int? Id { init; get; } - public DateTime LastWriteTime { init; get; } - public string? Make { init; get; } - public string? Model { init; get; } - public string? Orientation { init; get; } - public int? Width { init; get; } - -} \ No newline at end of file diff --git a/Shared/Models/Property.cs b/Shared/Models/Property.cs index c8bec8a..e5a5c65 100644 --- a/Shared/Models/Property.cs +++ b/Shared/Models/Property.cs @@ -3,49 +3,35 @@ using System.Text.Json.Serialization; namespace View_by_Distance.Shared.Models; -public class Property : Properties.IProperty +public record Property(DateTime CreationTime, + DateTime? DateTime, + DateTime? DateTimeDigitized, + DateTime? DateTimeFromName, + DateTime? DateTimeOriginal, + long FileSize, + DateTime? GPSDateStamp, + int? Height, + int? Id, + DateTime LastWriteTime, + string? Make, + string? Model, + string? Orientation, + string[]? Tags, + int? Width) { - public DateTime CreationTime { init; get; } - public DateTime? DateTime { init; get; } - public DateTime? DateTimeDigitized { init; get; } - public DateTime? DateTimeFromName { init; get; } - public DateTime? DateTimeOriginal { init; get; } - public long FileSize { init; get; } - public DateTime? GPSDateStamp { init; get; } - public int? Height { init; get; } - public int? Id { init; get; } - public DateTime LastWriteTime { init; get; } - public string? Make { init; get; } - public string? Model { init; get; } - public string? Orientation { init; get; } - public int? Width { init; get; } - - [JsonConstructor] - public Property(DateTime creationTime, DateTime? dateTime, DateTime? dateTimeDigitized, DateTime? dateTimeFromName, DateTime? dateTimeOriginal, long fileSize, DateTime? gpsDateStamp, int? height, int? id, DateTime lastWriteTime, string? make, string? model, string? orientation, int? width) - { - DateTimeFromName = dateTimeFromName; - CreationTime = creationTime; - DateTime = dateTime; - DateTimeDigitized = dateTimeDigitized; - DateTimeOriginal = dateTimeOriginal; - FileSize = fileSize; - GPSDateStamp = gpsDateStamp; - Height = height; - Id = id; - LastWriteTime = lastWriteTime; - Make = make; - Model = model; - Orientation = orientation; - Width = width; - } - public override string ToString() { - string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true }); + string result = JsonSerializer.Serialize(this, AppSettingsSourceGenerationContext.Default.Property); return result; - } // ... - + } + public List GetDateTimes() => Stateless.Methods.Property.GetDateTimes(CreationTime, LastWriteTime, DateTime, DateTimeDigitized, DateTimeFromName, DateTimeOriginal, GPSDateStamp); +} + +[JsonSourceGenerationOptions(WriteIndented = true)] +[JsonSerializable(typeof(Property))] +internal partial class AppSettingsSourceGenerationContext : JsonSerializerContext +{ } \ No newline at end of file diff --git a/Shared/Models/Stateless/Methods/Container.cs b/Shared/Models/Stateless/Methods/Container.cs index c358675..57577d4 100644 --- a/Shared/Models/Stateless/Methods/Container.cs +++ b/Shared/Models/Stateless/Methods/Container.cs @@ -38,28 +38,9 @@ internal abstract class Container return results.ToArray(); } - internal static bool IsIgnoreRelativePath(Properties.IPropertyConfiguration propertyConfiguration, string[] ignoreRelativePaths, string directory) - { - bool result = false; - string? checkDirectory = Path.GetFullPath(directory); - for (int i = 0; i < int.MaxValue; i++) - { - if (ignoreRelativePaths.Contains(Path.GetFileName(checkDirectory))) - { - result = true; - break; - } - checkDirectory = Path.GetDirectoryName(checkDirectory); - if (string.IsNullOrEmpty(checkDirectory) || checkDirectory == propertyConfiguration.RootDirectory) - break; - } - return result; - } - - internal static Models.Container[] SortContainers(Properties.IPropertyConfiguration propertyConfiguration, string[] ignoreRelativePaths, bool argZeroIsConfigurationRootDirectory, string argZero, Models.Container[] containers) + internal static Models.Container[] SortContainers(bool argZeroIsConfigurationRootDirectory, string argZero, Models.Container[] containers) { List results = new(); - bool isIgnoreRelativePath; for (int i = 1; i < 3; i++) { foreach (Models.Container container in containers) @@ -68,11 +49,6 @@ internal abstract class Container continue; if (!argZeroIsConfigurationRootDirectory && !container.SourceDirectory.StartsWith(argZero)) continue; - isIgnoreRelativePath = ignoreRelativePaths.Any(l => container.SourceDirectory.Contains(l)) && IsIgnoreRelativePath(propertyConfiguration, ignoreRelativePaths, container.SourceDirectory); - if (i == 1 && isIgnoreRelativePath) - continue; - if (i == 2 && !isIgnoreRelativePath) - continue; results.Add(container); } } diff --git a/Shared/Models/Stateless/Methods/IContainer.cs b/Shared/Models/Stateless/Methods/IContainer.cs index da6ffe3..095d5d0 100644 --- a/Shared/Models/Stateless/Methods/IContainer.cs +++ b/Shared/Models/Stateless/Methods/IContainer.cs @@ -15,15 +15,10 @@ public interface IContainer static Models.Item[] GetFilterItems(Properties.IPropertyConfiguration propertyConfiguration, Models.Container container) => Container.GetFilterItems(propertyConfiguration, container); - bool TestStatic_IsIgnoreRelativePath(Properties.IPropertyConfiguration propertyConfiguration, string[] ignoreRelativePaths, string directory) => - IsIgnoreRelativePath(propertyConfiguration, ignoreRelativePaths, directory); - static bool IsIgnoreRelativePath(Properties.IPropertyConfiguration propertyConfiguration, string[] ignoreRelativePaths, string directory) => - Container.IsIgnoreRelativePath(propertyConfiguration, ignoreRelativePaths, directory); - - Models.Container[] TestStatic_SortContainers(Properties.IPropertyConfiguration propertyConfiguration, string[] ignoreRelativePaths, bool argZeroIsConfigurationRootDirectory, string argZero, Models.Container[] containers) => - SortContainers(propertyConfiguration, ignoreRelativePaths, argZeroIsConfigurationRootDirectory, argZero, containers); - static Models.Container[] SortContainers(Properties.IPropertyConfiguration propertyConfiguration, string[] ignoreRelativePaths, bool argZeroIsConfigurationRootDirectory, string argZero, Models.Container[] containers) => - Container.SortContainers(propertyConfiguration, ignoreRelativePaths, argZeroIsConfigurationRootDirectory, argZero, containers); + Models.Container[] TestStatic_SortContainers(bool argZeroIsConfigurationRootDirectory, string argZero, Models.Container[] containers) => + SortContainers(argZeroIsConfigurationRootDirectory, argZero, containers); + static Models.Container[] SortContainers(bool argZeroIsConfigurationRootDirectory, string argZero, Models.Container[] containers) => + Container.SortContainers(argZeroIsConfigurationRootDirectory, argZero, containers); List TestStatic_GetFilePairs(Properties.IPropertyConfiguration propertyConfiguration, string directorySearchFilter, string extension, string aPropertySingletonDirectory, List filesCollection) => Container.GetFilePairs(propertyConfiguration, directorySearchFilter, extension, aPropertySingletonDirectory, filesCollection); diff --git a/Tests/Models/Binder/Configuration.cs b/Tests/Models/Binder/Configuration.cs index 2885d21..4df67a9 100644 --- a/Tests/Models/Binder/Configuration.cs +++ b/Tests/Models/Binder/Configuration.cs @@ -18,7 +18,6 @@ public class Configuration [Display(Name = "Force Metadata Last Write Time to Creation Time"), Required] public bool? ForceMetadataLastWriteTimeToCreationTime { get; set; } [Display(Name = "Force Resize Last Write Time to Creation Time"), Required] public bool? ForceResizeLastWriteTimeToCreationTime { get; set; } [Display(Name = "Ignore Extensions"), Required] public string[] IgnoreExtensions { get; set; } - [Display(Name = "Ignore Relative Paths"), Required] public string[] IgnoreRelativePaths { get; set; } [Display(Name = "Julie Phares Copy Birthdays"), Required] public string[] JLinks { get; set; } [Display(Name = "Load Or GetPersonName Then Save Distance Results"), Required] public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { get; set; } [Display(Name = "Load Or GetPersonName Then Save Image Faces Results"), Required] public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { get; set; } @@ -79,8 +78,6 @@ public class Configuration throw new NullReferenceException(nameof(configuration.ForceResizeLastWriteTimeToCreationTime)); if (configuration.IgnoreExtensions is null) throw new NullReferenceException(nameof(configuration.IgnoreExtensions)); - if (configuration.IgnoreRelativePaths is null) - throw new NullReferenceException(nameof(configuration.IgnoreRelativePaths)); configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions ??= Array.Empty(); configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions ??= Array.Empty(); if (configuration.MixedYearRelativePaths is null) @@ -133,7 +130,6 @@ public class Configuration configuration.ForceMetadataLastWriteTimeToCreationTime.Value, configuration.ForceResizeLastWriteTimeToCreationTime.Value, configuration.IgnoreExtensions, - configuration.IgnoreRelativePaths, configuration.JLinks, configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions, configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions, diff --git a/Tests/Models/Configuration.cs b/Tests/Models/Configuration.cs index fb12ee7..773c990 100644 --- a/Tests/Models/Configuration.cs +++ b/Tests/Models/Configuration.cs @@ -17,7 +17,6 @@ public class Configuration public bool ForceMetadataLastWriteTimeToCreationTime { init; get; } public bool ForceResizeLastWriteTimeToCreationTime { init; get; } public string[] IgnoreExtensions { init; get; } - public string[] IgnoreRelativePaths { init; get; } public string[] JLinks { init; get; } public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { init; get; } public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { init; get; } @@ -58,7 +57,6 @@ public class Configuration bool forceMetadataLastWriteTimeToCreationTime, bool forceResizeLastWriteTimeToCreationTime, string[] ignoreExtensions, - string[] ignoreRelativePaths, string[] jLinks, string[] loadOrCreateThenSaveDistanceResultsForOutputResolutions, string[] loadOrCreateThenSaveImageFacesResultsForOutputResolutions, @@ -98,7 +96,6 @@ public class Configuration ForceMetadataLastWriteTimeToCreationTime = forceMetadataLastWriteTimeToCreationTime; ForceResizeLastWriteTimeToCreationTime = forceResizeLastWriteTimeToCreationTime; IgnoreExtensions = ignoreExtensions; - IgnoreRelativePaths = ignoreRelativePaths; JLinks = jLinks; LoadOrCreateThenSaveDistanceResultsForOutputResolutions = loadOrCreateThenSaveDistanceResultsForOutputResolutions; LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = loadOrCreateThenSaveImageFacesResultsForOutputResolutions; diff --git a/TestsWithFaceRecognitionDotNet/Models/Binder/Configuration.cs b/TestsWithFaceRecognitionDotNet/Models/Binder/Configuration.cs index 404540c..90321fd 100644 --- a/TestsWithFaceRecognitionDotNet/Models/Binder/Configuration.cs +++ b/TestsWithFaceRecognitionDotNet/Models/Binder/Configuration.cs @@ -24,7 +24,6 @@ public class Configuration [Display(Name = "Force Metadata Last Write Time to Creation Time"), Required] public bool? ForceMetadataLastWriteTimeToCreationTime { get; set; } [Display(Name = "Force Resize Last Write Time to Creation Time"), Required] public bool? ForceResizeLastWriteTimeToCreationTime { get; set; } [Display(Name = "Ignore Extensions"), Required] public string[] IgnoreExtensions { get; set; } - [Display(Name = "Ignore Relative Paths"), Required] public string[] IgnoreRelativePaths { get; set; } [Display(Name = "Julie Phares Copy Birthdays"), Required] public string[] JLinks { get; set; } [Display(Name = "Load Or GetPersonName Then Save Distance Results"), Required] public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { get; set; } [Display(Name = "Load Or GetPersonName Then Save Image Faces Results"), Required] public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { get; set; } @@ -112,8 +111,6 @@ public class Configuration throw new NullReferenceException(nameof(configuration.ForceResizeLastWriteTimeToCreationTime)); if (configuration.IgnoreExtensions is null) throw new NullReferenceException(nameof(configuration.IgnoreExtensions)); - if (configuration.IgnoreRelativePaths is null) - throw new NullReferenceException(nameof(configuration.IgnoreRelativePaths)); configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions ??= Array.Empty(); configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions ??= Array.Empty(); if (configuration.LocationDigits is null) @@ -203,7 +200,6 @@ public class Configuration configuration.ForceMetadataLastWriteTimeToCreationTime.Value, configuration.ForceResizeLastWriteTimeToCreationTime.Value, configuration.IgnoreExtensions, - configuration.IgnoreRelativePaths, configuration.JLinks, configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions, configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions, diff --git a/TestsWithFaceRecognitionDotNet/Models/Configuration.cs b/TestsWithFaceRecognitionDotNet/Models/Configuration.cs index 9f76d45..e9bef10 100644 --- a/TestsWithFaceRecognitionDotNet/Models/Configuration.cs +++ b/TestsWithFaceRecognitionDotNet/Models/Configuration.cs @@ -23,7 +23,6 @@ public class Configuration public bool ForceMetadataLastWriteTimeToCreationTime { init; get; } public bool ForceResizeLastWriteTimeToCreationTime { init; get; } public string[] IgnoreExtensions { init; get; } - public string[] IgnoreRelativePaths { init; get; } public string[] JLinks { init; get; } public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { init; get; } public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { init; get; } @@ -85,7 +84,6 @@ public class Configuration bool forceMetadataLastWriteTimeToCreationTime, bool forceResizeLastWriteTimeToCreationTime, string[] ignoreExtensions, - string[] ignoreRelativePaths, string[] jLinks, string[] loadOrCreateThenSaveDistanceResultsForOutputResolutions, string[] loadOrCreateThenSaveImageFacesResultsForOutputResolutions, @@ -146,7 +144,6 @@ public class Configuration ForceMetadataLastWriteTimeToCreationTime = forceMetadataLastWriteTimeToCreationTime; ForceResizeLastWriteTimeToCreationTime = forceResizeLastWriteTimeToCreationTime; IgnoreExtensions = ignoreExtensions; - IgnoreRelativePaths = ignoreRelativePaths; JLinks = jLinks; LoadOrCreateThenSaveDistanceResultsForOutputResolutions = loadOrCreateThenSaveDistanceResultsForOutputResolutions; LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = loadOrCreateThenSaveImageFacesResultsForOutputResolutions;