LookForMatchFacesAndPossiblyRename for A2 People

This commit is contained in:
2022-12-28 01:51:05 -07:00
parent facafec0e6
commit 3278256315
7 changed files with 142 additions and 93 deletions

View File

@ -29,7 +29,7 @@ internal abstract class MapLogic
continue;
personBirthday = IPersonBirthday.GetPersonBirthday(personKey);
person = IPerson.GetPerson(configuration.MappingDefaultName, personKey, personBirthday);
personContainer = new(approximateYears, person, new PersonBirthday[] { personBirthday }, personDisplayDirectoryAllFiles, configuration.MappingDefaultName, personKey, partialKeyFormatted: null);
personContainer = new(approximateYears, person, new PersonBirthday[] { personBirthday }, personDisplayDirectoryAllFiles, configuration.MappingDefaultName, personKey);
results.Add(personContainer);
}
return results;
@ -82,12 +82,12 @@ internal abstract class MapLogic
string[] files;
const int zero = 0;
string[] yearDirectories;
int? normalizedRectangle;
string personKeyFormatted;
string ticksDirectoryName;
string? personFirstInitial;
DirectoryInfo directoryInfo;
string[] personKeyDirectories;
int? normalizedRectangle;
string[] personNameDirectories;
string[] personNameLinkDirectories;
string? personFirstInitialDirectory;
@ -189,13 +189,29 @@ internal abstract class MapLogic
return results;
}
internal static List<(string, string[], string)> DeleteEmptyDirectoriesAndGetMappedFaceFiles(Configuration configuration, PersonContainer[] personContainers, long ticks, string? a2PeopleContentDirectory, string eDistanceContentDirectory)
private static List<string> GetPersonKeyFormattedCollection(Configuration configuration, PersonContainer[] personContainers, List<(long? PersonKey, string Line)> lines)
{
List<(string, string[], string)> results;
List<string> results = new();
string personKeyFormatted;
List<string> personKeyFormattedCollection = new();
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)
{
personKeyFormatted = IPersonBirthday.GetFormatted(configuration.PersonBirthdayFormat, personBirthday);
results.Add(personKeyFormatted);
}
}
return results;
}
internal static List<string> DeleteEmptyDirectoriesAndGetMappedFaceFiles(Configuration configuration, PersonContainer[] personContainers, long ticks, string? a2PeopleContentDirectory, string eDistanceContentDirectory)
{
List<string> results = new();
List<(long? PersonKey, string Line)> lines = new();
_ = GetDistinctCollection(configuration, personContainers.ToList(), new());
_ = GetDistinctCollection(configuration, personContainers, new());
int totalSeconds = (int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds);
string[] ticksDirectories;
if (string.IsNullOrEmpty(eDistanceContentDirectory))
@ -213,20 +229,12 @@ internal abstract class MapLogic
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)
{
personKeyFormatted = IPersonBirthday.GetFormatted(configuration.PersonBirthdayFormat, personBirthday);
personKeyFormattedCollection.Add(personKeyFormatted);
}
}
List<string> personKeyFormattedCollection = GetPersonKeyFormattedCollection(configuration, personContainers, lines);
if (!string.IsNullOrEmpty(a2PeopleContentDirectory))
File.WriteAllLines(Path.Combine(a2PeopleContentDirectory, "People - C.tsv"), from l in lines select l.Line);
results = DeleteEmptyDirectoriesAndGetCollection(configuration, personKeyFormattedCollection, ticksDirectories, message);
List<(string, string[], string)> collection = DeleteEmptyDirectoriesAndGetCollection(configuration, personKeyFormattedCollection, ticksDirectories, message);
foreach ((string personKeyFormatted, string[] personDisplayDirectoryNames, string mappedFaceFile) in collection)
results.Add(mappedFaceFile);
return results;
}
@ -322,7 +330,7 @@ internal abstract class MapLogic
}
}
private static List<(long, PersonContainer)> GetDistinctCollection(Configuration configuration, List<PersonContainer> personContainers, Dictionary<string, PersonContainer> personKeyFormattedToPersonContainer)
private static List<(long, PersonContainer)> GetDistinctCollection(Configuration configuration, IEnumerable<PersonContainer> personContainers, Dictionary<string, PersonContainer> personKeyFormattedToPersonContainer)
{
List<(long, PersonContainer)> results = new();
const int zero = 0;
@ -722,4 +730,19 @@ internal abstract class MapLogic
}
}
internal static List<string> GetDisplayDirectoryAllFiles(PersonContainer[] personContainers)
{
List<string> results = new();
foreach (PersonContainer personContainer in personContainers)
{
foreach (string displayDirectoryAllFile in personContainer.DisplayDirectoryAllFiles)
{
if (displayDirectoryAllFile.EndsWith(".json"))
continue;
results.Add(displayDirectoryAllFile);
}
}
return results;
}
}