More strict birthday logic
This commit is contained in:
@ -132,8 +132,6 @@ internal abstract class MapLogic
|
||||
{
|
||||
personFirstInitial = personDisplayDirectoryNames[^1][..1];
|
||||
personFirstInitialDirectory = Path.Combine(yearDirectory, personFirstInitial.ToString());
|
||||
if (personNameDirectory != personFirstInitialDirectory)
|
||||
Directory.Move(personNameDirectory, personFirstInitialDirectory);
|
||||
}
|
||||
files = Directory.GetFiles(personFirstInitialDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
if (personKeyFormatted == nameof(IMapLogic.Sorting) && files.Any())
|
||||
@ -144,6 +142,11 @@ internal abstract class MapLogic
|
||||
throw new Exception($"Move personKey directories up one from {forceSingleImageHumanized} and delete {forceSingleImageHumanized} directory!");
|
||||
if (personKeyFormatted.Length != configuration.PersonBirthdayFormat.Length)
|
||||
continue;
|
||||
if (personNameDirectory != personFirstInitialDirectory && !Directory.Exists(personFirstInitialDirectory))
|
||||
{
|
||||
Directory.Move(personNameDirectory, personFirstInitialDirectory);
|
||||
files = Directory.GetFiles(personFirstInitialDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
}
|
||||
foreach (string file in files)
|
||||
{
|
||||
if (file.EndsWith(".lnk") || file.EndsWith(".json"))
|
||||
@ -194,17 +197,23 @@ internal abstract class MapLogic
|
||||
return results;
|
||||
}
|
||||
|
||||
internal static Dictionary<int, List<(string, int)>> DeleteEmptyDirectoriesAndGetMappedFaceFiles(Configuration configuration, string facesFileNameExtension, long ticks, string eDistanceContentDirectory, PersonContainer[] personContainers)
|
||||
internal static Dictionary<int, List<(string, int)>> DeleteEmptyDirectoriesAndGetMappedFaceFiles(Configuration configuration, string facesFileNameExtension, long ticks, string? a2PeopleContentDirectory, string? eDistanceContentDirectory, PersonContainer[] personContainers)
|
||||
{
|
||||
Dictionary<int, List<(string, int)>> results;
|
||||
string personKeyFormatted;
|
||||
List<(long? PersonKey, string Line)> lines = new();
|
||||
List<string> personKeyFormattedCollection = new();
|
||||
_ = GetDistinctCollection(configuration, personContainers.ToList(), new());
|
||||
int totalSeconds = (int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds);
|
||||
string[] ticksDirectories = Directory.GetDirectories(eDistanceContentDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
string[] ticksDirectories;
|
||||
if (string.IsNullOrEmpty(eDistanceContentDirectory))
|
||||
ticksDirectories = Array.Empty<string>();
|
||||
else
|
||||
ticksDirectories = Directory.GetDirectories(eDistanceContentDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
string message = $") {ticksDirectories.Length:000} collect from and clean ticks Director(ies) - A - {totalSeconds} total second(s)";
|
||||
foreach (PersonContainer personContainer in personContainers)
|
||||
{
|
||||
lines.AddRange(IPersonContainer.GetDisplay(configuration.PersonBirthdayFormat, personContainer));
|
||||
if (personContainer.Person is null || personContainer.Key is null || personContainer.Birthdays is null || !personContainer.Birthdays.Any())
|
||||
continue;
|
||||
foreach (PersonBirthday personBirthday in personContainer.Birthdays)
|
||||
@ -213,12 +222,9 @@ internal abstract class MapLogic
|
||||
personKeyFormattedCollection.Add(personKeyFormatted);
|
||||
}
|
||||
}
|
||||
List<(string, string[], string)> collection = DeleteEmptyDirectoriesAndGetCollection(
|
||||
configuration,
|
||||
facesFileNameExtension,
|
||||
personKeyFormattedCollection,
|
||||
ticksDirectories,
|
||||
message);
|
||||
if (!string.IsNullOrEmpty(a2PeopleContentDirectory))
|
||||
File.WriteAllLines(Path.Combine(a2PeopleContentDirectory, "People - C.tsv"), from l in lines orderby l.PersonKey is null select l.Line);
|
||||
List<(string, string[], string)> collection = DeleteEmptyDirectoriesAndGetCollection(configuration, facesFileNameExtension, personKeyFormattedCollection, ticksDirectories, message);
|
||||
results = GetIdToCollection(facesFileNameExtension, collection);
|
||||
return results;
|
||||
}
|
||||
@ -579,7 +585,7 @@ internal abstract class MapLogic
|
||||
}
|
||||
}
|
||||
|
||||
internal static void Set(Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, Configuration? configuration, string facesFileNameExtension, long ticks, List<PersonContainer> personContainers, string a2PeopleSingletonDirectory, string eDistanceContentDirectory, List<Face> distinctFilteredFaces, Shared.Models.Methods.IFaceDistance faceDistance, Dictionary<long, PersonContainer> personKeyToPersonContainer, Dictionary<long, (long LCL, long Minimum, long Maximum, long UCL)> personKeyToRanges, List<PersonContainer> notMappedPersonContainers, Dictionary<int, List<int>> skipCollection, Dictionary<int, Dictionary<int, PersonContainer[]>> idThenNormalizedPixelPercentageToPersonContainers)
|
||||
internal static void Set(Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, Configuration? configuration, string facesFileNameExtension, long ticks, List<PersonContainer> personContainers, string? a2PeopleContentDirectory, string eDistanceContentDirectory, List<Face> distinctFilteredFaces, Shared.Models.Methods.IFaceDistance faceDistance, Dictionary<long, PersonContainer> personKeyToPersonContainer, Dictionary<long, (long LCL, long Minimum, long Maximum, long UCL)> personKeyToRanges, List<PersonContainer> notMappedPersonContainers, Dictionary<int, List<int>> skipCollection, Dictionary<int, Dictionary<int, PersonContainer[]>> idThenNormalizedPixelPercentageToPersonContainers)
|
||||
{
|
||||
if (configuration is null)
|
||||
throw new NullReferenceException(nameof(configuration));
|
||||
@ -594,14 +600,7 @@ internal abstract class MapLogic
|
||||
List<(string, string[], int, int)> personKeyFormattedIdThenNormalizedPixelPercentageCollection = new();
|
||||
List<(string, int, int)> incorrectPersonKeyFormattedIdThenNormalizedPixelPercentageCollection = new();
|
||||
Dictionary<int, Dictionary<int, PersonContainer[]>> incorrectIdThenNormalizedPixelPercentageToPersonContainers = new();
|
||||
SetPersonCollections(
|
||||
configuration,
|
||||
facesFileNameExtension,
|
||||
personContainers,
|
||||
personKeys,
|
||||
personKeyFormattedToNewestPersonKeyFormatted,
|
||||
personKeyFormattedCollection,
|
||||
skipCollection);
|
||||
SetPersonCollections(configuration, facesFileNameExtension, personContainers, personKeys, personKeyFormattedToNewestPersonKeyFormatted, personKeyFormattedCollection, skipCollection);
|
||||
personContainers.AddRange(AddToPersonKeysThenGetNonSpecificPeopleCollection(configuration, personKeys));
|
||||
foreach (Face face in distinctFilteredFaces)
|
||||
{
|
||||
@ -616,32 +615,9 @@ internal abstract class MapLogic
|
||||
totalSeconds = (int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds);
|
||||
string[] ticksDirectories = Directory.GetDirectories(eDistanceContentDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
message = $") {ticksDirectories.Length:000} compile from and clean ticks Director(ies) - B - {totalSeconds} total second(s)";
|
||||
List<(string, string[], string)> collection = DeleteEmptyDirectoriesAndGetCollection(
|
||||
configuration,
|
||||
facesFileNameExtension,
|
||||
personKeyFormattedCollection,
|
||||
ticksDirectories,
|
||||
message);
|
||||
(int unableToMatchCount, int duplicateCount) = SetCollectionsAndGetUnableToMatchCount(
|
||||
facesFileNameExtension,
|
||||
ticks,
|
||||
keyValuePairs,
|
||||
personKeyFormattedToNewestPersonKeyFormatted,
|
||||
personKeyFormattedIdThenNormalizedPixelPercentageCollection,
|
||||
incorrectPersonKeyFormattedIdThenNormalizedPixelPercentageCollection,
|
||||
collection);
|
||||
SetKeyValuePairs(
|
||||
configuration,
|
||||
ticks,
|
||||
personContainers,
|
||||
distinctFilteredFaces,
|
||||
personKeyFormattedIdThenNormalizedPixelPercentageCollection,
|
||||
incorrectPersonKeyFormattedIdThenNormalizedPixelPercentageCollection,
|
||||
personKeyToPersonContainer,
|
||||
idThenNormalizedPixelPercentageToPersonContainers,
|
||||
possiblyNewPersonDisplayDirectoryNamesAndPersonContainer,
|
||||
incorrectIdThenNormalizedPixelPercentageToPersonContainers,
|
||||
personKeyToRanges);
|
||||
List<(string, string[], string)> collection = DeleteEmptyDirectoriesAndGetCollection(configuration, facesFileNameExtension, personKeyFormattedCollection, ticksDirectories, message);
|
||||
(int unableToMatchCount, int duplicateCount) = SetCollectionsAndGetUnableToMatchCount(facesFileNameExtension, ticks, keyValuePairs, personKeyFormattedToNewestPersonKeyFormatted, personKeyFormattedIdThenNormalizedPixelPercentageCollection, incorrectPersonKeyFormattedIdThenNormalizedPixelPercentageCollection, collection);
|
||||
SetKeyValuePairs(configuration, ticks, personContainers, distinctFilteredFaces, personKeyFormattedIdThenNormalizedPixelPercentageCollection, incorrectPersonKeyFormattedIdThenNormalizedPixelPercentageCollection, personKeyToPersonContainer, idThenNormalizedPixelPercentageToPersonContainers, possiblyNewPersonDisplayDirectoryNamesAndPersonContainer, incorrectIdThenNormalizedPixelPercentageToPersonContainers, personKeyToRanges);
|
||||
totalSeconds = (int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds);
|
||||
message = $") {collection.Count:000} message from ticks Director(ies) - D - {duplicateCount} Duplicate Count {unableToMatchCount} Unable To Match Count / {collection.Count} Collection - {totalSeconds} total second(s)";
|
||||
ProgressBarOptions options = new() { ProgressCharacter = '─', ProgressBarOnBottom = true, DisableBottomPercentage = true };
|
||||
@ -657,18 +633,9 @@ internal abstract class MapLogic
|
||||
long[] personKeyCollection = (from l in nullablePersonKeyCollection where l is not null select l.Value).Distinct().ToArray();
|
||||
SetPersonKeyToPersonContainer(configuration, personContainers, personKeyCollection, personKeyToPersonContainer);
|
||||
notMappedPersonContainers.AddRange(GetNotMappedPersonContainers(configuration, personContainers, personKeyCollection));
|
||||
AppendToSkipCollection(
|
||||
skipCollection,
|
||||
idThenNormalizedPixelPercentageToPersonContainers,
|
||||
incorrectIdThenNormalizedPixelPercentageToPersonContainers);
|
||||
AppendToSkipCollection(skipCollection, idThenNormalizedPixelPercentageToPersonContainers, incorrectIdThenNormalizedPixelPercentageToPersonContainers);
|
||||
if (possiblyNewPersonDisplayDirectoryNamesAndPersonContainer.Any())
|
||||
faceDistance.SavePossiblyNewPersonContainers(
|
||||
propertyConfiguration,
|
||||
configuration.PersonBirthdayFormat,
|
||||
facesFileNameExtension,
|
||||
a2PeopleSingletonDirectory,
|
||||
personKeyToPersonContainer,
|
||||
possiblyNewPersonDisplayDirectoryNamesAndPersonContainer);
|
||||
faceDistance.SavePossiblyNewPersonContainers(propertyConfiguration, configuration.PersonBirthdayFormat, facesFileNameExtension, a2PeopleContentDirectory, personKeyToPersonContainer, possiblyNewPersonDisplayDirectoryNamesAndPersonContainer);
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user